added natural sort
This commit is contained in:
parent
d4a4f5ebb2
commit
6617b3fe4e
@ -39,6 +39,7 @@ void get_dir_content(char *path, unsigned long *dir_file_count, file *dir_conten
|
|||||||
scandir(path, &entry, skip_hidden_files, alphasort);
|
scandir(path, &entry, skip_hidden_files, alphasort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unsigned long i = 0;
|
unsigned long i = 0;
|
||||||
for (i = 0; i < *dir_file_count; i++ ) {
|
for (i = 0; i < *dir_file_count; i++ ) {
|
||||||
if (entry[i]->d_name[0] == '.' && !(file_modifiers & FILE_MODIFIERS_HIDDEN_FILES)) {
|
if (entry[i]->d_name[0] == '.' && !(file_modifiers & FILE_MODIFIERS_HIDDEN_FILES)) {
|
||||||
@ -99,6 +100,7 @@ void get_dir_content(char *path, unsigned long *dir_file_count, file *dir_conten
|
|||||||
free(file);
|
free(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
qsort(dir_content, *dir_file_count, sizeof(file), sort_natural);
|
||||||
|
|
||||||
for (i = 0; i < *dir_file_count; i++) {
|
for (i = 0; i < *dir_file_count; i++) {
|
||||||
free(entry[i]);
|
free(entry[i]);
|
||||||
|
15
sorting.c
15
sorting.c
@ -1,5 +1,6 @@
|
|||||||
#include <curses.h>
|
#include <curses.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
#include <strings.h>
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
|
|
||||||
extern unsigned int settings;
|
extern unsigned int settings;
|
||||||
@ -12,3 +13,17 @@ int skip_hidden_files(const struct dirent *entry){
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sort_natural(const void *file0, const void *file1){
|
||||||
|
unsigned char file_type0 = ((file*)file0)->file_type;
|
||||||
|
unsigned char file_type1 = ((file*)file1)->file_type;
|
||||||
|
if (file_type0 > file_type1) {
|
||||||
|
return 1;
|
||||||
|
} else if (file_type0 < file_type1) {
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
char *file_name0 = ((file*)file0)->file_name;
|
||||||
|
char *file_name1 = ((file*)file1)->file_name;
|
||||||
|
return strcasecmp(file_name0, file_name1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user