diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 64b74276ed..6cc3fbf4ec 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -193,7 +193,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat // directory settings engine.enableFSStrict(variables["fs-strict"].as()); - Files::PathContainer dataDirs(variables["data"].as().mContainer); + Files::PathContainer dataDirs(Files::EscapePath::toPathContainer(variables["data"].as())); std::string local(variables["data-local"].as().toStdString()); if (!local.empty()) diff --git a/components/fallback/validate.hpp b/components/fallback/validate.hpp index b89a71a5aa..d0cad46725 100644 --- a/components/fallback/validate.hpp +++ b/components/fallback/validate.hpp @@ -70,21 +70,31 @@ namespace Files { eSV->mVector.push_back(EscapeHashString(*it)); } - struct EscapePathContainer { - PathContainer mContainer; + struct EscapePath { + boost::filesystem::path mPath; + + static PathContainer toPathContainer(const std::vector & escapePathContainer); }; - std::istream & operator>> (std::istream & istream, EscapePathContainer & escapePathContainer) + typedef std::vector EscapePathContainer; + + PathContainer EscapePath::toPathContainer(const EscapePathContainer & escapePathContainer) + { + PathContainer temp; + for (EscapePathContainer::const_iterator it = escapePathContainer.begin(); it != escapePathContainer.end(); ++it) + temp.push_back(it->mPath); + return temp; + } + + std::istream & operator>> (std::istream & istream, EscapePath & escapePath) { std::cout << "The new dodgy operator>> is being used" << std::endl; boost::iostreams::filtering_istream filteredStream; - filteredStream.push(unescape_hash_filter()); + //filteredStream.push(unescape_hash_filter()); filteredStream.push(istream); - boost::filesystem::path path; - filteredStream >> path; - escapePathContainer.mContainer.push_back(path); + filteredStream >> escapePath.mPath; return istream; }