diff options
-rw-r--r-- | include/dirent.h | 5 | ||||
-rw-r--r-- | src/dirent/versionsort.c | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/include/dirent.h b/include/dirent.h index cb8cb248..6241220f 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -50,12 +50,17 @@ int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), int #define DTTOIF(x) ((x)<<12) #endif +#ifdef _GNU_SOURCE +int versionsort(const struct dirent **, const struct dirent **); +#endif + #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) #define dirent64 dirent #define readdir64 readdir #define readdir64_r readdir_r #define scandir64 scandir #define alphasort64 alphasort +#define versionsort64 versionsort #define off64_t off_t #define ino64_t ino_t #endif diff --git a/src/dirent/versionsort.c b/src/dirent/versionsort.c new file mode 100644 index 00000000..97696105 --- /dev/null +++ b/src/dirent/versionsort.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include <string.h> +#include <dirent.h> + +int versionsort(const struct dirent **a, const struct dirent **b) +{ + return strverscmp((*a)->d_name, (*b)->d_name); +} |