|
|
1.1 ! root 1: #define CHUNK 65532 /* word boundary */ ! 2: ! 3: /* VAX memcpy is OK up to 65535-byte strings */ ! 4: ! 5: extern void *memcpy(); ! 6: ! 7: void * ! 8: memmove(vout, vin, n) ! 9: void *vout, *vin; ! 10: unsigned n; ! 11: { ! 12: char *out, *in; ! 13: register unsigned chunk; ! 14: if(n <= CHUNK || vout < vin) ! 15: return memcpy(vout, vin, n); ! 16: chunk = n%CHUNK; ! 17: out = (char*)vout + n; ! 18: in = (char*)vin + n; ! 19: while(memcpy(out-=chunk, in-=chunk, chunk) > vout) ! 20: chunk = CHUNK; ! 21: return vout; ! 22: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.