46 lines
1.3 KiB
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"
|