summaryrefslogtreecommitdiff
path: root/src/lib/libc/string/strtok.3
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/string/strtok.3')
-rw-r--r--src/lib/libc/string/strtok.3110
1 files changed, 82 insertions, 28 deletions
diff --git a/src/lib/libc/string/strtok.3 b/src/lib/libc/string/strtok.3
index 644bd10aed..fbf0abfc26 100644
--- a/src/lib/libc/string/strtok.3
+++ b/src/lib/libc/string/strtok.3
@@ -1,3 +1,5 @@
1.\" $OpenBSD: strtok.3,v 1.20 2011/07/25 00:38:53 schwarze Exp $
2.\"
1.\" Copyright (c) 1988, 1991 The Regents of the University of California. 3.\" Copyright (c) 1988, 1991 The Regents of the University of California.
2.\" All rights reserved. 4.\" All rights reserved.
3.\" 5.\"
@@ -13,11 +15,7 @@
13.\" 2. Redistributions in binary form must reproduce the above copyright 15.\" 2. Redistributions in binary form must reproduce the above copyright
14.\" notice, this list of conditions and the following disclaimer in the 16.\" notice, this list of conditions and the following disclaimer in the
15.\" documentation and/or other materials provided with the distribution. 17.\" documentation and/or other materials provided with the distribution.
16.\" 3. All advertising materials mentioning features or use of this software 18.\" 3. Neither the name of the University nor the names of its contributors
17.\" must display the following acknowledgement:
18.\" This product includes software developed by the University of
19.\" California, Berkeley and its contributors.
20.\" 4. Neither the name of the University nor the names of its contributors
21.\" may be used to endorse or promote products derived from this software 19.\" may be used to endorse or promote products derived from this software
22.\" without specific prior written permission. 20.\" without specific prior written permission.
23.\" 21.\"
@@ -33,29 +31,28 @@
33.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34.\" SUCH DAMAGE. 32.\" SUCH DAMAGE.
35.\" 33.\"
36.\" from: @(#)strtok.3 5.8 (Berkeley) 6/29/91 34.Dd $Mdocdate: July 25 2011 $
37.\" $Id: strtok.3,v 1.1.1.1 1995/10/18 08:42:23 deraadt Exp $
38.\"
39.Dd June 29, 1991
40.Dt STRTOK 3 35.Dt STRTOK 3
41.Os BSD 3 36.Os
42.Sh NAME 37.Sh NAME
43.Nm strtok , 38.Nm strtok ,
44.Nm strsep 39.Nm strtok_r
45.Nd string token operations 40.Nd string token operations
46.Sh SYNOPSIS 41.Sh SYNOPSIS
47.Fd #include <string.h> 42.Fd #include <string.h>
48.Ft char * 43.Ft char *
49.Fn strtok "char *str" "const char *sep" 44.Fn strtok "char *str" "const char *sep"
45.Ft char *
46.Fn strtok_r "char *str" "const char *sep" "char **last"
50.Sh DESCRIPTION 47.Sh DESCRIPTION
51.Bf -symbolic 48.Bf -symbolic
52This interface is obsoleted by strsep(3). 49This interface is obsoleted by
50.Xr strsep 3 .
53.Ef 51.Ef
54.Pp 52.Pp
55The 53The
56.Fn strtok 54.Fn strtok
57function 55function is used to isolate sequential tokens in a NUL-terminated string,
58is used to isolate sequential tokens in a null-terminated string,
59.Fa str . 56.Fa str .
60These tokens are separated in the string by at least one of the 57These tokens are separated in the string by at least one of the
61characters in 58characters in
@@ -71,42 +68,99 @@ The separator string,
71must be supplied each time, and may change between calls. 68must be supplied each time, and may change between calls.
72.Pp 69.Pp
73The 70The
71.Fn strtok_r
72function is a version of
74.Fn strtok 73.Fn strtok
75function 74that takes an explicit context argument and is reentrant.
76returns a pointer to the beginning of each subsequent token in the string, 75.Pp
77after replacing the separator character itself with a 76Since
78.Dv NUL 77.Fn strtok
78and
79.Fn strtok_r
80modify the string,
81.Fa str
82should not point to an area in the initialized data segment.
83.Sh RETURN VALUES
84The
85.Fn strtok
86and
87.Fn strtok_r
88functions return a pointer to the beginning of each subsequent token
89in the string, after replacing the separator character itself with an
90.Tn ASCII NUL
79character. 91character.
80When no more tokens remain, a null pointer is returned. 92When no more tokens remain, a null pointer is returned.
93.Sh EXAMPLES
94The following will construct an array of pointers to each individual word in
95the string
96.Va s :
97.Bd -literal -offset indent
98#define MAXTOKENS 128
99
100char s[512], *p, *tokens[MAXTOKENS];
101char *last;
102int i = 0;
103
104snprintf(s, sizeof(s), "cat dog horse cow");
105
106for ((p = strtok_r(s, " ", &last)); p;
107 (p = strtok_r(NULL, " ", &last))) {
108 if (i < MAXTOKENS - 1)
109 tokens[i++] = p;
110}
111tokens[i] = NULL;
112.Ed
113.Pp
114That is,
115.Li tokens[0]
116will point to
117.Qq cat ,
118.Li tokens[1]
119will point to
120.Qq dog ,
121.Li tokens[2]
122will point to
123.Qq horse ,
124and
125.Li tokens[3]
126will point to
127.Qq cow .
81.Sh SEE ALSO 128.Sh SEE ALSO
82.Xr index 3 ,
83.Xr memchr 3 , 129.Xr memchr 3 ,
84.Xr rindex 3 ,
85.Xr strchr 3 , 130.Xr strchr 3 ,
86.Xr strcspn 3 , 131.Xr strcspn 3 ,
87.Xr strpbrk 3 , 132.Xr strpbrk 3 ,
88.Xr strrchr 3 , 133.Xr strrchr 3 ,
89.Xr strsep 3 , 134.Xr strsep 3 ,
90.Xr strspn 3 , 135.Xr strspn 3 ,
91.Xr strstr 3 136.Xr strstr 3 ,
137.Xr wcstok 3
92.Sh STANDARDS 138.Sh STANDARDS
93The 139The
94.Fn strtok 140.Fn strtok
95function 141function conforms to
96conforms to
97.St -ansiC . 142.St -ansiC .
143.Sh HISTORY
144The
145.Fn strtok
146function first appeared in
147.At III
148and was reimplemented for
149.Bx 4.3 Tahoe .
150The
151.Fn strtok_r
152function first appeared in
153.Nx 1.3
154and was reimplemented for
155.Ox 2.7 .
98.Sh BUGS 156.Sh BUGS
99There is no way to get tokens from multiple strings simultaneously.
100.Pp
101The System V 157The System V
102.Fn strtok , 158.Fn strtok ,
103if handed a string containing only delimiter characters, 159if handed a string containing only delimiter characters,
104will not alter the next starting point, so that a call to 160will not alter the next starting point, so that a call to
105.Fn strtok 161.Fn strtok
106with a different (or empty) delimiter string 162with a different (or empty) delimiter string
107may return a 163may return a non-null value.
108.Pf non- Dv NULL
109value.
110Since this implementation always alters the next starting point, 164Since this implementation always alters the next starting point,
111such a sequence of calls would always return 165such a sequence of calls would always return
112.Dv NULL . 166.Dv NULL .