diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index fbba304b9..e1ce97bfa 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -218,6 +218,7 @@ OMW::Engine::Engine() , mScriptManager (0) , mScriptContext (0) , mGuiManager (0) + , mFSStrict (false) { MWClass::registerClasses(); } @@ -258,6 +259,11 @@ void OMW::Engine::addResourcesDirectory (const boost::filesystem::path& path) Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, true); } +void OMW::Engine::enableFSStrict() +{ + mFSStrict = true; +} + // Set data dir void OMW::Engine::setDataDirs (const std::vector& dataDirs) @@ -266,7 +272,7 @@ void OMW::Engine::setDataDirs (const std::vector& dataD assert (!dataDirs.empty()); mDataDir = dataDirs[0]; - mFileCollections = Files::Collections (dataDirs, true); + mFileCollections = Files::Collections (dataDirs, !mFSStrict); } // Set resource dir diff --git a/apps/openmw/engine.hpp b/apps/openmw/engine.hpp index 4631f60a7..e49ddfc06 100644 --- a/apps/openmw/engine.hpp +++ b/apps/openmw/engine.hpp @@ -84,6 +84,7 @@ namespace OMW MWWorld::Ptr mIgnoreLocalPtr; Files::Collections mFileCollections; + bool mFSStrict; // not implemented Engine (const Engine&); @@ -109,6 +110,12 @@ namespace OMW ~Engine(); + /// Enable strict filesystem mode (do not fold case) + /// + /// \attention The strict mode must be specified before any path-related settings + /// are given to the engine. + void enableFSStrict(); + /// Set data dirs void setDataDirs (const std::vector& dataDirs); diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 8dff52024..e117a0688 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -74,6 +74,9 @@ bool parseOptions (int argc, char**argv, OMW::Engine& engine) ( "script-all", boost::program_options::value()-> implicit_value (true)->default_value (false), "compile all scripts (excluding dialogue scripts) at startup") + ( "fs-strict", boost::program_options::value()-> + implicit_value (true)->default_value (false), + "strict file system handling (no case folding)") ; bpo::variables_map variables; @@ -109,6 +112,9 @@ bool parseOptions (int argc, char**argv, OMW::Engine& engine) } // directory settings + if (variables["fs-strict"].as()==true) + engine.enableFSStrict(); + std::vector dataDirs = variables["data"].as >(); std::vector dataDirs2 (dataDirs.begin(), dataDirs.end());