.
[coreutils.git] / lib / memmove.c
blobd7bdd7cd99503b51ebe37eb7d45d778a8954e8d3
1 /* memmove.c -- copy memory.
2 Copy LENGTH bytes from SOURCE to DEST. Does not null-terminate.
3 In the public domain.
4 By David MacKenzie <djm@gnu.ai.mit.edu>. */
6 #ifdef HAVE_CONFIG_H
7 #include <config.h>
8 #endif
10 void
11 memmove (dest, source, length)
12 char *dest;
13 const char *source;
14 unsigned length;
16 if (source < dest)
17 /* Moving from low mem to hi mem; start at end. */
18 for (source += length, dest += length; length; --length)
19 *--dest = *--source;
20 else if (source != dest)
21 /* Moving from hi mem to low mem; start at beginning. */
22 for (; length; --length)
23 *dest++ = *source++;