1*10d565efSmrg /* bcopy -- copy memory regions of arbitary length
2*10d565efSmrg 
3*10d565efSmrg @deftypefn Supplemental void bcopy (char *@var{in}, char *@var{out}, int @var{length})
4*10d565efSmrg 
5*10d565efSmrg Copies @var{length} bytes from memory region @var{in} to region
6*10d565efSmrg @var{out}.  The use of @code{bcopy} is deprecated in new programs.
7*10d565efSmrg 
8*10d565efSmrg @end deftypefn
9*10d565efSmrg 
10*10d565efSmrg */
11*10d565efSmrg 
12*10d565efSmrg #include <stddef.h>
13*10d565efSmrg 
14*10d565efSmrg void
bcopy(const void * src,void * dest,size_t len)15*10d565efSmrg bcopy (const void *src, void *dest, size_t len)
16*10d565efSmrg {
17*10d565efSmrg   if (dest < src)
18*10d565efSmrg     {
19*10d565efSmrg       const char *firsts = (const char *) src;
20*10d565efSmrg       char *firstd = (char *) dest;
21*10d565efSmrg       while (len--)
22*10d565efSmrg 	*firstd++ = *firsts++;
23*10d565efSmrg     }
24*10d565efSmrg   else
25*10d565efSmrg     {
26*10d565efSmrg       const char *lasts = (const char *)src + (len-1);
27*10d565efSmrg       char *lastd = (char *)dest + (len-1);
28*10d565efSmrg       while (len--)
29*10d565efSmrg         *lastd-- = *lasts--;
30*10d565efSmrg     }
31*10d565efSmrg }
32