Blame string/bug-strtok1.c

Packit 6c4009
/* See BZ #2126.  */
Packit 6c4009
#include <string.h>
Packit 6c4009
#include <stdio.h>
Packit 6c4009
Packit 6c4009
int
Packit 6c4009
do_test (void)
Packit 6c4009
{
Packit 6c4009
  const char str[] = "axaaba";
Packit 6c4009
  char *token;
Packit 6c4009
  char *cp;
Packit 6c4009
  char *l;
Packit 6c4009
  int result = 0;
Packit 6c4009
Packit 6c4009
  puts ("test strtok");
Packit 6c4009
  cp = strdupa (str);
Packit 6c4009
  printf ("cp = %p, len = %zu\n", cp, strlen (cp));
Packit 6c4009
  token = strtok (cp, "ab");
Packit 6c4009
  result |= token == NULL || strcmp (token, "x");
Packit 6c4009
  printf ("token: %s (%d)\n", token ? token : "NULL", result);
Packit 6c4009
  token = strtok(0, "ab");
Packit 6c4009
  result |= token != NULL;
Packit 6c4009
  printf ("token: %s (%d)\n", token ? token : "NULL", result);
Packit 6c4009
  token = strtok(0, "a");
Packit 6c4009
  result |= token != NULL;
Packit 6c4009
  printf ("token: %s (%d)\n", token ? token : "NULL", result);
Packit 6c4009
Packit 6c4009
  puts ("test strtok_r");
Packit 6c4009
  cp = strdupa (str);
Packit 6c4009
  size_t len = strlen (cp);
Packit 6c4009
  printf ("cp = %p, len = %zu\n", cp, len);
Packit 6c4009
  token = strtok_r (cp, "ab", &l);
Packit 6c4009
  result |= token == NULL || strcmp (token, "x");
Packit 6c4009
  printf ("token: %s, next = %p (%d)\n", token ? token : "NULL", l, result);
Packit 6c4009
  token = strtok_r(0, "ab", &l);
Packit 6c4009
  result |= token != NULL || l != cp + len;
Packit 6c4009
  printf ("token: %s, next = %p (%d)\n", token ? token : "NULL", l, result);
Packit 6c4009
  token = strtok_r(0, "a", &l);
Packit 6c4009
  result |= token != NULL || l != cp + len;
Packit 6c4009
  printf ("token: %s,  next = %p (%d)\n", token ? token : "NULL", l, result);
Packit 6c4009
Packit 6c4009
  return result;
Packit 6c4009
}
Packit 6c4009
Packit 6c4009
#include <support/test-driver.c>