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