| Line | |
|---|
| 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>. */
|
|---|
| 5 |
|
|---|
| 6 | #if HAVE_CONFIG_H
|
|---|
| 7 | # include <config.h>
|
|---|
| 8 | #endif
|
|---|
| 9 |
|
|---|
| 10 | #include <stddef.h>
|
|---|
| 11 |
|
|---|
| 12 | void *
|
|---|
| 13 | memmove (void *dest0, void const *source0, size_t length)
|
|---|
| 14 | {
|
|---|
| 15 | char *dest = dest0;
|
|---|
| 16 | char const *source = source0;
|
|---|
| 17 | if (source < dest)
|
|---|
| 18 | /* Moving from low mem to hi mem; start at end. */
|
|---|
| 19 | for (source += length, dest += length; length; --length)
|
|---|
| 20 | *--dest = *--source;
|
|---|
| 21 | else if (source != dest)
|
|---|
| 22 | {
|
|---|
| 23 | /* Moving from hi mem to low mem; start at beginning. */
|
|---|
| 24 | for (; length; --length)
|
|---|
| 25 | *dest++ = *source++;
|
|---|
| 26 | }
|
|---|
| 27 | return dest0;
|
|---|
| 28 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.