From c7781e272c951e087a41f4c50e40ceb8565e27d1 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 22 Jun 2015 13:54:09 +0200 Subject: [PATCH] Make sorting case insensitive --- src/windows/loadsave.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/windows/loadsave.c b/src/windows/loadsave.c index 9cde2098bd..6764d27145 100644 --- a/src/windows/loadsave.c +++ b/src/windows/loadsave.c @@ -565,6 +565,15 @@ static void window_loadsave_scrollpaint() } } +static int strcicmp(char const *a, char const *b) +{ + for (;; a++, b++) { + int d = tolower(*a) - tolower(*b); + if (d != 0 || !*a) + return d; + } +} + static int list_item_sort(const void *a, const void *b) { const loadsave_list_item *itemA = (loadsave_list_item*)a; @@ -575,9 +584,9 @@ static int list_item_sort(const void *a, const void *b) switch (gConfigGeneral.load_save_sort){ case SORT_NAME_ASCENDING: - return strcmp(itemA->name, itemB->name); + return strcicmp(itemA->name, itemB->name); case SORT_NAME_DESCENDING: - return -strcmp(itemA->name, itemB->name); + return -strcicmp(itemA->name, itemB->name); case SORT_DATE_DESCENDING: return (int) -difftime(itemA->date_modified, itemB->date_modified); case SORT_DATE_ASCENDING: