Blame


1 058b0118 2005-01-03 devnull .TH MEMORY 3
2 058b0118 2005-01-03 devnull .SH NAME
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>
6 058b0118 2005-01-03 devnull .br
7 058b0118 2005-01-03 devnull .B #include <libc.h>
8 058b0118 2005-01-03 devnull .PP
9 058b0118 2005-01-03 devnull .ta \w'\fLvoid* 'u
10 058b0118 2005-01-03 devnull .B
11 058b0118 2005-01-03 devnull void* memccpy(void *s1, void *s2, int c, long n)
12 058b0118 2005-01-03 devnull .PP
13 058b0118 2005-01-03 devnull .B
14 058b0118 2005-01-03 devnull void* memchr(void *s, int c, long n)
15 058b0118 2005-01-03 devnull .PP
16 058b0118 2005-01-03 devnull .B
17 058b0118 2005-01-03 devnull int memcmp(void *s1, void *s2, long n)
18 058b0118 2005-01-03 devnull .PP
19 058b0118 2005-01-03 devnull .B
20 058b0118 2005-01-03 devnull void* memcpy(void *s1, void *s2, long n)
21 058b0118 2005-01-03 devnull .PP
22 058b0118 2005-01-03 devnull .B
23 058b0118 2005-01-03 devnull void* memmove(void *s1, void *s2, long n)
24 058b0118 2005-01-03 devnull .PP
25 058b0118 2005-01-03 devnull .B
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.
31 058b0118 2005-01-03 devnull .PP
32 058b0118 2005-01-03 devnull .I Memccpy
33 058b0118 2005-01-03 devnull copies bytes from memory area
34 058b0118 2005-01-03 devnull .I s2
35 058b0118 2005-01-03 devnull into
36 058b0118 2005-01-03 devnull .IR s1 ,
37 058b0118 2005-01-03 devnull stopping after the first occurrence of byte
38 058b0118 2005-01-03 devnull .I c
39 058b0118 2005-01-03 devnull has been copied, or after
40 058b0118 2005-01-03 devnull .I n
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
44 058b0118 2005-01-03 devnull .I c
45 058b0118 2005-01-03 devnull in
46 058b0118 2005-01-03 devnull .IR s1 ,
47 058b0118 2005-01-03 devnull or zero if
48 058b0118 2005-01-03 devnull .I c
49 058b0118 2005-01-03 devnull was not found in the first
50 058b0118 2005-01-03 devnull .I n
51 058b0118 2005-01-03 devnull bytes of
52 058b0118 2005-01-03 devnull .IR s2 .
53 058b0118 2005-01-03 devnull .PP
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
57 058b0118 2005-01-03 devnull .I c
58 058b0118 2005-01-03 devnull in the first
59 058b0118 2005-01-03 devnull .I n
60 058b0118 2005-01-03 devnull bytes of memory area
61 058b0118 2005-01-03 devnull .IR s,
62 058b0118 2005-01-03 devnull or zero if
63 058b0118 2005-01-03 devnull .I c
64 058b0118 2005-01-03 devnull does not occur.
65 058b0118 2005-01-03 devnull .PP
66 058b0118 2005-01-03 devnull .I Memcmp
67 058b0118 2005-01-03 devnull compares its arguments, looking at the first
68 058b0118 2005-01-03 devnull .I n
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
72 058b0118 2005-01-03 devnull .I s1
73 058b0118 2005-01-03 devnull is lexicographically less than, equal to, or
74 058b0118 2005-01-03 devnull greater than
75 058b0118 2005-01-03 devnull .IR s2 .
76 058b0118 2005-01-03 devnull The comparison is bytewise unsigned.
77 058b0118 2005-01-03 devnull .PP
78 058b0118 2005-01-03 devnull .I Memcpy
79 058b0118 2005-01-03 devnull copies
80 058b0118 2005-01-03 devnull .I n
81 058b0118 2005-01-03 devnull bytes from memory area
82 058b0118 2005-01-03 devnull .I s2
83 058b0118 2005-01-03 devnull to
84 058b0118 2005-01-03 devnull .IR s1 .
85 058b0118 2005-01-03 devnull It returns
86 058b0118 2005-01-03 devnull .IR s1 .
87 058b0118 2005-01-03 devnull .PP
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
92 058b0118 2005-01-03 devnull .I s1
93 058b0118 2005-01-03 devnull and
94 058b0118 2005-01-03 devnull .IR s2
95 058b0118 2005-01-03 devnull overlap.
96 058b0118 2005-01-03 devnull .PP
97 058b0118 2005-01-03 devnull .I Memset
98 058b0118 2005-01-03 devnull sets the first
99 058b0118 2005-01-03 devnull .I n
100 058b0118 2005-01-03 devnull bytes in memory area
101 058b0118 2005-01-03 devnull .I s
102 058b0118 2005-01-03 devnull to the value of byte
103 058b0118 2005-01-03 devnull .IR c .
104 058b0118 2005-01-03 devnull It returns
105 058b0118 2005-01-03 devnull .IR s .
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 d32deab1 2020-08-16 rsc .MR 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
118 058b0118 2005-01-03 devnull and
119 058b0118 2005-01-03 devnull .I memcpy
120 058b0118 2005-01-03 devnull behave identically.
121 058b0118 2005-01-03 devnull .PP
122 058b0118 2005-01-03 devnull If
123 058b0118 2005-01-03 devnull .I memcpy
124 058b0118 2005-01-03 devnull and
125 058b0118 2005-01-03 devnull .I memmove
126 058b0118 2005-01-03 devnull are handed a negative count, they abort.