1 /* memmove.c -- copy memory.
   2    Copy LENGTH bytes from SOURCE to DEST.  Does not null-terminate.
   3    In the public domain.
   4    By David MacKenzie <djm@gnu.ai.mit.edu>.  */
   5 
   6 #include <config.h>
   7 
   8 #include <stddef.h>
   9 
  10 void *
  11 memmove (void *dest0, void const *source0, size_t length)
  12 {
  13   char *dest = dest0;
  14   char const *source = source0;
  15   if (source < dest)
  16     /* Moving from low mem to hi mem; start at end.  */
  17     for (source += length, dest += length; length; --length)
  18       *--dest = *--source;
  19   else if (source != dest)
  20     {
  21       /* Moving from hi mem to low mem; start at beginning.  */
  22       for (; length; --length)
  23         *dest++ = *source++;
  24     }
  25   return dest0;
  26 }