summaryrefslogtreecommitdiff
path: root/lib/libc/gen/opendir.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/gen/opendir.c')
-rw-r--r--lib/libc/gen/opendir.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/libc/gen/opendir.c b/lib/libc/gen/opendir.c
index 9625ec690941..b312c89d76a7 100644
--- a/lib/libc/gen/opendir.c
+++ b/lib/libc/gen/opendir.c
@@ -92,6 +92,14 @@ __opendir2(const char *name, int flags)
return __opendir_common(fd, name, flags);
}
+static int
+opendir_compar(const void *p1, const void *p2)
+{
+
+ return (strcmp((*(const struct dirent **)p1)->d_name,
+ (*(const struct dirent **)p2)->d_name));
+}
+
/*
* Common routine for opendir(3), __opendir2(3) and fdopendir(3).
*/
@@ -240,7 +248,8 @@ __opendir_common(int fd, const char *name, int flags)
/*
* This sort must be stable.
*/
- mergesort(dpv, n, sizeof(*dpv), alphasort);
+ mergesort(dpv, n, sizeof(*dpv),
+ opendir_compar);
dpv[n] = NULL;
xp = NULL;