bug-strtok1.c 1.3 KB

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