Annotation of embedaddon/php/TSRM/tsrm_strtok_r.c, revision 1.1.1.1

1.1       misho       1: #include <stdio.h>
                      2: 
                      3: #include "tsrm_config_common.h"
                      4: #include "tsrm_strtok_r.h"
                      5: 
                      6: static inline int in_character_class(char ch, const char *delim)
                      7: {
                      8:        while (*delim) {
                      9:                if (*delim == ch) {
                     10:                        return 1;
                     11:                }
                     12:                delim++;
                     13:        }
                     14:        return 0;
                     15: }
                     16: 
                     17: char *tsrm_strtok_r(char *s, const char *delim, char **last)
                     18: {
                     19:        char *token;
                     20: 
                     21:        if (s == NULL) {
                     22:                s = *last;
                     23:        }
                     24: 
                     25:        while (*s && in_character_class(*s, delim)) {
                     26:                s++;
                     27:        }
                     28:        if (!*s) {
                     29:                return NULL;
                     30:        }
                     31: 
                     32:        token = s;
                     33: 
                     34:        while (*s && !in_character_class(*s, delim)) {
                     35:                s++;
                     36:        }
                     37:        if (!*s) {
                     38:                *last = s;
                     39:        } else {
                     40:                *s = '\0';
                     41:                *last = s + 1;
                     42:        }
                     43:        return token;
                     44: }
                     45: 
                     46: #if 0
                     47: 
                     48: main()
                     49: {
                     50:        char foo[] = "/foo/bar//\\barbara";
                     51:        char *last;
                     52:        char *token;
                     53: 
                     54:        token = tsrm_strtok_r(foo, "/\\", &last);
                     55:        while (token) {
                     56:                printf ("Token = '%s'\n", token);
                     57:                token = tsrm_strtok_r(NULL, "/\\", &last);
                     58:        }
                     59:        
                     60:        return 0;
                     61: }
                     62: 
                     63: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>