diff --git a/src/common/filesystem/source/resourcefile.cpp b/src/common/filesystem/source/resourcefile.cpp index 9a8b6b9f1..0efdd7cf1 100644 --- a/src/common/filesystem/source/resourcefile.cpp +++ b/src/common/filesystem/source/resourcefile.cpp @@ -356,27 +356,18 @@ void FResourceFile::PostProcessArchive(LumpFilterInfo *filter) if (NumLumps == 0 || !(Entries[0].Flags & RESFF_FULLPATH)) return; // First eliminate all unwanted files - for (uint32_t i = 0; i < NumLumps; i++) + if (filter) { - std::string name = Entries[i].FileName; - // remove Apple garbage unconditionally. - if (name.find("__macosx") == 0 || name.find("/__macosx") != std::string::npos) + for (uint32_t i = 0; i < NumLumps; i++) { - Entries[i].FileName = ""; - continue; - } - // Skip executables as well. - if (wildcards::match(name, "*.bat") || wildcards::match(name, "*.exe")) - { - Entries[i].FileName = ""; - continue; - } - if (filter) for (auto& pattern : filter->blockednames) - { - if (wildcards::match(name, pattern)) + std::string name = Entries[i].FileName; + for (auto& pattern : filter->blockednames) { - Entries[i].FileName = ""; - continue; + if (wildcards::match(name, pattern)) + { + Entries[i].FileName = ""; + continue; + } } } } diff --git a/src/d_main.cpp b/src/d_main.cpp index 8b26b1a36..bda7e7bb4 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1922,6 +1922,7 @@ void GetReserved(LumpFilterInfo& lfi) lfi.reservedFolders = { "flats/", "textures/", "hires/", "sprites/", "voxels/", "colormaps/", "acs/", "maps/", "voices/", "patches/", "graphics/", "sounds/", "music/", "materials/", "models/", "fonts/", "brightmaps/" }; lfi.requiredPrefixes = { "mapinfo", "zmapinfo", "umapinfo", "gameinfo", "sndinfo", "sndseq", "sbarinfo", "menudef", "gldefs", "animdefs", "decorate", "zscript", "iwadinfo", "complvl", "terrain", "maps/" }; + lfi.blockednames = { "*.bat", "*.exe", "__macosx/*", "*/__macosx/*" }; } static FString CheckGameInfo(std::vector & pwads)