glibc/string/bug-strtok1.c

46 lines
1.3 KiB
C

/* See BZ #2126. */
#include <string.h>
#include <stdio.h>
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"