|
|
1.1 ! root 1: /*LINTLIBRARY*/ ! 2: /* ! 3: * uses strpbrk and strspn to break string into tokens on ! 4: * sequentially subsequent calls. returns NULL at end. ! 5: * `subsequent' calls are calls with first argument NULL. ! 6: */ ! 7: ! 8: #define NULL (char *) 0 ! 9: ! 10: char * ! 11: strtok(string, sepset) ! 12: char *string, *sepset; ! 13: { ! 14: int strspn(); ! 15: char *strpbrk(); ! 16: register char *p, *q, *r; ! 17: static char *savept; ! 18: ! 19: if(string == NULL) ! 20: p = savept; ! 21: else ! 22: p = string; ! 23: if(p == 0) ! 24: return(NULL); ! 25: q = p + strspn(p, sepset); ! 26: if(*q == '\0') ! 27: return(NULL); ! 28: if((r = strpbrk(q, sepset)) == NULL) ! 29: savept = 0; ! 30: else { ! 31: *r = '\0'; ! 32: p = r + strspn(r, sepset); ! 33: savept = (p > r)? ++p: ++r; ! 34: } ! 35: return(q); ! 36: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.