Add case-insensitive search for fonts folder

This commit is contained in:
Vinyl Darkscratch 2018-10-07 11:12:33 -07:00
parent 69f32df495
commit eb995df65a
1 changed files with 22 additions and 2 deletions

View File

@ -465,7 +465,7 @@ struct FontSetsCBData
}; };
static PHYSFS_EnumerateCallbackResult 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<FontSetsCBData*>(data); FontSetsCBData *d = static_cast<FontSetsCBData*>(data);
@ -503,11 +503,31 @@ findFontsFolderCB (void *data, const char *dir, const char *fname)
return PHYSFS_ENUM_OK; 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) void FileSystem::initFontSets(SharedFontState &sfs)
{ {
FontSetsCBData d = { p, &sfs }; FontSetsCBData d = { p, &sfs };
PHYSFS_enumerate("Fonts", findFontsFolderCB, &d); PHYSFS_enumerate("", findFontsFolderCB, &d);
} }
struct OpenReadEnumData struct OpenReadEnumData