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--;
|
|
}
|
|
}
|