NetBSD/gnu/dist/texinfo/lib/memmove.c

31 lines
752 B
C
Raw Normal View History

2003-01-17 17:54:14 +03:00
/* $NetBSD: memmove.c,v 1.1.1.2 2003/01/17 14:54:30 wiz Exp $ */
1999-02-11 06:57:13 +03:00
/* memmove.c -- copy memory.
Copy LENGTH bytes from SOURCE to DEST. Does not null-terminate.
In the public domain.
By David MacKenzie <djm@gnu.ai.mit.edu>. */
2003-01-17 17:54:14 +03:00
#if HAVE_CONFIG_H
# include <config.h>
1999-02-11 06:57:13 +03:00
#endif
2003-01-17 17:54:14 +03:00
void *
1999-02-11 06:57:13 +03:00
memmove (dest, source, length)
char *dest;
const char *source;
unsigned length;
{
2003-01-17 17:54:14 +03:00
char *d0 = dest;
1999-02-11 06:57:13 +03:00
if (source < dest)
/* Moving from low mem to hi mem; start at end. */
for (source += length, dest += length; length; --length)
*--dest = *--source;
else if (source != dest)
2003-01-17 17:54:14 +03:00
{
/* Moving from hi mem to low mem; start at beginning. */
for (; length; --length)
*dest++ = *source++;
}
return (void *) d0;
1999-02-11 06:57:13 +03:00
}