home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / Python2 / Python20_source / Python / memmove.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-25  |  439 b   |  26 lines

  1.  
  2. /* A perhaps slow but I hope correct implementation of memmove */
  3.  
  4. extern char *memcpy(char *, char *, int);
  5.  
  6. char *
  7. memmove(char *dst, char *src, int n)
  8. {
  9.     char *realdst = dst;
  10.     if (n <= 0)
  11.         return dst;
  12.     if (src >= dst+n || dst >= src+n)
  13.         return memcpy(dst, src, n);
  14.     if (src > dst) {
  15.         while (--n >= 0)
  16.             *dst++ = *src++;
  17.     }
  18.     else if (src < dst) {
  19.         src += n;
  20.         dst += n;
  21.         while (--n >= 0)
  22.             *--dst = *--src;
  23.     }
  24.     return realdst;
  25. }
  26.