From eb995df65a91b6ea27cae1da5a6214362aca7bb8 Mon Sep 17 00:00:00 2001 From: Vinyl Darkscratch Date: Sun, 7 Oct 2018 11:12:33 -0700 Subject: [PATCH] Add case-insensitive search for fonts folder --- src/filesystem.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/filesystem.cpp b/src/filesystem.cpp index 8bf1cf8..4f4e970 100644 --- a/src/filesystem.cpp +++ b/src/filesystem.cpp @@ -465,7 +465,7 @@ struct FontSetsCBData }; static PHYSFS_EnumerateCallbackResult -findFontsFolderCB (void *data, const char *dir, const char *fname) +fontSetEnumCB (void *data, const char *dir, const char *fname) { FontSetsCBData *d = static_cast(data); @@ -503,11 +503,31 @@ findFontsFolderCB (void *data, const char *dir, const char *fname) return PHYSFS_ENUM_OK; } +/* Basically just a case-insensitive search + * for the folder "Fonts"... */ +static PHYSFS_EnumerateCallbackResult +findFontsFolderCB(void *data, const char *, const char *fname) +{ + size_t i = 0; + char buffer[512]; + const char *s = fname; + + while (s && i < sizeof(buffer)) + buffer[i++] = tolower(*s++); + + buffer[i] = '\0'; + + if (strcmp(buffer, "fonts") == 0) + PHYSFS_enumerate(fname, fontSetEnumCB, data); + + return PHYSFS_ENUM_OK; +} + void FileSystem::initFontSets(SharedFontState &sfs) { FontSetsCBData d = { p, &sfs }; - PHYSFS_enumerate("Fonts", findFontsFolderCB, &d); + PHYSFS_enumerate("", findFontsFolderCB, &d); } struct OpenReadEnumData