Formerly ../stdlib/msort.c.~4~
[kopensolaris-gnu/glibc.git] / stdlib / testsort.c
1 #include <ansidecl.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <stdio.h>
5
6 int
7 DEFUN(compare, (a, b), CONST PTR a AND CONST PTR b)
8 {
9   return strcmp (*(char **) a, *(char **) b);
10 }
11
12 int
13 DEFUN_VOID(main)
14 {
15   static char *lines[500];
16   static size_t lens[500];
17   size_t i;
18
19   i = 0;
20   while (i < 500 && getline (&lines[i], &lens[500], stdin) > 0)
21     ++i;
22   if (i < 500)
23     lines[i] = NULL;
24
25   while (--i > 0)
26     {
27       size_t swap = random () % i;
28       char *line = lines[swap];
29       lines[swap] = lines[i];
30       lines[i] = line;
31     }
32
33   qsort (lines, 500, sizeof (char *), compare);
34
35   for (i = 0; i < 500 && lines[i] != NULL; ++i)
36     fputs (lines[i], stdout);
37
38   return 0;
39 }