1169695Skan/* bcopy -- copy memory regions of arbitary length
2169695Skan
3169695Skan@deftypefn Supplemental void bcopy (char *@var{in}, char *@var{out}, int @var{length})
4169695Skan
5169695SkanCopies @var{length} bytes from memory region @var{in} to region
6169695Skan@var{out}.  The use of @code{bcopy} is deprecated in new programs.
7169695Skan
8169695Skan@end deftypefn
9169695Skan
10169695Skan*/
11169695Skan
12169695Skan#include <stddef.h>
13169695Skan
14169695Skanvoid
15169695Skanbcopy (const void *src, void *dest, size_t len)
16169695Skan{
17169695Skan  if (dest < src)
18169695Skan    {
19169695Skan      const char *firsts = src;
20169695Skan      char *firstd = dest;
21169695Skan      while (len--)
22169695Skan	*firstd++ = *firsts++;
23169695Skan    }
24169695Skan  else
25169695Skan    {
26169695Skan      const char *lasts = (const char *)src + (len-1);
27169695Skan      char *lastd = (char *)dest + (len-1);
28169695Skan      while (len--)
29169695Skan        *lastd-- = *lasts--;
30169695Skan    }
31169695Skan}
32