home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Mint / mntlib25.zoo / sozobon / memcpy.c < prev    next >
C/C++ Source or Header  |  1992-02-12  |  585b  |  37 lines

  1. /* from Henry Spencer's stringlib */
  2.  
  3. #include <stddef.h>
  4. #include <string.h>
  5.  
  6. /*
  7.  * memcpy - copy bytes
  8.  */
  9.  
  10. void *
  11. memcpy(dst, src, size)
  12. void * dst;
  13. const void * src;
  14. size_t size;
  15. {
  16.     register char *d;
  17.     register const char *s;
  18.     register size_t n;
  19.  
  20.     if (size == 0)
  21.         return(dst);
  22.  
  23.     s = (const char *) src;
  24.     d = (char *) dst;
  25.     if (s <= d && s + (size-1) >= d) {
  26.         /* Overlap, must copy right-to-left. */
  27.         s += size-1;
  28.         d += size-1;
  29.         for (n = size; n > 0; n--)
  30.             *d-- = *s--;
  31.     } else
  32.         for (n = size; n > 0; n--)
  33.             *d++ = *s++;
  34.  
  35.     return(dst);
  36. }
  37.