/* * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ /* $Header$ */ #include void * memmove(void *s1, const void *s2, register size_t n) { register char *p1 = s1; register const char *p2 = s2; if (p2 <= p1 && p2 + (n-1) >= p1) { /* overlap, copy backwards */ p1 += n; p2 += n; while (n > 0) { n--; *--p1 = *--p2; } } else while (n > 0) { n--; *p1++ = *p2++; } return s1; }