|
|
1.1 ! root 1: #include "u.h" ! 2: #include <sys/types.h> ! 3: #include <sys/stat.h> ! 4: #include "libc.h" ! 5: ! 6: /* ! 7: * Portable version for systems from the ancien regime ! 8: */ ! 9: ! 10: void* ! 11: memmove(void *a1, void *a2, Ulong n) ! 12: { ! 13: char *s1, *s2; ! 14: ! 15: if(a1 > a2) ! 16: goto back; ! 17: s1 = a1; ! 18: s2 = a2; ! 19: while(n > 0) { ! 20: *s1++ = *s2++; ! 21: n--; ! 22: } ! 23: return a1; ! 24: ! 25: back: ! 26: s1 = (char*)a1 + n; ! 27: s2 = (char*)a2 + n; ! 28: while(n > 0) { ! 29: *--s1 = *--s2; ! 30: n--; ! 31: } ! 32: return a1; ! 33: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.