home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / txtut122.zip / textutil / lib / memmove.c < prev    next >
C/C++ Source or Header  |  1996-10-17  |  686b  |  29 lines

  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. #if HAVE_CONFIG_H
  7. # include <config.h>
  8. #endif
  9.  
  10. void *
  11. memmove (dest, source, length)
  12.      char *dest;
  13.      const char *source;
  14.      unsigned length;
  15. {
  16.   char *d0 = dest;
  17.   if (source < dest)
  18.     /* Moving from low mem to hi mem; start at end.  */
  19.     for (source += length, dest += length; length; --length)
  20.       *--dest = *--source;
  21.   else if (source != dest)
  22.     {
  23.       /* Moving from hi mem to low mem; start at beginning.  */
  24.       for (; length; --length)
  25.     *dest++ = *source++;
  26.     }
  27.   return (void *) d0;
  28. }
  29.