memory.3 (2136B)
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.