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: