plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

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.