@c ----------------------------------------------------------------------
@node bcmp, memory
@heading @code{bcmp}
@subheading Syntax

@example
#include <string.h>

int bcmp(const void *ptr1, const void *ptr2, int length);
@end example

@subheading Description

Compare memory pointed to by @var{ptr1} and @var{ptr2} for at most
@var{length} bytes. 

@subheading Return Value

The number of bytes remaining when the first mismatch occurred, or zero
if all bytes were equal. 

@subheading Example

@example
void f(char *s1, char *s2)
@{
  int l = bcmp(s1, s2, strlen(s1));
  printf("Difference: %s, %s\n", s1+strlen(s1)-l, s2+strlen(s1)-l);
@}

@end example

@c ----------------------------------------------------------------------
@node _bcopy, memory
@heading @code{_bcopy}
@subheading Syntax

@example
#include <string.h>

void _bcopy(const void *source, void *dest, int length);
@end example

@subheading Description

Copy @var{length} bytes from @var{source} to @var{dest}.  This is just
like @code{bcopy} (@pxref{bcopy}), except that the loads and stores are
done with different opcodes in case @var{source} and @var{dest} can't be
paged in at the same time (like blitting in the graphics buffer). 

@subheading Return Value

No value is returned.

@subheading Example

@example
bcopy(ScreenPrimary+ScreenCols()*2, ScreenPrimary,
  (ScreenRows()-1)*ScreenCols()*2);
@end example

@c ----------------------------------------------------------------------
@node bcopy, memory
@heading @code{bcopy}
@subheading Syntax

@example
#include <string.h>

void bcopy(const void *source, void *dest, int length);
@end example

@subheading Description

Copy @var{length} bytes from @var{source} to @var{dest}.  Overlapping
regions are handled properly, although this behavior is not portable. 

@subheading Return Value

No value is returned.

@subheading Example

@example
struct s a, b;
bcopy(a, b, sizeof(struct s));
@end example

