query the filesystem cache to access the same filename case on disk as in the cache (instead of matching insensitively then using lower case for the actual access, which was resulting in issues on eg linux).

this should fix the case issues on freecs's wads. note that the basedir and gamedirs are still not case insensitive, and it requires fs_cache enabled (which may still get temp-disabled following file writes, which I still need to fix, so downloads might still break things but fs_restart;vid_reload should fix them in that case).

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5164 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2017-11-11 20:17:52 +00:00
parent 1206244ebb
commit c17a368486

View file

@ -1208,8 +1208,13 @@ int FS_FLocateFile(const char *filename, unsigned int lflags, flocation_t *loc)
if (com_fs_cache.ival && !com_fschanged && !(lflags & FSLF_IGNOREPURE))
{
pf = Hash_GetInsensitive(&filesystemhash, filename);
if (!pf)
bucket_t *b = Hash_GetInsensitiveBucket(&filesystemhash, filename);
if (b)
{
pf = b->data;
filename = b->key.string; //update the filename to use the correct file case...
}
else
goto fail;
}
else