- static char *old = NULL;
- char *p;
- size_t len;
- size_t remain;
-
- if (s1 != NULL) old = s1;
- if (old == NULL) return (NULL);
- p = old;
- len = strspn(p, s2);
- remain = strlen(p);
- if (remain <= len) { old = NULL; return (NULL); }
- p += len;
- len = strcspn(p, s2);
- remain = strlen(p);
- if (remain <= len) { old = NULL; return (p); }
- *(p + len) = '\0';
- old = p + len + 1;
- return (p);
+ char s[] = "_a_bc__d_";
+ TESTCASE( strtok( s, "_" ) == &s[1] );
+ TESTCASE( s[1] == 'a' );
+ TESTCASE( s[2] == '\0' );
+ TESTCASE( strtok( NULL, "_" ) == &s[3] );
+ TESTCASE( s[3] == 'b' );
+ TESTCASE( s[4] == 'c' );
+ TESTCASE( s[5] == '\0' );
+ TESTCASE( strtok( NULL, "_" ) == &s[7] );
+ TESTCASE( s[6] == '_' );
+ TESTCASE( s[7] == 'd' );
+ TESTCASE( s[8] == '\0' );
+ TESTCASE( strtok( NULL, "_" ) == NULL );
+ strcpy( s, "ab_cd" );
+ TESTCASE( strtok( s, "_" ) == &s[0] );
+ TESTCASE( s[0] == 'a' );
+ TESTCASE( s[1] == 'b' );
+ TESTCASE( s[2] == '\0' );
+ TESTCASE( strtok( NULL, "_" ) == &s[3] );
+ TESTCASE( s[3] == 'c' );
+ TESTCASE( s[4] == 'd' );
+ TESTCASE( s[5] == '\0' );
+ TESTCASE( strtok( NULL, "_" ) == NULL );
+ return TEST_RESULTS;