diff --git a/src/stdlib/Makefile b/src/stdlib/Makefile new file mode 100644 index 0000000..ee4552b --- /dev/null +++ b/src/stdlib/Makefile @@ -0,0 +1 @@ +include ../../Makefile.inc diff --git a/src/stdlib/qsort.c b/src/stdlib/qsort.c new file mode 100644 index 0000000..872c8f8 --- /dev/null +++ b/src/stdlib/qsort.c @@ -0,0 +1,80 @@ +#include +#include +#include +#include "test.h" + +static int scmp(const void *a, const void *b) +{ + return strcmp(*(char **)a, *(char **)b); +} + +static int icmp(const void *a, const void *b) +{ + return *(int*)a - *(int*)b; +} + +/* 26 items -- even */ +static char *s[] = { + "Bob", "Alice", "John", "Ceres", + "Helga", "Drepper", "Emeralda", "Zoran", + "Momo", "Frank", "Pema", "Xavier", + "Yeva", "Gedun", "Irina", "Nono", + "Wiener", "Vincent", "Tsering", "Karnica", + "Lulu", "Quincy", "Osama", "Riley", + "Ursula", "Sam" +}; +/* 23 items -- odd, prime */ +static int n[] = { + 879045, 394, 99405644, 33434, 232323, 4334, 5454, + 343, 45545, 454, 324, 22, 34344, 233, 45345, 343, + 848405, 3434, 3434344, 3535, 93994, 2230404, 4334 +}; + +void test_qsort(void) { + int i; + + qsort(s, sizeof(s)/sizeof(char *), sizeof(char *), scmp); + for (i=0; i 0) { + error("string sort failed at index %d\n", i); + for (i=0; i n[i+1]) { + error("integer sort failed at index %d\n", i); + for (i=0; i