1 058b0118 2005-01-03 devnull .TH MEMORY 3
3 058b0118 2005-01-03 devnull memccpy, memchr, memcmp, memcpy, memmove, memset \- memory operations
4 058b0118 2005-01-03 devnull .SH SYNOPSIS
5 058b0118 2005-01-03 devnull .B #include <u.h>
7 058b0118 2005-01-03 devnull .B #include <libc.h>
9 058b0118 2005-01-03 devnull .ta \w'\fLvoid* 'u
11 058b0118 2005-01-03 devnull void* memccpy(void *s1, void *s2, int c, long n)
14 058b0118 2005-01-03 devnull void* memchr(void *s, int c, long n)
17 058b0118 2005-01-03 devnull int memcmp(void *s1, void *s2, long n)
20 058b0118 2005-01-03 devnull void* memcpy(void *s1, void *s2, long n)
23 058b0118 2005-01-03 devnull void* memmove(void *s1, void *s2, long n)
26 058b0118 2005-01-03 devnull void* memset(void *s, int c, long n)
27 058b0118 2005-01-03 devnull .SH DESCRIPTION
28 058b0118 2005-01-03 devnull These functions operate efficiently on memory areas
29 058b0118 2005-01-03 devnull (arrays of bytes bounded by a count, not terminated by a zero byte).
30 058b0118 2005-01-03 devnull They do not check for the overflow of any receiving memory area.
32 058b0118 2005-01-03 devnull .I Memccpy
33 058b0118 2005-01-03 devnull copies bytes from memory area
37 058b0118 2005-01-03 devnull stopping after the first occurrence of byte
39 058b0118 2005-01-03 devnull has been copied, or after
41 058b0118 2005-01-03 devnull bytes have been copied, whichever comes first.
42 058b0118 2005-01-03 devnull It returns a pointer to the byte after
43 058b0118 2005-01-03 devnull the copy of
47 058b0118 2005-01-03 devnull or zero if
49 058b0118 2005-01-03 devnull was not found in the first
54 058b0118 2005-01-03 devnull .I Memchr
55 058b0118 2005-01-03 devnull returns a pointer to the first
56 058b0118 2005-01-03 devnull occurrence of byte
58 058b0118 2005-01-03 devnull in the first
60 058b0118 2005-01-03 devnull bytes of memory area
62 058b0118 2005-01-03 devnull or zero if
64 058b0118 2005-01-03 devnull does not occur.
66 058b0118 2005-01-03 devnull .I Memcmp
67 058b0118 2005-01-03 devnull compares its arguments, looking at the first
69 058b0118 2005-01-03 devnull bytes only, and returns an integer
70 058b0118 2005-01-03 devnull less than, equal to, or greater than 0,
71 058b0118 2005-01-03 devnull according as
73 058b0118 2005-01-03 devnull is lexicographically less than, equal to, or
74 058b0118 2005-01-03 devnull greater than
76 058b0118 2005-01-03 devnull The comparison is bytewise unsigned.
78 058b0118 2005-01-03 devnull .I Memcpy
81 058b0118 2005-01-03 devnull bytes from memory area
85 058b0118 2005-01-03 devnull It returns
88 058b0118 2005-01-03 devnull .I Memmove
89 058b0118 2005-01-03 devnull works like
90 058b0118 2005-01-03 devnull .IR memcpy ,
91 058b0118 2005-01-03 devnull except that it is guaranteed to work if
97 058b0118 2005-01-03 devnull .I Memset
98 058b0118 2005-01-03 devnull sets the first
100 058b0118 2005-01-03 devnull bytes in memory area
102 058b0118 2005-01-03 devnull to the value of byte
104 058b0118 2005-01-03 devnull It returns
106 058b0118 2005-01-03 devnull .SH SOURCE
107 058b0118 2005-01-03 devnull All these routines have portable C implementations in
108 c3674de4 2005-01-11 devnull .BR \*9/src/lib9 .
109 058b0118 2005-01-03 devnull .\" Most also have machine-dependent assembly language implementations in
110 c3674de4 2005-01-11 devnull .\" .BR \*9/lib9/$objtype .
111 058b0118 2005-01-03 devnull .SH SEE ALSO
112 058b0118 2005-01-03 devnull .IR strcat (3)
113 058b0118 2005-01-03 devnull .SH BUGS
114 058b0118 2005-01-03 devnull ANSI C does not require
115 058b0118 2005-01-03 devnull .I memcpy
116 058b0118 2005-01-03 devnull to handle overlapping source and destination; on Plan 9, it does, so
117 058b0118 2005-01-03 devnull .I memmove
119 058b0118 2005-01-03 devnull .I memcpy
120 058b0118 2005-01-03 devnull behave identically.
123 058b0118 2005-01-03 devnull .I memcpy
125 058b0118 2005-01-03 devnull .I memmove
126 058b0118 2005-01-03 devnull are handed a negative count, they abort.