home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 109.lha / PD_C / lib / memcpy.c < prev    next >
Text File  |  1986-11-20  |  676b  |  32 lines

  1. /*
  2.  * memcpy - copy bytes
  3.  */
  4.  
  5. VOIDSTAR
  6. memcpy(dst, src, size)
  7. VOIDSTAR dst;
  8. CONST VOIDSTAR src;
  9. SIZET size;
  10. {
  11.          register char *d;
  12.          register CONST char *s;
  13.          register SIZET 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.