Ver Fonte

A patch from Jon Nelson <jnelson@securepipe.com> to make scandir
sort things as it is supposed to do.

Eric Andersen há 23 anos atrás
pai
commit
099c1958f3
1 ficheiros alterados com 5 adições e 4 exclusões
  1. 5 4
      libc/misc/dirent/scandir.c

+ 5 - 4
libc/misc/dirent/scandir.c

@@ -53,10 +53,7 @@ int scandir(const char *dir, struct dirent ***namelist,
 
     names = malloc(sizeof (struct dirent *) * count);
 
-    closedir(d);
-    d = opendir(dir);
-    if (NULL == d)
-        return -1;
+    rewinddir(d);
 
     while (NULL != (current = readdir(d))) {
         if (NULL == selector || selector(current)) {
@@ -73,6 +70,10 @@ int scandir(const char *dir, struct dirent ***namelist,
     if (pos != count)
         names = realloc(names, sizeof (struct dirent *) * pos);
 
+    if (compar != NULL) {
+	qsort(names, pos, sizeof (struct dirent *), compar);
+    }
+
     *namelist = names;
 
     return pos;