blob: 33d0d68519c55cd693fef07da9b3927f9252e911 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#include <stddef.h>
#include <string.h>
char *strtok(char *restrict s, const char *restrict sep)
{
static _Thread_local char *state = NULL;
if (s != NULL) {
state = s;
}
if (state == NULL) {
return NULL;
}
char *token = state;
while (*token && strchr(sep, *token)) {
token++;
}
if (*token == '\0') {
state = NULL;
return NULL;
}
char *start = token;
while (*token && strchr(sep, *token) == NULL) {
token++;
}
if (*token) {
*token = '\0';
state = token + 1;
} else {
state = NULL;
}
return start;
}
|