K2.6 patches and update.
[tomato.git] / release / src / router / php / TSRM / tsrm_strtok_r.c
blobe9ad26a7ac2975c7de06fa76f0169bedad846097
1 #include <stdio.h>
3 #include "tsrm_config_common.h"
4 #include "tsrm_strtok_r.h"
6 static inline int in_character_class(char ch, const char *delim)
8 while (*delim) {
9 if (*delim == ch) {
10 return 1;
12 delim++;
14 return 0;
17 char *tsrm_strtok_r(char *s, const char *delim, char **last)
19 char *token;
21 if (s == NULL) {
22 s = *last;
25 while (*s && in_character_class(*s, delim)) {
26 s++;
28 if (!*s) {
29 return NULL;
32 token = s;
34 while (*s && !in_character_class(*s, delim)) {
35 s++;
37 if (!*s) {
38 *last = s;
39 } else {
40 *s = '\0';
41 *last = s + 1;
43 return token;
46 #if 0
48 main()
50 char foo[] = "/foo/bar//\\barbara";
51 char *last;
52 char *token;
54 token = tsrm_strtok_r(foo, "/\\", &last);
55 while (token) {
56 printf ("Token = '%s'\n", token);
57 token = tsrm_strtok_r(NULL, "/\\", &last);
60 return 0;
63 #endif