chiark / gitweb /
eglibc (2.11.3-4+deb6u3) squeeze-lts; urgency=medium
[eglibc.git] / string / bug-strtok1.c
1 /* See BZ #2126.  */
2 #include <string.h>
3 #include <stdio.h>
4
5 static int
6 do_test (void)
7 {
8   const char str[] = "axaaba";
9   char *token;
10   char *cp;
11   char *l;
12   int result = 0;
13
14   puts ("test strtok");
15   cp = strdupa (str);
16   printf ("cp = %p, len = %zu\n", cp, strlen (cp));
17   token = strtok (cp, "ab");
18   result |= token == NULL || strcmp (token, "x");
19   printf ("token: %s (%d)\n", token ? token : "NULL", result);
20   token = strtok(0, "ab");
21   result |= token != NULL;
22   printf ("token: %s (%d)\n", token ? token : "NULL", result);
23   token = strtok(0, "a");
24   result |= token != NULL;
25   printf ("token: %s (%d)\n", token ? token : "NULL", result);
26
27   puts ("test strtok_r");
28   cp = strdupa (str);
29   size_t len = strlen (cp);
30   printf ("cp = %p, len = %zu\n", cp, len);
31   token = strtok_r (cp, "ab", &l);
32   result |= token == NULL || strcmp (token, "x");
33   printf ("token: %s, next = %p (%d)\n", token ? token : "NULL", l, result);
34   token = strtok_r(0, "ab", &l);
35   result |= token != NULL || l != cp + len;
36   printf ("token: %s, next = %p (%d)\n", token ? token : "NULL", l, result);
37   token = strtok_r(0, "a", &l);
38   result |= token != NULL || l != cp + len;
39   printf ("token: %s,  next = %p (%d)\n", token ? token : "NULL", l, result);
40
41   return result;
42 }
43
44 #define TEST_FUNCTION do_test ()
45 #include "../test-skeleton.c"