|
|
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.