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*16dce513Schristosbcopy (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