Annotation of researchv9/libc/gen/strtok.c, revision 1.1

1.1     ! root        1: /*     @(#)strtok.c    1.2     */
        !             2: /*     3.0 SID #       1.2     */
        !             3: /*LINTLIBRARY*/
        !             4: /*
        !             5:  * uses strpbrk and strspn to break string into tokens on
        !             6:  * sequentially subsequent calls.  returns NULL when no
        !             7:  * non-separator characters remain.
        !             8:  * `subsequent' calls are calls with first argument NULL.
        !             9:  */
        !            10: 
        !            11: #define        NULL    (char*)0
        !            12: 
        !            13: extern int strspn();
        !            14: extern char *strpbrk();
        !            15: 
        !            16: char *
        !            17: strtok(string, sepset)
        !            18: char   *string, *sepset;
        !            19: {
        !            20:        register char   *p, *q, *r;
        !            21:        static char     *savept;
        !            22: 
        !            23:        /*first or subsequent call*/
        !            24:        p = (string == NULL)? savept: string;
        !            25: 
        !            26:        if(p == 0)              /* return if no tokens remaining */
        !            27:                return(NULL);
        !            28: 
        !            29:        q = p + strspn(p, sepset);      /* skip leading separators */
        !            30: 
        !            31:        if(*q == '\0')          /* return if no tokens remaining */
        !            32:                return(NULL);
        !            33: 
        !            34:        if((r = strpbrk(q, sepset)) == NULL)    /* move past token */
        !            35:                savept = 0;     /* indicate this is last token */
        !            36:        else {
        !            37:                *r = '\0';
        !            38:                savept = ++r;
        !            39:        }
        !            40:        return(q);
        !            41: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.