/* See BZ #2126. */ #include #include static int do_test (void) { const char str[] = "axaaba"; char *token; char *cp; char *l; int result = 0; puts ("test strtok"); cp = strdupa (str); printf ("cp = %p, len = %zu\n", cp, strlen (cp)); token = strtok (cp, "ab"); result |= token == NULL || strcmp (token, "x"); printf ("token: %s (%d)\n", token ? token : "NULL", result); token = strtok(0, "ab"); result |= token != NULL; printf ("token: %s (%d)\n", token ? token : "NULL", result); token = strtok(0, "a"); result |= token != NULL; printf ("token: %s (%d)\n", token ? token : "NULL", result); puts ("test strtok_r"); cp = strdupa (str); size_t len = strlen (cp); printf ("cp = %p, len = %zu\n", cp, len); token = strtok_r (cp, "ab", &l); result |= token == NULL || strcmp (token, "x"); printf ("token: %s, next = %p (%d)\n", token ? token : "NULL", l, result); token = strtok_r(0, "ab", &l); result |= token != NULL || l != cp + len; printf ("token: %s, next = %p (%d)\n", token ? token : "NULL", l, result); token = strtok_r(0, "a", &l); result |= token != NULL || l != cp + len; printf ("token: %s, next = %p (%d)\n", token ? token : "NULL", l, result); return result; } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"