summaryrefslogtreecommitdiff
path: root/apps/filetree.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/filetree.c')
-rw-r--r--apps/filetree.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/apps/filetree.c b/apps/filetree.c
index fc5e4d3934..0ceb5c0941 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -45,6 +45,7 @@
45#include "cuesheet.h" 45#include "cuesheet.h"
46#include "filetree.h" 46#include "filetree.h"
47#include "misc.h" 47#include "misc.h"
48#include "strnatcmp.h"
48#ifdef HAVE_LCD_BITMAP 49#ifdef HAVE_LCD_BITMAP
49#include "keyboard.h" 50#include "keyboard.h"
50#endif 51#endif
@@ -242,12 +243,26 @@ static int compare(const void* p1, const void* p2)
242 243
243 case SORT_ALPHA: 244 case SORT_ALPHA:
244 case SORT_ALPHA_REVERSED: 245 case SORT_ALPHA_REVERSED:
246 {
245 if (global_settings.sort_case) 247 if (global_settings.sort_case)
246 return strncmp(e1->name, e2->name, MAX_PATH) 248 {
247 * (criteria == SORT_ALPHA_REVERSED ? -1 : 1); 249 if (global_settings.interpret_numbers == SORT_INTERPRET_AS_NUMBER)
250 return strnatcmp(e1->name, e2->name)
251 * (criteria == SORT_ALPHA_REVERSED ? -1 : 1);
252 else
253 return strncmp(e1->name, e2->name, MAX_PATH)
254 * (criteria == SORT_ALPHA_REVERSED ? -1 : 1);
255 }
248 else 256 else
249 return strncasecmp(e1->name, e2->name, MAX_PATH) 257 {
250 * (criteria == SORT_ALPHA_REVERSED ? -1 : 1); 258 if (global_settings.interpret_numbers == SORT_INTERPRET_AS_NUMBER)
259 return strnatcasecmp(e1->name, e2->name)
260 * (criteria == SORT_ALPHA_REVERSED ? -1 : 1);
261 else
262 return strncasecmp(e1->name, e2->name, MAX_PATH)
263 * (criteria == SORT_ALPHA_REVERSED ? -1 : 1);
264 }
265 }
251 266
252 } 267 }
253 return 0; /* never reached */ 268 return 0; /* never reached */