From c131d29b5fd6c86ab5e523b5d9851f2e65d5cb0b Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Mon, 16 Jul 2012 21:30:15 -0300 Subject: [PATCH] Fix some issues with the current working directory --- src/framework/CMakeLists.txt | 2 +- src/framework/core/resourcemanager.cpp | 14 +++----------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/framework/CMakeLists.txt b/src/framework/CMakeLists.txt index db68c30a..7214dde2 100644 --- a/src/framework/CMakeLists.txt +++ b/src/framework/CMakeLists.txt @@ -155,7 +155,7 @@ if(WIN32) endif() set(Boost_USE_MULTITHREADED ON) set(Boost_USE_STATIC_LIBS ON) -find_package(Boost COMPONENTS system REQUIRED) +find_package(Boost COMPONENTS system filesystem REQUIRED) #find lua if(LUAJIT) diff --git a/src/framework/core/resourcemanager.cpp b/src/framework/core/resourcemanager.cpp index 304fe7c7..5b5249be 100644 --- a/src/framework/core/resourcemanager.cpp +++ b/src/framework/core/resourcemanager.cpp @@ -27,6 +27,7 @@ #include #include +#include ResourceManager g_resources; @@ -44,8 +45,7 @@ void ResourceManager::discoverWorkDir(const std::string& appName, const std::str { // search for modules directory std::string sep = PHYSFS_getDirSeparator(); - std::string possiblePaths[] = { "", - g_resources.getBaseDir(), + std::string possiblePaths[] = { boost::filesystem::current_path().generic_string() + sep, g_resources.getBaseDir() + ".." + sep, g_resources.getBaseDir() + ".." + sep + "share" + sep + appName + sep, g_resources.getBaseDir() + appName + sep }; @@ -80,15 +80,7 @@ bool ResourceManager::setupUserWriteDir(const std::string& appWriteDirName) bool ResourceManager::setWriteDir(const std::string& writeDir, bool create) { - if(!PHYSFS_setWriteDir(writeDir.c_str()) && !create) { - g_logger.error(stdext::format("Unable to set write directory '%s': %s", writeDir, PHYSFS_getLastError())); - return false; - } - - if(!PHYSFS_mkdir(writeDir.c_str())) { - g_logger.error(stdext::format("Unable to create write directory '%s': %s", writeDir, PHYSFS_getLastError())); - return false; - } + boost::filesystem::create_directory(writeDir); if(!PHYSFS_setWriteDir(writeDir.c_str())) { g_logger.error(stdext::format("Unable to set write directory '%s': %s", writeDir, PHYSFS_getLastError()));