1 | /* See BZ #2126. */ |
2 | #include <string.h> |
3 | #include <stdio.h> |
4 | |
5 | 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 (s: "test strtok" ); |
15 | cp = strdupa (str); |
16 | printf (format: "cp = %p, len = %zu\n" , cp, strlen (cp)); |
17 | token = strtok (s: cp, delim: "ab" ); |
18 | result |= token == NULL || strcmp (token, "x" ); |
19 | printf (format: "token: %s (%d)\n" , token ? token : "NULL" , result); |
20 | token = strtok(s: 0, delim: "ab" ); |
21 | result |= token != NULL; |
22 | printf (format: "token: %s (%d)\n" , token ? token : "NULL" , result); |
23 | token = strtok(s: 0, delim: "a" ); |
24 | result |= token != NULL; |
25 | printf (format: "token: %s (%d)\n" , token ? token : "NULL" , result); |
26 | |
27 | puts (s: "test strtok_r" ); |
28 | cp = strdupa (str); |
29 | size_t len = strlen (cp); |
30 | printf (format: "cp = %p, len = %zu\n" , cp, len); |
31 | token = strtok_r (s: cp, delim: "ab" , save_ptr: &l); |
32 | result |= token == NULL || strcmp (token, "x" ); |
33 | printf (format: "token: %s, next = %p (%d)\n" , token ? token : "NULL" , l, result); |
34 | token = strtok_r(s: 0, delim: "ab" , save_ptr: &l); |
35 | result |= token != NULL || l != cp + len; |
36 | printf (format: "token: %s, next = %p (%d)\n" , token ? token : "NULL" , l, result); |
37 | token = strtok_r(s: 0, delim: "a" , save_ptr: &l); |
38 | result |= token != NULL || l != cp + len; |
39 | printf (format: "token: %s, next = %p (%d)\n" , token ? token : "NULL" , l, result); |
40 | |
41 | return result; |
42 | } |
43 | |
44 | #include <support/test-driver.c> |
45 | |