diff options
| author | Andi Gutmans <andi@php.net> | 2000-09-03 18:18:13 +0000 |
|---|---|---|
| committer | Andi Gutmans <andi@php.net> | 2000-09-03 18:18:13 +0000 |
| commit | daf926cf5b3354ec838d2413651ea68259282483 (patch) | |
| tree | 80751227d45a06248f58b69321865009ebb5eae3 /TSRM/tsrm_strtok_r.c | |
| parent | b378ecda3015bd46c679a3cad85751af7227359b (diff) | |
| download | php-git-daf926cf5b3354ec838d2413651ea68259282483.tar.gz | |
- Move virtual cwd to TSRM.
In the least this still doesn't work on Windows.
Diffstat (limited to 'TSRM/tsrm_strtok_r.c')
| -rw-r--r-- | TSRM/tsrm_strtok_r.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/TSRM/tsrm_strtok_r.c b/TSRM/tsrm_strtok_r.c new file mode 100644 index 0000000000..509f563ec0 --- /dev/null +++ b/TSRM/tsrm_strtok_r.c @@ -0,0 +1,62 @@ +#include "tsrm_strtok_r.h" + +#include <stdio.h> + +static inline int in_character_class(char ch, const char *delim) +{ + while (*delim) { + if (*delim == ch) { + return 1; + } + delim++; + } + return 0; +} + +char *tsrm_strtok_r(char *s, const char *delim, char **last) +{ + char *token; + + if (s == NULL) { + s = *last; + } + + while (*s && in_character_class(*s, delim)) { + s++; + } + if (!*s) { + return NULL; + } + + token = s; + + while (*s && !in_character_class(*s, delim)) { + s++; + } + if (!*s) { + *last = s; + } else { + *s = '\0'; + *last = s + 1; + } + return token; +} + +#if 0 + +main() +{ + char foo[] = "/foo/bar//\\barbara"; + char *last; + char *token; + + token = tsrm_strtok_r(foo, "/\\", &last); + while (token) { + printf ("Token = '%s'\n", token); + token = tsrm_strtok_r(NULL, "/\\", &last); + } + + return 0; +} + +#endif |
