2000-05-05 Andreas Jaeger <aj@suse.de>
[kopensolaris-gnu/glibc.git] / misc / tst-tsearch.c
index eca11cb..06f743b 100644 (file)
@@ -1,5 +1,5 @@
 /* Test program for tsearch et al.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#define _GNU_SOURCE    1
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE   1
+#endif
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <search.h>
 
 #define SEED 0
@@ -112,7 +115,7 @@ walk_action (const void *nodep, const VISIT which, const int depth)
       if (depths[key] != depth)
        {
          fputs ("Depth for one element is not constant during tree walk.\n",
-                stderr);
+                stdout);
        }
     }
 }
@@ -129,7 +132,7 @@ walk_tree (void *root, int expected_count)
   for (i = 0; i < expected_count; ++i)
     if (z[i] != 1)
       {
-       fputs ("Node was not visited.\n", stderr);
+       fputs ("Node was not visited.\n", stdout);
        error = 1;
       }
 
@@ -139,7 +142,7 @@ walk_tree (void *root, int expected_count)
   if (max_depth > expected_count)
 #endif
     {
-      fputs ("Depth too large during tree walk.\n", stderr);
+      fputs ("Depth too large during tree walk.\n", stdout);
       error = 1;
     }
 }
@@ -194,17 +197,17 @@ mangle_tree (enum order how, enum action what, void **root, int lag)
        case build:
          if (i < SIZE)
            {
-             if (tfind (x + j, (const void **) root, cmp_fn) != NULL)
+             if (tfind (x + j, (void *const *) root, cmp_fn) != NULL)
                {
-                 fputs ("Found element which is not in tree yet.\n", stderr);
+                 fputs ("Found element which is not in tree yet.\n", stdout);
                  error = 1;
                }
              elem = tsearch (x + j, root, cmp_fn);
              if (elem == 0
-                 || tfind (x + j, (const void **) root, cmp_fn) == NULL)
+                 || tfind (x + j, (void *const *) root, cmp_fn) == NULL)
                {
                  fputs ("Couldn't find element after it was added.\n",
-                        stderr);
+                        stdout);
                  error = 1;
                }
            }
@@ -216,18 +219,18 @@ mangle_tree (enum order how, enum action what, void **root, int lag)
          /* fall through */
 
        case delete:
-         elem = tfind (x + j, (const void **) root, cmp_fn);
+         elem = tfind (x + j, (void *const *) root, cmp_fn);
          if (elem == NULL || tdelete (x + j, root, cmp_fn) == NULL)
            {
-             fputs ("Error deleting element.\n", stderr);
+             fputs ("Error deleting element.\n", stdout);
              error = 1;
            }
          break;
 
        case find:
-         if (tfind (x + j, (const void **) root, cmp_fn) == NULL)
+         if (tfind (x + j, (void *const *) root, cmp_fn) == NULL)
            {
-             fputs ("Couldn't find element after it was added.\n", stderr);
+             fputs ("Couldn't find element after it was added.\n", stdout);
              error = 1;
            }
          break;
@@ -241,7 +244,7 @@ int
 main (int argc, char **argv)
 {
   int total_error = 0;
-  static int state[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
+  static char state[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
   void *root = NULL;
   int i, j;
 
@@ -252,10 +255,10 @@ main (int argc, char **argv)
 
   /* Do this loop several times to get different permutations for the
      random case.  */
-  fputs ("Series I\n", stderr);
+  fputs ("Series I\n", stdout);
   for (i = 0; i < PASSES; ++i)
     {
-      fprintf (stderr, "Pass %d... ", i + 1);
+      fprintf (stdout, "Pass %d... ", i + 1);
       fflush (stdout);
       error = 0;
 
@@ -301,14 +304,14 @@ main (int argc, char **argv)
          mangle_tree (randomorder, build_and_del, &root, j);
        }
 
-      fputs (error ? " failed!\n" : " ok.\n", stderr);
+      fputs (error ? " failed!\n" : " ok.\n", stdout);
       total_error |= error;
     }
 
-  fputs ("Series II\n", stderr);
+  fputs ("Series II\n", stdout);
   for (i = 1; i < SIZE; i *= 2)
     {
-      fprintf (stderr, "For size %d... ", i);
+      fprintf (stdout, "For size %d... ", i);
       fflush (stdout);
       error = 0;
 
@@ -321,7 +324,7 @@ main (int argc, char **argv)
       mangle_tree (ascending, build_and_del, &root, i);
       mangle_tree (descending, build_and_del, &root, i);
 
-      fputs (error ? " failed!\n" : " ok.\n", stderr);
+      fputs (error ? " failed!\n" : " ok.\n", stdout);
       total_error |= error;
     }