home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / news / cnews.tar / libfake / memcpy.c < prev    next >
C/C++ Source or Header  |  1989-05-27  |  430b  |  32 lines

  1. /*
  2.  * memcpy - copy bytes
  3.  */
  4.  
  5. char *
  6. memcpy(dst, src, size)
  7. char * dst;
  8.  char * src;
  9. int size;
  10. {
  11.     register char *d;
  12.     register  char *s;
  13.     register int n;
  14.  
  15.     if (size <= 0)
  16.         return(dst);
  17.  
  18.     s = src;
  19.     d = dst;
  20.     if (s <= d && s + (size-1) >= d) {
  21.         /* Overlap, must copy right-to-left. */
  22.         s += size-1;
  23.         d += size-1;
  24.         for (n = size; n > 0; n--)
  25.             *d-- = *s--;
  26.     } else
  27.         for (n = size; n > 0; n--)
  28.             *d++ = *s++;
  29.  
  30.     return(dst);
  31. }
  32.