diff options
-rw-r--r-- | test/stdlib/.cvsignore | 5 | ||||
-rw-r--r-- | test/stdlib/Makefile | 37 | ||||
-rw-r--r-- | test/stdlib/qsort.c | 46 |
3 files changed, 87 insertions, 1 deletions
diff --git a/test/stdlib/.cvsignore b/test/stdlib/.cvsignore index 89fe8faa4..253c81051 100644 --- a/test/stdlib/.cvsignore +++ b/test/stdlib/.cvsignore @@ -9,3 +9,8 @@ teststrtol.out teststrtol_glibc.out mallocbug mallocbug_glibc +qsort +qsort_glibc +qsort.out +qsort_glibc.out + diff --git a/test/stdlib/Makefile b/test/stdlib/Makefile index 1a054fbe3..43b942f99 100644 --- a/test/stdlib/Makefile +++ b/test/stdlib/Makefile @@ -4,8 +4,9 @@ include $(TESTDIR)/Rules.mak TARGETS=testmalloc testmalloc_glibc -TARGETS=mallocbug mallocbug_glibc +TARGETS+=mallocbug mallocbug_glibc TARGETS+=teststrtol teststrtol_glibc teststrtol_diff +TARGETS+=qsort qsort_glibc qsort_diff all: $(TARGETS) @@ -109,6 +110,40 @@ teststrtol_diff: teststrtol_glibc teststrtol -diff -u teststrtol_glibc.out teststrtol.out -@ echo " " +qsort: qsort.c Makefile $(TESTDIR)/Config $(TESTDIR)/Rules.mak $(TESTCC) + -@ echo "-------" + -@ echo " " + -@ echo "Compiling vs uClibc: " + -@ echo " " + $(TESTCC) $(CFLAGS) -c $< -o $@.o + $(TESTCC) $(LDFLAGS) $@.o -o $@ $(EXTRA_LIBS) + $(STRIPTOOL) -x -R .note -R .comment $@ + -ldd $@ + ls $(LSFLAGS) $@ + -./$@ > $@.out + -@ echo " " + +qsort_glibc: qsort.c Makefile + -@ echo "-------" + -@ echo " " + -@ echo "Compiling vs GNU libc: " + -@ echo " " + $(CC) $(CFLAGS) -c $< -o $@.o + $(CC) $(LDFLAGS) $@.o -o $@ + $(STRIPTOOL) -x -R .note -R .comment $@ + -ldd $@ + ls -sh $@ + -./$@ > $@.out + -@ echo " " + +qsort_diff: qsort_glibc qsort + -@ echo "-------" + -@ echo " " + -@ echo "Diffing output: " + -@ echo " " + -diff -u qsort_glibc.out qsort.out + -@ echo " " + clean: rm -f *.[oa] *~ core $(TARGETS) teststrtol_glibc.out teststrtol.out diff --git a/test/stdlib/qsort.c b/test/stdlib/qsort.c new file mode 100644 index 000000000..50464979e --- /dev/null +++ b/test/stdlib/qsort.c @@ -0,0 +1,46 @@ +#include <stdio.h> +#include <dirent.h> +#include <stdlib.h> + +int select_files(const struct dirent *dirbuf) +{ + if (dirbuf->d_name[0] == '.') + return 0; + else + return 1; +} + + +int main(void) +{ + struct dirent **array; + struct dirent *dirbuf; + + int i, numdir; + + chdir("/"); + numdir = scandir(".", &array, select_files, NULL); + printf("\nGot %d entries from scandir().\n", numdir); + for (i = 0; i < numdir; ++i) { + dirbuf = array[i]; + printf("[%d] %s\n", i, dirbuf->d_name); + free(array[i]); + } + free(array); + numdir = scandir(".", &array, select_files, alphasort); + printf("\nGot %d entries from scandir() using alphasort().\n", numdir); + for (i = 0; i < numdir; ++i) { + dirbuf = array[i]; + printf("[%d] %s\n", i, dirbuf->d_name); + } + printf("\nCalling qsort()\n", numdir); + qsort(array, numdir, sizeof(struct dirent *), alphasort); + for (i = 0; i < numdir; ++i) { + dirbuf = array[i]; + printf("[%d] %s\n", i, dirbuf->d_name); + free(array[i]); + } + free(array); + return(0); +} + |