diff options
Diffstat (limited to 'benchtests')
-rw-r--r-- | benchtests/bench-strtok.c | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/benchtests/bench-strtok.c b/benchtests/bench-strtok.c index eeb798f015..41e0e45db8 100644 --- a/benchtests/bench-strtok.c +++ b/benchtests/bench-strtok.c @@ -20,13 +20,41 @@ #define TEST_NAME "strtok" #include "bench-string.h" -#define STRTOK strtok_string -#include <string/strtok.c> +char * +oldstrtok (char *s, const char *delim) +{ + static char *olds; + char *token; + + if (s == NULL) + s = olds; + + /* Scan leading delimiters. */ + s += strspn (s, delim); + if (*s == '\0') + { + olds = s; + return NULL; + } + /* Find the end of the token. */ + token = s; + s = strpbrk (token, delim); + if (s == NULL) + /* This token finishes the string. */ + olds = __rawmemchr (token, '\0'); + else + { + /* Terminate the token and make OLDS point past it. */ + *s = '\0'; + olds = s + 1; + } + return token; +} typedef char *(*proto_t) (const char *, const char *); -IMPL (strtok_string, 0) +IMPL (oldstrtok, 0) IMPL (strtok, 1) static void |