|
|
1.1 ! root 1: /* ! 2: * memmove.c ! 3: * ANSI 4.11.2.2. ! 4: * Copy memory. ! 5: * Works correctly between overlapping blocks, ! 6: * provided s1 < s2 assures object *s1 at lower address than *s2. ! 7: * This may not be the case in some machine models (e.g. LARGE i8086). ! 8: */ ! 9: ! 10: #include <string.h> ! 11: ! 12: char *memmove(s1, s2, n) char *s1; register char *s2; register size_t n; ! 13: { ! 14: register char *cp; ! 15: ! 16: if (s1 < s2) { ! 17: for (cp = s1; n--; ) ! 18: *cp++ = *s2++; ! 19: } ! 20: else if (s1 > s2) { ! 21: s2 += n; ! 22: for (cp = s1 + n; n--; ) ! 23: *--cp = *--s2; ! 24: } ! 25: return (s1); ! 26: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.