36 lines
711 B
C
36 lines
711 B
C
|
/* bcopy -- copy memory regions of arbitary length
|
||
|
|
||
|
NAME
|
||
|
bcopy -- copy memory regions of arbitrary length
|
||
|
|
||
|
SYNOPSIS
|
||
|
void bcopy (char *in, char *out, int length)
|
||
|
|
||
|
DESCRIPTION
|
||
|
Copy LENGTH bytes from memory region pointed to by IN to memory
|
||
|
region pointed to by OUT.
|
||
|
|
||
|
BUGS
|
||
|
Significant speed improvements can be made in some cases by
|
||
|
implementing copies of multiple bytes simultaneously, or unrolling
|
||
|
the copy loop.
|
||
|
|
||
|
*/
|
||
|
|
||
|
void
|
||
|
bcopy (src, dest, len)
|
||
|
register char *src, *dest;
|
||
|
int len;
|
||
|
{
|
||
|
if (dest < src)
|
||
|
while (len--)
|
||
|
*dest++ = *src++;
|
||
|
else
|
||
|
{
|
||
|
char *lasts = src + (len-1);
|
||
|
char *lastd = dest + (len-1);
|
||
|
while (len--)
|
||
|
*(char *)lastd-- = *(char *)lasts--;
|
||
|
}
|
||
|
}
|