shithub: purgatorio

ref: 21947578303cdb0fcb4b0cdfe80aa9dab5f6b447
dir: /man/10/memory/

View raw version
.TH MEMORY 10.2
.SH NAME
memccpy, memchr, memcmp, memcpy, memmove, memset \- memory operations
.SH SYNOPSIS
.ta \w'\fLvoid* 'u
.B
void*	memccpy(void *s1, void *s2, int c, long n)
.PP
.B
void*	memchr(void *s, int c, long n)
.PP
.B
int	memcmp(void *s1, void *s2, long n)
.PP
.B
void*	memcpy(void *s1, void *s2, long n)
.PP
.B
void*	memmove(void *s1, void *s2, long n)
.PP
.B
void*	memset(void *s, int c, long n)
.SH DESCRIPTION
These functions operate efficiently on memory areas
(arrays of bytes bounded by a count, not terminated by a zero byte).
They do not check for the overflow of any receiving memory area.
.PP
.I Memccpy
copies bytes from memory area
.I s2
into
.IR s1 ,
stopping after the first occurrence of byte
.I c
has been copied, or after
.I n
bytes have been copied, whichever comes first.
It returns a pointer to the byte after
the copy of
.I c
in
.IR s1 ,
or zero if
.I c
was not found in the first
.I n
bytes of
.IR s2 .
.PP
.I Memchr
returns a pointer to the first
occurrence of byte
.I c
in the first
.I n
bytes of memory area
.IR s,
or zero if
.I c
does not occur.
.PP
.I Memcmp
compares its arguments, looking at the first
.I n
bytes only, and returns an integer
less than, equal to, or greater than 0,
according as
.I s1
is lexicographically less than, equal to, or
greater than
.IR s2 .
The comparison is bytewise unsigned.
.PP
.I Memmove
copies
.I n
bytes from memory area 
.I s2
to
.IR s1 .
It returns
.IR s1 .
It is guaranteed to work if
.I s1
and
.IR s2
overlap.
.PP
In the Inferno kernel
.I memcpy
is equivalent to
.IR memmove .
(In ANSI C, by contrast,
.I memcpy
does not account for overlapping memory regions.)
.PP
.I Memset
sets the first
.I n
bytes in memory area
.I s
to the value of the least significant byte of
.IR c .
It returns
.IR s .
.SH DIAGNOSTICS
If
.I memcpy
and
.I memmove
are handed negative counts, they abort.
.SH SOURCE
.BR /libkern/mem*.c
.br
.BR /libkern/mem*-\fIobjtype\fP.s
.SH SEE ALSO
.IR strcat (10.2)