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 ("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  #include <support/test-driver.c>