Blob


1 .TH MEMORY 3
2 .SH NAME
3 memccpy, memchr, memcmp, memcpy, memmove, memset \- memory operations
4 .SH SYNOPSIS
5 .B #include <u.h>
6 .br
7 .B #include <libc.h>
8 .PP
9 .ta \w'\fLvoid* 'u
10 .B
11 void* memccpy(void *s1, void *s2, int c, long n)
12 .PP
13 .B
14 void* memchr(void *s, int c, long n)
15 .PP
16 .B
17 int memcmp(void *s1, void *s2, long n)
18 .PP
19 .B
20 void* memcpy(void *s1, void *s2, long n)
21 .PP
22 .B
23 void* memmove(void *s1, void *s2, long n)
24 .PP
25 .B
26 void* memset(void *s, int c, long n)
27 .SH DESCRIPTION
28 These functions operate efficiently on memory areas
29 (arrays of bytes bounded by a count, not terminated by a zero byte).
30 They do not check for the overflow of any receiving memory area.
31 .PP
32 .I Memccpy
33 copies bytes from memory area
34 .I s2
35 into
36 .IR s1 ,
37 stopping after the first occurrence of byte
38 .I c
39 has been copied, or after
40 .I n
41 bytes have been copied, whichever comes first.
42 It returns a pointer to the byte after
43 the copy of
44 .I c
45 in
46 .IR s1 ,
47 or zero if
48 .I c
49 was not found in the first
50 .I n
51 bytes of
52 .IR s2 .
53 .PP
54 .I Memchr
55 returns a pointer to the first
56 occurrence of byte
57 .I c
58 in the first
59 .I n
60 bytes of memory area
61 .IR s,
62 or zero if
63 .I c
64 does not occur.
65 .PP
66 .I Memcmp
67 compares its arguments, looking at the first
68 .I n
69 bytes only, and returns an integer
70 less than, equal to, or greater than 0,
71 according as
72 .I s1
73 is lexicographically less than, equal to, or
74 greater than
75 .IR s2 .
76 The comparison is bytewise unsigned.
77 .PP
78 .I Memcpy
79 copies
80 .I n
81 bytes from memory area
82 .I s2
83 to
84 .IR s1 .
85 It returns
86 .IR s1 .
87 .PP
88 .I Memmove
89 works like
90 .IR memcpy ,
91 except that it is guaranteed to work if
92 .I s1
93 and
94 .IR s2
95 overlap.
96 .PP
97 .I Memset
98 sets the first
99 .I n
100 bytes in memory area
101 .I s
102 to the value of byte
103 .IR c .
104 It returns
105 .IR s .
106 .SH SOURCE
107 All these routines have portable C implementations in
108 .BR \*9/src/lib9 .
109 .\" Most also have machine-dependent assembly language implementations in
110 .\" .BR \*9/lib9/$objtype .
111 .SH SEE ALSO
112 .MR strcat (3)
113 .SH BUGS
114 ANSI C does not require
115 .I memcpy
116 to handle overlapping source and destination; on Plan 9, it does, so
117 .I memmove
118 and
119 .I memcpy
120 behave identically.
121 .PP
122 If
123 .I memcpy
124 and
125 .I memmove
126 are handed a negative count, they abort.