mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-24 21:11:52 +00:00
fix file names in mounted directories.
This used the normalized file name for access which only works on case insensitive file systems and only as long as no character gets mangled by Unicode normalization.
This commit is contained in:
parent
79d9217340
commit
cfb4e4f105
1 changed files with 7 additions and 1 deletions
|
@ -128,9 +128,15 @@ int FDirectory::AddDirectory(const char *dirpath, LumpFilterInfo* filter, FileSy
|
|||
Printf(FSMessageLevel::Warning, "%s is larger than 2GB and will be ignored\n", entry.FilePath.c_str());
|
||||
continue;
|
||||
}
|
||||
// for accessing the file we need to retain the original unaltered path.
|
||||
// On Linux this is important because its file system is case sensitive,
|
||||
// but even on Windows the Unicode normalization is destructive
|
||||
// for some characters and cannot be used for file names.
|
||||
// Examples for this are the Turkish 'i's or the German ß.
|
||||
SystemFilePath[count] = stringpool->Strdup(entry.FilePathRel.c_str());
|
||||
// for internal access we use the normalized form of the relative path.
|
||||
// this is fine because the paths that get compared against this will also be normalized.
|
||||
Entries[count].FileName = NormalizeFileName(entry.FilePathRel.c_str());
|
||||
SystemFilePath[count] = Entries[count].FileName;
|
||||
Entries[count].CompressedSize = Entries[count].Length = entry.Length;
|
||||
Entries[count].Flags = RESFF_FULLPATH;
|
||||
Entries[count].ResourceID = -1;
|
||||
|
|
Loading…
Reference in a new issue