xref: /plan9-contrib/sys/src/ape/lib/ap/gen/strtok.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1 #include <string.h>
2 
3 #define	N	256
4 
5 char*
6 strtok(char *s, const char *b)
7 {
8 	static char *under_rock;
9 	char map[N], *os;
10 
11 	memset(map, 0, N);
12 	while(*b)
13 		map[*(unsigned char*)b++] = 1;
14 	if(s == 0)
15 		s = under_rock;
16 	while(map[*(unsigned char*)s++])
17 		;
18 	if(*--s == 0)
19 		return 0;
20 	os = s;
21 	while(map[*(unsigned char*)s] == 0)
22 		if(*s++ == 0) {
23 			under_rock = s-1;
24 			return os;
25 		}
26 	*s++ = 0;
27 	under_rock = s;
28 	return os;
29 }
30