fix(extractor): lowercase all output paths to prevent duplicate folders

WoW archives contain mixed-case variants of the same path (e.g.,
ARMLOWERTEXTURE vs ArmLowerTexture) which created duplicate directories
on case-sensitive Linux filesystems. Now mapPath() lowercases the entire
output. Also keeps TextureComponents and ObjectComponents directory
names instead of abbreviating them (item/texturecomponents/ instead of
item/texture/) so filesystem paths match the WoW virtual paths used in
manifest lookups.
This commit is contained in:
Kelsi 2026-04-03 21:26:20 -07:00
parent 23bda2d476
commit 7264ba1706
2 changed files with 12 additions and 11 deletions

View file

@ -16,11 +16,12 @@ public:
/**
* Map a WoW virtual path to a reorganized filesystem path.
* @param wowPath Original WoW virtual path (backslash-separated)
* @return Reorganized relative path (forward-slash separated, original casing preserved)
* @return Reorganized relative path (forward-slash separated, fully lowercased)
*/
static std::string mapPath(const std::string& wowPath);
private:
static std::string mapPathImpl(const std::string& wowPath);
// Helpers for prefix matching (case-insensitive)
static bool startsWithCI(const std::string& str, const std::string& prefix);
static std::string toLower(const std::string& str);