 b6cbf7203b
			
		
	
	
		b6cbf7203b
		
	
	
	
	
		
			
			This patch imports the unmodified current version of NetBSD libc. The NetBSD includes are in /nbsd_include, while the libc code itself is split between lib/nbsd_libc and common/lib/libc.
		
			
				
	
	
		
			163 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" Copyright (c) 1988, 1991, 1993
 | |
| .\"	The Regents of the University of California.  All rights reserved.
 | |
| .\"
 | |
| .\" This code is derived from software contributed to Berkeley by
 | |
| .\" the American National Standards Committee X3, on Information
 | |
| .\" Processing Systems.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\" 3. Neither the name of the University nor the names of its contributors
 | |
| .\"    may be used to endorse or promote products derived from this software
 | |
| .\"    without specific prior written permission.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .\"     from: @(#)strtok.3	8.2 (Berkeley) 2/3/94
 | |
| .\"	$NetBSD: strtok.3,v 1.23 2008/08/29 05:48:40 dholland Exp $
 | |
| .\"
 | |
| .Dd August 11, 2002
 | |
| .Dt STRTOK 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm strtok, strtok_r
 | |
| .Nd string tokens
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In string.h
 | |
| .Ft char *
 | |
| .Fn strtok "char * restrict str" "const char * restrict sep"
 | |
| .Ft char *
 | |
| .Fn strtok_r "char *str" "const char *sep" "char **lasts"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Fn strtok
 | |
| function
 | |
| is used to isolate sequential tokens in a nul-terminated string,
 | |
| .Fa str .
 | |
| These tokens are separated in the string by at least one of the
 | |
| characters in
 | |
| .Fa sep .
 | |
| The first time that
 | |
| .Fn strtok
 | |
| is called,
 | |
| .Fa str
 | |
| should be specified; subsequent calls, wishing to obtain further tokens
 | |
| from the same string, should pass a null pointer instead.
 | |
| The separator string,
 | |
| .Fa sep ,
 | |
| must be supplied each time, and may change between calls.
 | |
| .Pp
 | |
| The
 | |
| .Fn strtok
 | |
| function
 | |
| returns a pointer to the beginning of each subsequent token in the string,
 | |
| after replacing the separator character itself with a
 | |
| .Dv NUL
 | |
| character.
 | |
| Separator characters at the beginning of the string or at the
 | |
| continuation point are skipped so that zero length tokens
 | |
| are not returned.
 | |
| When no more tokens remain, a null pointer is returned.
 | |
| .Pp
 | |
| The
 | |
| .Fn strtok_r
 | |
| function implements the functionality of
 | |
| .Fn strtok
 | |
| but is passed an additional argument,
 | |
| .Fa lasts ,
 | |
| which points to a user-provided pointer which is used by
 | |
| .Fn strtok_r
 | |
| to store state which needs to be kept between calls to scan the same string;
 | |
| unlike
 | |
| .Fn strtok ,
 | |
| it is not necessary to limit tokenizing to a single string at a time
 | |
| when using
 | |
| .Fn strtok_r .
 | |
| .Sh EXAMPLES
 | |
| The following will construct an array of pointers to each individual word in
 | |
| the string
 | |
| .Va s :
 | |
| .Bd -literal -offset indent
 | |
| #define MAXTOKENS	128
 | |
| 
 | |
| char s[512], *p, *tokens[MAXTOKENS];
 | |
| char *last;
 | |
| int i = 0;
 | |
| 
 | |
| snprintf(s, sizeof(s), "cat dog horse cow");
 | |
| 
 | |
| for ((p = strtok_r(s, " ", &last)); p;
 | |
|     (p = strtok_r(NULL, " ", &last)), i++) {
 | |
| 	if (i < MAXTOKENS - 1)
 | |
| 		tokens[i] = p;
 | |
| }
 | |
| tokens[i] = NULL;
 | |
| .Ed
 | |
| .Pp
 | |
| That is,
 | |
| .Li tokens[0]
 | |
| will point to
 | |
| .Qq cat ,
 | |
| .Li tokens[1]
 | |
| will point to
 | |
| .Qq dog ,
 | |
| .Li tokens[2]
 | |
| will point to
 | |
| .Qq horse ,
 | |
| and
 | |
| .Li tokens[3]
 | |
| will point to
 | |
| .Qq cow .
 | |
| .Sh SEE ALSO
 | |
| .Xr index 3 ,
 | |
| .Xr memchr 3 ,
 | |
| .Xr rindex 3 ,
 | |
| .Xr strchr 3 ,
 | |
| .Xr strcspn 3 ,
 | |
| .Xr strpbrk 3 ,
 | |
| .Xr strrchr 3 ,
 | |
| .Xr strsep 3 ,
 | |
| .Xr strspn 3 ,
 | |
| .Xr strstr 3
 | |
| .Sh STANDARDS
 | |
| The
 | |
| .Fn strtok
 | |
| function
 | |
| conforms to
 | |
| .St -ansiC .
 | |
| The
 | |
| .Fn strtok_r
 | |
| function conforms to
 | |
| .St -p1003.1c-95 .
 | |
| .Sh BUGS
 | |
| The System V
 | |
| .Fn strtok ,
 | |
| if handed a string containing only delimiter characters,
 | |
| will not alter the next starting point, so that a call to
 | |
| .Fn strtok
 | |
| with a different (or empty) delimiter string
 | |
| may return a
 | |
| .Pf non- Dv NULL
 | |
| value.
 | |
| Since this implementation always alters the next starting point,
 | |
| such a sequence of calls would always return
 | |
| .Dv NULL .
 |