Files
Arquivotheca.SunOS-4.1.4/lib/libc/gen/common/strtok.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

44 lines
956 B
C

#if !defined(lint) && defined(SCCSIDS)
static char sccsid[] = "@(#)strtok.c 1.1 94/10/31 SMI"; /* from S5R2 1.2 */
#endif
/*LINTLIBRARY*/
/*
* uses strpbrk and strspn to break string into tokens on
* sequentially subsequent calls. returns NULL when no
* non-separator characters remain.
* `subsequent' calls are calls with first argument NULL.
*/
#define NULL (char*)0
extern int strspn();
extern char *strpbrk();
char *
strtok(string, sepset)
char *string, *sepset;
{
register char *p, *q, *r;
static char *savept;
/*first or subsequent call*/
p = (string == NULL)? savept: string;
if(p == 0) /* return if no tokens remaining */
return(NULL);
q = p + strspn(p, sepset); /* skip leading separators */
if(*q == '\0') /* return if no tokens remaining */
return(NULL);
if((r = strpbrk(q, sepset)) == NULL) /* move past token */
savept = 0; /* indicate this is last token */
else {
*r = '\0';
savept = ++r;
}
return(q);
}