From 4cd6a4a5d7e49d54d53dcf4a6f3393d50bd88e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gwenol=C3=A9=20Beauchesne?= Date: Wed, 4 Jun 2003 18:44:09 +0000 Subject: Import dietlibc 0.22 + other fixes for AMD64 --- mdk-stage1/dietlibc/libcruft/scandir.c | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 mdk-stage1/dietlibc/libcruft/scandir.c (limited to 'mdk-stage1/dietlibc/libcruft/scandir.c') diff --git a/mdk-stage1/dietlibc/libcruft/scandir.c b/mdk-stage1/dietlibc/libcruft/scandir.c new file mode 100644 index 000000000..fac7eaa7f --- /dev/null +++ b/mdk-stage1/dietlibc/libcruft/scandir.c @@ -0,0 +1,47 @@ +#include +#include +#include + +int scandir(const char *dir, struct dirent ***namelist, + int (*select)(const struct dirent *), + int (*compar)(const struct dirent **, const struct dirent **)) { + DIR* d; + struct dirent *D; + int num=0; + if (!(d=opendir(dir))) + return -1; + *namelist=0; + while ((D=readdir(d))) { + if (select==0 || select(D)) { + struct dirent **tmp; + ++num; +/* printf("realloc %p,%d -> ",*namelist,num*sizeof(struct dirent**)); */ + if (!(tmp=realloc(*namelist,num*sizeof(struct dirent**))) || + !(tmp[num-1]=malloc(sizeof(struct dirent)))) { + int i; + for (i=0; id_name,D->d_name,0,NAME_MAX); + *namelist=tmp; +/* printf("%p; tmp[num-1(%d)]=%p\n",*namelist,num-1,tmp[num-1]); */ + } + } + closedir(d); +#if 0 + { + int i; + puts("pre-qsort:\n"); + for (i=0; id_name); + } + puts("post-qsort:\n"); + } +#endif +// qsort(&(*namelist)[0],num,sizeof(struct dirent*),(int (*)(const void*,const void*))(compar)); + if (compar) + qsort(*namelist,num,sizeof(struct dirent*),(int (*)(const void*,const void*))(compar)); + return num; +} -- cgit v1.2.1