1b1e12513SWes Peters.\" Copyright (c) 1998 Softweyr LLC. All rights reserved. 2b1e12513SWes Peters.\" 3b1e12513SWes Peters.\" strtok_r, from Berkeley strtok 4b1e12513SWes Peters.\" Oct 13, 1998 by Wes Peters <wes@softweyr.com> 5b1e12513SWes Peters.\" 658f0484fSRodney W. Grimes.\" Copyright (c) 1988, 1991, 1993 758f0484fSRodney W. Grimes.\" The Regents of the University of California. All rights reserved. 858f0484fSRodney W. Grimes.\" 958f0484fSRodney W. Grimes.\" This code is derived from software contributed to Berkeley by 1058f0484fSRodney W. Grimes.\" the American National Standards Committee X3, on Information 1158f0484fSRodney W. Grimes.\" Processing Systems. 1258f0484fSRodney W. Grimes.\" 1358f0484fSRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without 1458f0484fSRodney W. Grimes.\" modification, are permitted provided that the following conditions 1558f0484fSRodney W. Grimes.\" are met: 1658f0484fSRodney W. Grimes.\" 17b1e12513SWes Peters.\" 1. Redistributions of source code must retain the above copyright 18b1e12513SWes Peters.\" notices, this list of conditions and the following disclaimer. 19b1e12513SWes Peters.\" 20b1e12513SWes Peters.\" 2. Redistributions in binary form must reproduce the above 21b1e12513SWes Peters.\" copyright notices, this list of conditions and the following 22b1e12513SWes Peters.\" disclaimer in the documentation and/or other materials provided 23b1e12513SWes Peters.\" with the distribution. 24b1e12513SWes Peters.\" 25b1e12513SWes Peters.\" 3. All advertising materials mentioning features or use of this 26b1e12513SWes Peters.\" software must display the following acknowledgement: 27b1e12513SWes Peters.\" 28b1e12513SWes Peters.\" This product includes software developed by Softweyr LLC, the 29b1e12513SWes Peters.\" University of California, Berkeley, and its contributors. 30b1e12513SWes Peters.\" 31b1e12513SWes Peters.\" 4. Neither the name of Softweyr LLC, the University nor the names 32b1e12513SWes Peters.\" of its contributors may be used to endorse or promote products 33b1e12513SWes Peters.\" derived from this software without specific prior written 34b1e12513SWes Peters.\" permission. 35b1e12513SWes Peters.\" 36b1e12513SWes Peters.\" THIS SOFTWARE IS PROVIDED BY SOFTWEYR LLC, THE REGENTS AND 37b1e12513SWes Peters.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 38b1e12513SWes Peters.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 39b1e12513SWes Peters.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 40b1e12513SWes Peters.\" DISCLAIMED. IN NO EVENT SHALL SOFTWEYR LLC, THE REGENTS, OR 41b1e12513SWes Peters.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 42b1e12513SWes Peters.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 43b1e12513SWes Peters.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 44b1e12513SWes Peters.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 45b1e12513SWes Peters.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 46b1e12513SWes Peters.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 47b1e12513SWes Peters.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 4858f0484fSRodney W. Grimes.\" SUCH DAMAGE. 4958f0484fSRodney W. Grimes.\" 5058f0484fSRodney W. Grimes.\" @(#)strtok.3 8.2 (Berkeley) 2/3/94 517f3dea24SPeter Wemm.\" $FreeBSD$ 5258f0484fSRodney W. Grimes.\" 53b1e12513SWes Peters.Dd November 27, 1998 5458f0484fSRodney W. Grimes.Dt STRTOK 3 55a307d598SRuslan Ermilov.Os 5658f0484fSRodney W. Grimes.Sh NAME 57b1e12513SWes Peters.Nm strtok , strtok_r 5858f0484fSRodney W. Grimes.Nd string tokens 5925bb73e0SAlexey Zelkin.Sh LIBRARY 6025bb73e0SAlexey Zelkin.Lb libc 6158f0484fSRodney W. Grimes.Sh SYNOPSIS 6232eef9aeSRuslan Ermilov.In string.h 6358f0484fSRodney W. Grimes.Ft char * 6458f0484fSRodney W. Grimes.Fn strtok "char *str" "const char *sep" 65b1e12513SWes Peters.Ft char * 66b1e12513SWes Peters.Fn strtok_r "char *str" "const char *sep" "char **last" 6758f0484fSRodney W. Grimes.Sh DESCRIPTION 6858f0484fSRodney W. Grimes.Bf -symbolic 696575e6daSRuslan ErmilovThis interface is obsoleted by 706575e6daSRuslan Ermilov.Xr strsep 3 . 7158f0484fSRodney W. Grimes.Ef 7258f0484fSRodney W. Grimes.Pp 7358f0484fSRodney W. GrimesThe 7458f0484fSRodney W. Grimes.Fn strtok 7558f0484fSRodney W. Grimesfunction 7658f0484fSRodney W. Grimesis used to isolate sequential tokens in a null-terminated string, 7758f0484fSRodney W. Grimes.Fa str . 7858f0484fSRodney W. GrimesThese tokens are separated in the string by at least one of the 7958f0484fSRodney W. Grimescharacters in 8058f0484fSRodney W. Grimes.Fa sep . 8158f0484fSRodney W. GrimesThe first time that 8258f0484fSRodney W. Grimes.Fn strtok 8358f0484fSRodney W. Grimesis called, 8458f0484fSRodney W. Grimes.Fa str 8558f0484fSRodney W. Grimesshould be specified; subsequent calls, wishing to obtain further tokens 86555fff21STim Vanderhoekfrom the same string, should pass a null pointer instead. 8758f0484fSRodney W. GrimesThe separator string, 8858f0484fSRodney W. Grimes.Fa sep , 8958f0484fSRodney W. Grimesmust be supplied each time, and may change between calls. 9058f0484fSRodney W. Grimes.Pp 91e4269284SAndrey A. ChernovThe implementation will behave as if no library function calls 92e4269284SAndrey A. Chernov.Fn strtok . 93e4269284SAndrey A. Chernov.Pp 9458f0484fSRodney W. GrimesThe 95b1e12513SWes Peters.Fn strtok_r 96b1e12513SWes Petersfunction is a reentrant version of 9732150a67SJohn Polstra.Fn strtok . 9832150a67SJohn PolstraThe context pointer 99b1e12513SWes Peters.Fa last 100b1e12513SWes Petersmust be provided on each call. 1011fae73b1SRuslan ErmilovThe 102b1e12513SWes Peters.Fn strtok_r 1031fae73b1SRuslan Ermilovfunction 104b1e12513SWes Petersmay also be used to nest two parsing loops within one another, as 10532150a67SJohn Polstralong as separate context pointers are used. 106b1e12513SWes Peters.Pp 107b1e12513SWes PetersThe 10858f0484fSRodney W. Grimes.Fn strtok 109b1e12513SWes Petersand 110b1e12513SWes Peters.Fn strtok_r 111b1e12513SWes Petersfunctions 112b1e12513SWes Petersreturn a pointer to the beginning of each subsequent token in the string, 11358f0484fSRodney W. Grimesafter replacing the token itself with a 11458f0484fSRodney W. Grimes.Dv NUL 11558f0484fSRodney W. Grimescharacter. 116555fff21STim VanderhoekWhen no more tokens remain, a null pointer is returned. 117251c176fSRuslan Ermilov.Sh EXAMPLES 118b1e12513SWes PetersThe following uses 119b7edc980SWes Peters.Fn strtok_r 120b1e12513SWes Petersto parse two strings using separate contexts: 121b1e12513SWes Peters.Bd -literal 122b1e12513SWes Peterschar test[80], blah[80]; 1232704b2cbSGuy Helmerchar *sep = "\e\e/:;=-"; 124b1e12513SWes Peterschar *word, *phrase, *brkt, *brkb; 125b1e12513SWes Peters 1262704b2cbSGuy Helmerstrcpy(test, "This;is.a:test:of=the/string\e\etokenizer-function."); 127b1e12513SWes Peters 128b1e12513SWes Petersfor (word = strtok_r(test, sep, &brkt); 129b1e12513SWes Peters word; 130b1e12513SWes Peters word = strtok_r(NULL, sep, &brkt)) 131b1e12513SWes Peters{ 132b1e12513SWes Peters strcpy(blah, "blah:blat:blab:blag"); 133b1e12513SWes Peters 134b1e12513SWes Peters for (phrase = strtok_r(blah, sep, &brkb); 135b1e12513SWes Peters phrase; 136b1e12513SWes Peters phrase = strtok_r(NULL, sep, &brkb)) 137b1e12513SWes Peters { 1382704b2cbSGuy Helmer printf("So far we're at %s:%s\en", word, phrase); 139b1e12513SWes Peters } 140b1e12513SWes Peters} 141b1e12513SWes Peters.Ed 14258f0484fSRodney W. Grimes.Sh SEE ALSO 14358f0484fSRodney W. Grimes.Xr memchr 3 , 14458f0484fSRodney W. Grimes.Xr strchr 3 , 14558f0484fSRodney W. Grimes.Xr strcspn 3 , 14658f0484fSRodney W. Grimes.Xr strpbrk 3 , 14758f0484fSRodney W. Grimes.Xr strrchr 3 , 14858f0484fSRodney W. Grimes.Xr strsep 3 , 14958f0484fSRodney W. Grimes.Xr strspn 3 , 1502fe3e5cdSTim J. Robbins.Xr strstr 3 , 1512fe3e5cdSTim J. Robbins.Xr wcstok 3 15258f0484fSRodney W. Grimes.Sh STANDARDS 15358f0484fSRodney W. GrimesThe 15458f0484fSRodney W. Grimes.Fn strtok 15558f0484fSRodney W. Grimesfunction 15658f0484fSRodney W. Grimesconforms to 157588a200cSRuslan Ermilov.St -isoC . 15824a0682cSRuslan Ermilov.Sh AUTHORS 15924a0682cSRuslan Ermilov.An Wes Peters , 16024a0682cSRuslan ErmilovSoftweyr LLC: 16124a0682cSRuslan Ermilov.Aq wes@softweyr.com 16224a0682cSRuslan Ermilov.Pp 16324a0682cSRuslan ErmilovBased on the 16424a0682cSRuslan Ermilov.Fx 3.0 16524a0682cSRuslan Ermilovimplementation. 16658f0484fSRodney W. Grimes.Sh BUGS 16758f0484fSRodney W. GrimesThe System V 16858f0484fSRodney W. Grimes.Fn strtok , 16958f0484fSRodney W. Grimesif handed a string containing only delimiter characters, 17058f0484fSRodney W. Grimeswill not alter the next starting point, so that a call to 17158f0484fSRodney W. Grimes.Fn strtok 17258f0484fSRodney W. Grimeswith a different (or empty) delimiter string 17358f0484fSRodney W. Grimesmay return a 17458f0484fSRodney W. Grimes.Pf non- Dv NULL 17558f0484fSRodney W. Grimesvalue. 17658f0484fSRodney W. GrimesSince this implementation always alters the next starting point, 17758f0484fSRodney W. Grimessuch a sequence of calls would always return 17858f0484fSRodney W. Grimes.Dv NULL . 179