diff options
Diffstat (limited to 'missing/memmove.c')
| -rw-r--r-- | missing/memmove.c | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/missing/memmove.c b/missing/memmove.c index 09e64702b6..e8e17e87e7 100644 --- a/missing/memmove.c +++ b/missing/memmove.c @@ -1,24 +1,22 @@ -/* - * memmove --- move memories. - * - * We supply this routine for those systems that aren't standard yet. - */ +/* public domain rewrite of memcmp(3) */ -char * -memmove (dst, src, n) - char *dst, *src; - int n; +#include "ruby/missing.h" +#include <stddef.h> + +void * +memmove(void *d, const void *s, size_t n) { - char *ret = dst; + char *dst = (char *)d; + const char *src = (const char *)s; - if (src < dst) { - src += n; - dst += n; - while (n--) - *--dst = *--src; - } - else if (dst < src) - while (n--) - *dst++ = *src++; - return ret; + if (src < dst) { + src += n; + dst += n; + for (; n; --n) + *--dst = *--src; + } + else if (dst < src) + for (; n; --n) + *dst++ = *src++; + return d; } |
