diff --git a/source/glest_game/global/config.cpp b/source/glest_game/global/config.cpp index b4f188e9..43151d5a 100644 --- a/source/glest_game/global/config.cpp +++ b/source/glest_game/global/config.cpp @@ -181,6 +181,11 @@ Config::Config(std::pair type, std::pair f //string currentpath = extractDirectoryPathFromFile(Properties::getApplicationPath()); fileName.first = currentpath + fileName.first; } + +#if defined(WIN32) + updatePathClimbingParts(fileName.first); +#endif + if(SystemFlags::VERBOSE_MODE_ENABLED) printf("-=-=-=-=-=-=-= About to load fileName.first = [%s]\n",fileName.first.c_str()); if(fileMustExist.first == true || @@ -204,6 +209,11 @@ Config::Config(std::pair type, std::pair f } fileName.second = userData + fileNameParameter.second; } + +#if defined(WIN32) + updatePathClimbingParts(fileName.second); +#endif + } else if(cfgType.first == cfgMainKeys) { Config &mainCfg = Config::getInstance(); @@ -221,6 +231,11 @@ Config::Config(std::pair type, std::pair f } fileName.second = userData + fileNameParameter.second; } + +#if defined(WIN32) + updatePathClimbingParts(fileName.second); +#endif + } if(SystemFlags::VERBOSE_MODE_ENABLED) printf("-=-=-=-=-=-=-= About to load fileName.second = [%s]\n",fileName.second.c_str()); diff --git a/source/shared_lib/sources/platform/common/platform_common.cpp b/source/shared_lib/sources/platform/common/platform_common.cpp index c1d3782e..01d944c4 100644 --- a/source/shared_lib/sources/platform/common/platform_common.cpp +++ b/source/shared_lib/sources/platform/common/platform_common.cpp @@ -572,6 +572,20 @@ void updatePathClimbingParts(string &path) { if(SystemFlags::VERBOSE_MODE_ENABLED) printf("CHANGED relative path from [%s] to [%s]\n",orig.c_str(),path.c_str()); } + // Update paths with /./ + pos = path.find("/./"); + if(pos != string::npos && pos != 0) { + string orig = path; + path.erase(pos,2); + pos--; + + pos = path.find("/./"); + if(pos != string::npos && pos != 0) { + updatePathClimbingParts(path); + } + + if(SystemFlags::VERBOSE_MODE_ENABLED) printf("CHANGED relative path from [%s] to [%s]\n",orig.c_str(),path.c_str()); + } /* string::size_type pos = path.rfind("..");