#define CHUNK 65532 /* word boundary */ /* VAX memcpy is OK up to 65535-byte strings */ extern void *memcpy(); void * memmove(vout, vin, n) void *vout, *vin; unsigned n; { char *out, *in; register unsigned chunk; if(n <= CHUNK || vout < vin) return memcpy(vout, vin, n); chunk = n%CHUNK; out = (char*)vout + n; in = (char*)vin + n; while(memcpy(out-=chunk, in-=chunk, chunk) > vout) chunk = CHUNK; return vout; }