diff options
25 files changed, 164 insertions, 176 deletions
diff --git a/src/client.cpp b/src/client.cpp index 1b7f1a1da..38870b50f 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -414,12 +414,13 @@ void Client::gameInit() // Add the main data directories to our PhysicsFS search path if (!settings.options.dataPath.empty()) { - resourceManager->addToSearchPath(settings.options.dataPath, + VirtFs::addDirToSearchPath(settings.options.dataPath, Append_false); } // Add the local data directory to PhysicsFS search path - resourceManager->addToSearchPath(settings.localDataDir, Append_false); + VirtFs::addDirToSearchPath(settings.localDataDir, + Append_false); TranslationManager::loadCurrentLang(); #ifdef ENABLE_CUSTOMNLS TranslationManager::loadGettextLang(); @@ -1091,7 +1092,7 @@ int Client::gameExec() "/local/", "zip"); - resourceManager->removeFromSearchPath( + VirtFs::removeDirFromSearchPath( settings.localDataDir + dirSeparator + settings.updatesDir + @@ -1314,7 +1315,7 @@ int Client::gameExec() "zip", Append_false); - resourceManager->addToSearchPath( + VirtFs::addDirToSearchPath( settings.localDataDir + dirSeparator + settings.updatesDir + diff --git a/src/dirs.cpp b/src/dirs.cpp index f27bc76f9..ce20923b4 100644 --- a/src/dirs.cpp +++ b/src/dirs.cpp @@ -190,9 +190,9 @@ void Dirs::extractDataDir() void Dirs::mountDataDir() { - resourceManager->addToSearchPath(PKG_DATADIR "data/perserver/default", + VirtFs::addDirToSearchPath(PKG_DATADIR "data/perserver/default", Append_false); - resourceManager->addToSearchPath("data/perserver/default", + VirtFs::addDirToSearchPath("data/perserver/default", Append_false); #if defined __APPLE__ @@ -209,29 +209,29 @@ void Dirs::mountDataDir() CFRelease(resourcesURL); // possible crash strncat(path, "/data", PATH_MAX - 1); - resourceManager->addToSearchPath(path, Append_false); + VirtFs::addDirToSearchPath(path, Append_false); // possible this need for support run client from dmg images. // mPackageDir = path; #endif // defined __APPLE__ - resourceManager->addToSearchPath(PKG_DATADIR "data", Append_false); + VirtFs::addDirToSearchPath(PKG_DATADIR "data", Append_false); setPackageDir(PKG_DATADIR "data"); - resourceManager->addToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); #ifdef ANDROID #ifdef USE_SDL2 if (getenv("APPDIR")) { const std::string appDir = getenv("APPDIR"); - resourceManager->addToSearchPath(appDir + "/data", Append_false); - resourceManager->addToSearchPath(appDir + "/data/perserver/default", + VirtFs::addDirToSearchPath(appDir + "/data", Append_false); + VirtFs::addDirToSearchPath(appDir + "/data/perserver/default", Append_false); } #endif // USE_SDL2 #endif // ANDROID #if defined __native_client__ - resourceManager->addToSearchPath("/http/data.zip", Append_false); + VirtFs::addZipToSearchPath("/http/data.zip", Append_false); #endif // defined __native_client__ // Add branding/data to PhysFS search path @@ -251,7 +251,7 @@ void Dirs::mountDataDir() if (loc > 0) { - resourceManager->addToSearchPath(path.substr( + VirtFs::addDirToSearchPath(path.substr( 0, loc + 1).append("data"), Append_false); } diff --git a/src/dyetool/client.cpp b/src/dyetool/client.cpp index d32a08493..d2ace1a36 100644 --- a/src/dyetool/client.cpp +++ b/src/dyetool/client.cpp @@ -266,12 +266,13 @@ void Client::gameInit() // Add the main data directories to our PhysicsFS search path if (!settings.options.dataPath.empty()) { - resourceManager->addToSearchPath(settings.options.dataPath, + VirtFs::addDirToSearchPath(settings.options.dataPath, Append_false); } // Add the local data directory to PhysicsFS search path - resourceManager->addToSearchPath(settings.localDataDir, Append_false); + VirtFs::addDirToSearchPath(settings.localDataDir, + Append_false); TranslationManager::loadCurrentLang(); #ifdef ENABLE_CUSTOMNLS TranslationManager::loadGettextLang(); @@ -640,7 +641,8 @@ int Client::gameExec() "zip", Append_false); - resourceManager->addToSearchPath(settings.localDataDir + VirtFs::addDirToSearchPath( + settings.localDataDir + dirSeparator + settings.updatesDir + "/local/", Append_false); } diff --git a/src/dyetool/dyemain.cpp b/src/dyetool/dyemain.cpp index 7e0ed94a4..27b159a70 100644 --- a/src/dyetool/dyemain.cpp +++ b/src/dyetool/dyemain.cpp @@ -88,8 +88,8 @@ int main(int argc, char **argv) ResourceManager::init(); resourceManager->setWriteDir("."); - resourceManager->addToSearchPath(".", Append_false); - resourceManager->addToSearchPath("/", Append_false); + VirtFs::addDirToSearchPath(".", Append_false); + VirtFs::addDirToSearchPath("/", Append_false); std::string src = argv[1]; std::string dst; if (argc == 4) diff --git a/src/gui/widgets/browserbox_unittest.cc b/src/gui/widgets/browserbox_unittest.cc index dfa9757b5..3978c309d 100644 --- a/src/gui/widgets/browserbox_unittest.cc +++ b/src/gui/widgets/browserbox_unittest.cc @@ -30,6 +30,8 @@ #include "gui/widgets/browserbox.h" +#include "utils/virtfs.h" + #include "render/sdlgraphics.h" #include "resources/resourcemanager/resourcemanager.h" @@ -47,8 +49,8 @@ TEST_CASE("BrowserBox tests", "browserbox") logger = new Logger(); imageHelper = new SDLImageHelper(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); mainGraphics = new SDLGraphics; imageHelper = new SDLImageHelper; diff --git a/src/gui/windowmanager_unittest.cc b/src/gui/windowmanager_unittest.cc index d3dc57b3e..392e6e872 100644 --- a/src/gui/windowmanager_unittest.cc +++ b/src/gui/windowmanager_unittest.cc @@ -138,10 +138,10 @@ TEST_CASE("Windows tests", "windowmanager") resourceManager = nullptr; ResourceManager::init(); resourceManager->cleanOrphans(true); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); - resourceManager->addToSearchPath("data/test", Append_false); - resourceManager->addToSearchPath("../data/test", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data/test", Append_false); + VirtFs::addDirToSearchPath("../data/test", Append_false); paths.setDefaultValues(getPathsDefaults()); branding.setValue("onlineServerFile", "test/serverlistplus.xml"); mainGraphics = new SDLGraphics; diff --git a/src/gui/windows/updaterwindow.cpp b/src/gui/windows/updaterwindow.cpp index 645ec0e84..70ddd6897 100644 --- a/src/gui/windows/updaterwindow.cpp +++ b/src/gui/windows/updaterwindow.cpp @@ -754,7 +754,10 @@ void UpdaterWindow::loadManaPlusUpdates(const std::string &dir) std::string fileName = std::string(fixPath).append( "/").append(name); if (!stat(fileName.c_str(), &statbuf)) - resourceManager->addToSearchPath(fileName, Append_false); + { + VirtFs::addZipToSearchPath(fileName, + Append_false); + } } } } @@ -777,7 +780,7 @@ void UpdaterWindow::unloadManaPlusUpdates(const std::string &dir) const std::string file = std::string( fixPath).append("/").append(name); if (!stat(file.c_str(), &statbuf)) - resourceManager->removeFromSearchPath(file); + VirtFs::removeZipFromSearchPath(file); } } } @@ -789,27 +792,27 @@ void UpdaterWindow::addUpdateFile(const std::string &restrict path, { const std::string tmpPath = std::string(path).append("/").append(file); if (append == Append_false) - resourceManager->addToSearchPath(tmpPath, append); + VirtFs::addZipToSearchPath(tmpPath, append); const std::string fixFile = std::string(fixPath).append("/").append(file); struct stat statbuf; if (!stat(fixFile.c_str(), &statbuf)) - resourceManager->addToSearchPath(fixFile, append); + VirtFs::addZipToSearchPath(fixFile, append); if (append == Append_false) - resourceManager->addToSearchPath(tmpPath, append); + VirtFs::addZipToSearchPath(tmpPath, append); } void UpdaterWindow::removeUpdateFile(const std::string &restrict path, const std::string &restrict fixPath, const std::string &restrict file) { - resourceManager->removeFromSearchPath( + VirtFs::removeZipFromSearchPath( std::string(path).append("/").append(file)); const std::string fixFile = std::string(fixPath).append("/").append(file); struct stat statbuf; if (!stat(fixFile.c_str(), &statbuf)) - resourceManager->removeFromSearchPath(fixFile); + VirtFs::removeZipFromSearchPath(fixFile); } void UpdaterWindow::logic() @@ -1134,7 +1137,10 @@ void UpdaterWindow::loadMods(const std::string &dir, std::string fileName = std::string(fixPath).append( "/").append(name); if (!stat(fileName.c_str(), &statbuf)) - resourceManager->addToSearchPath(fileName, Append_false); + { + VirtFs::addZipToSearchPath(fileName, + Append_false); + } } } } @@ -1162,7 +1168,7 @@ void UpdaterWindow::loadDirMods(const std::string &dir) const std::string &localDir = mod->getLocalDir(); if (!localDir.empty()) { - resourceManager->addToSearchPath(dir + "/" + localDir, + VirtFs::addDirToSearchPath(dir + "/" + localDir, Append_false); } } @@ -1186,7 +1192,7 @@ void UpdaterWindow::unloadMods(const std::string &dir) { const std::string &localDir = mod->getLocalDir(); if (!localDir.empty()) - resourceManager->removeFromSearchPath(dir + "/" + localDir); + VirtFs::removeDirFromSearchPath(dir + "/" + localDir); } } } diff --git a/src/integrity_unittest.cc b/src/integrity_unittest.cc index 67ab1c027..fe6ccc6f4 100644 --- a/src/integrity_unittest.cc +++ b/src/integrity_unittest.cc @@ -108,8 +108,8 @@ TEST_CASE("integrity tests", "integrity") SDL_Init(SDL_INIT_VIDEO); logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); #ifdef USE_SDL2 imageHelper = new SurfaceImageHelper; @@ -213,12 +213,12 @@ TEST_CASE("integrity tests", "integrity") SECTION("integrity Loader::getImage test 2") { - resourceManager->addToSearchPath("data/test/test.zip", Append_false); - resourceManager->addToSearchPath("../data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("../data/test/test.zip", Append_false); Image *const image = Loader::getImage( "hide.png"); - resourceManager->removeFromSearchPath("data/test/test.zip"); - resourceManager->removeFromSearchPath("../data/test/test.zip"); + VirtFs::removeZipFromSearchPath("data/test/test.zip"); + VirtFs::removeZipFromSearchPath("../data/test/test.zip"); REQUIRE(image != nullptr); REQUIRE(image->getSDLSurface() != nullptr); image->decRef(); @@ -226,12 +226,12 @@ TEST_CASE("integrity tests", "integrity") SECTION("integrity Loader::getImage test 3") { - resourceManager->addToSearchPath("data/test/test.zip", Append_false); - resourceManager->addToSearchPath("../data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("../data/test/test.zip", Append_false); Image *const image = Loader::getImage( "dir/brimmedhat.png"); - resourceManager->removeFromSearchPath("data/test/test.zip"); - resourceManager->removeFromSearchPath("../data/test/test.zip"); + VirtFs::removeZipFromSearchPath("data/test/test.zip"); + VirtFs::removeZipFromSearchPath("../data/test/test.zip"); REQUIRE(image != nullptr); REQUIRE(image->getSDLSurface() != nullptr); image->decRef(); @@ -239,14 +239,14 @@ TEST_CASE("integrity tests", "integrity") SECTION("integrity Loader::getImage test 4") { - resourceManager->addToSearchPath("data/test/test.zip", Append_false); - resourceManager->addToSearchPath("../data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("../data/test/test.zip", Append_false); SDL_RWops *const rw = VirtFs::RWopsOpenRead(name1); if (!rw) logger->log("Physfs error: %s", VirtFs::getLastError()); - resourceManager->removeFromSearchPath("data/test/test.zip"); - resourceManager->removeFromSearchPath("../data/test/test.zip"); + VirtFs::removeZipFromSearchPath("data/test/test.zip"); + VirtFs::removeZipFromSearchPath("../data/test/test.zip"); REQUIRE(rw != nullptr); unsigned char buf[size1]; const size_t sz = SDL_RWread(rw, buf, 1, size1); @@ -259,8 +259,8 @@ TEST_CASE("integrity tests", "integrity") SECTION("integrity Loader::getImage test 5") { - resourceManager->addToSearchPath("data/test/test.zip", Append_false); - resourceManager->addToSearchPath("../data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("../data/test/test.zip", Append_false); PHYSFS_file *handle = PHYSFS_openRead(name1); REQUIRE(handle != nullptr); @@ -315,14 +315,14 @@ TEST_CASE("integrity tests", "integrity") // rw->close(rw); REQUIRE(PHYSFS_close(handle) != 0); - resourceManager->removeFromSearchPath("data/test/test.zip"); - resourceManager->removeFromSearchPath("../data/test/test.zip"); + VirtFs::removeZipFromSearchPath("data/test/test.zip"); + VirtFs::removeZipFromSearchPath("../data/test/test.zip"); } SECTION("integrity Loader::getImage test 6") { - resourceManager->addToSearchPath("data/test/test.zip", Append_false); - resourceManager->addToSearchPath("../data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("../data/test/test.zip", Append_false); PHYSFS_file *handle = PHYSFS_openRead(name1); REQUIRE(handle != nullptr); @@ -395,15 +395,15 @@ TEST_CASE("integrity tests", "integrity") // rw->close(rw); REQUIRE(PHYSFS_close(handle) != 0); - resourceManager->removeFromSearchPath("data/test/test.zip"); - resourceManager->removeFromSearchPath("../data/test/test.zip"); + VirtFs::removeZipFromSearchPath("data/test/test.zip"); + VirtFs::removeZipFromSearchPath("../data/test/test.zip"); REQUIRE(compareBuffers(buf) == true); } SECTION("integrity Loader::getImage test 7") { - resourceManager->addToSearchPath("data/test/test.zip", Append_false); - resourceManager->addToSearchPath("../data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("../data/test/test.zip", Append_false); SDL_RWops *const rw = VirtFs::RWopsOpenRead(name1); if (!rw) @@ -430,15 +430,15 @@ TEST_CASE("integrity tests", "integrity") REQUIRE(sz == size1); SDL_RWclose(rw); - resourceManager->removeFromSearchPath("data/test/test.zip"); - resourceManager->removeFromSearchPath("../data/test/test.zip"); + VirtFs::removeZipFromSearchPath("data/test/test.zip"); + VirtFs::removeZipFromSearchPath("../data/test/test.zip"); REQUIRE(compareBuffers(buf) == true); } SECTION("integrity Loader::getImage test 8") { - resourceManager->addToSearchPath("data/test/test.zip", Append_false); - resourceManager->addToSearchPath("../data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("../data/test/test.zip", Append_false); SDL_RWops *const rw = VirtFs::RWopsOpenRead(name1); if (!rw) @@ -451,36 +451,36 @@ TEST_CASE("integrity tests", "integrity") } SDL_Surface *const tmpImage = IMG_LoadPNG_RW(rw); SDL_RWclose(rw); - resourceManager->removeFromSearchPath("data/test/test.zip"); - resourceManager->removeFromSearchPath("../data/test/test.zip"); + VirtFs::removeZipFromSearchPath("data/test/test.zip"); + VirtFs::removeZipFromSearchPath("../data/test/test.zip"); REQUIRE(tmpImage != nullptr); SDL_FreeSurface(tmpImage); } SECTION("integrity Loader::getImage test 9") { - resourceManager->addToSearchPath("data/test/test.zip", Append_false); - resourceManager->addToSearchPath("../data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("../data/test/test.zip", Append_false); SDL_RWops *const rw = VirtFs::RWopsOpenRead(name1); if (!rw) logger->log("Physfs error: %s", VirtFs::getLastError()); REQUIRE(rw != nullptr); Resource *const res = imageHelper->load(rw); - resourceManager->removeFromSearchPath("data/test/test.zip"); - resourceManager->removeFromSearchPath("../data/test/test.zip"); + VirtFs::removeZipFromSearchPath("data/test/test.zip"); + VirtFs::removeZipFromSearchPath("../data/test/test.zip"); REQUIRE(res != nullptr); res->decRef(); } SECTION("integrity Loader::getImage test 10") { - resourceManager->addToSearchPath("data/test/test.zip", Append_false); - resourceManager->addToSearchPath("../data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("data/test/test.zip", Append_false); + VirtFs::addZipToSearchPath("../data/test/test.zip", Append_false); Image *const image = Loader::getImage( name1); - resourceManager->removeFromSearchPath("data/test/test.zip"); - resourceManager->removeFromSearchPath("../data/test/test.zip"); + VirtFs::removeZipFromSearchPath("data/test/test.zip"); + VirtFs::removeZipFromSearchPath("../data/test/test.zip"); REQUIRE(image != nullptr); REQUIRE(image->getSDLSurface() != nullptr); image->decRef(); diff --git a/src/resources/dye/dye_unittest.cc b/src/resources/dye/dye_unittest.cc index f3d4fe3ba..57892c3a9 100644 --- a/src/resources/dye/dye_unittest.cc +++ b/src/resources/dye/dye_unittest.cc @@ -2358,8 +2358,8 @@ TEST_CASE("Dye real dye") SDL_Init(SDL_INIT_VIDEO); logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data/test", Append_false); - resourceManager->addToSearchPath("../data/test", Append_false); + VirtFs::addDirToSearchPath("data/test", Append_false); + VirtFs::addDirToSearchPath("../data/test", Append_false); #ifdef USE_SDL2 imageHelper = new SurfaceImageHelper; diff --git a/src/resources/dye/dyepalette_unittest.cc b/src/resources/dye/dyepalette_unittest.cc index 42770e878..88bffe824 100644 --- a/src/resources/dye/dyepalette_unittest.cc +++ b/src/resources/dye/dyepalette_unittest.cc @@ -59,8 +59,8 @@ TEST_CASE("DyePalette tests") SDL_Init(SDL_INIT_VIDEO); logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data/test", Append_false); - resourceManager->addToSearchPath("../data/test", Append_false); + VirtFs::addDirToSearchPath("data/test", Append_false); + VirtFs::addDirToSearchPath("../data/test", Append_false); mainGraphics = new SDLGraphics; imageHelper = new SDLImageHelper(); diff --git a/src/resources/map/maplayer_unittest.cc b/src/resources/map/maplayer_unittest.cc index bd58d998c..75bd20219 100644 --- a/src/resources/map/maplayer_unittest.cc +++ b/src/resources/map/maplayer_unittest.cc @@ -28,6 +28,8 @@ #include "gui/theme.h" +#include "utils/virtfs.h" + #include "render/mockgraphics.h" #include "resources/sdlimagehelper.h" @@ -1645,8 +1647,8 @@ TEST_CASE("MapLayer draw") TEST_CASE("MapLayer drawSpecialLayer (specialLayer)") { ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); imageHelper = new SDLImageHelper; #ifdef USE_SDL2 @@ -1993,8 +1995,8 @@ TEST_CASE("MapLayer drawSpecialLayer (specialLayer)") TEST_CASE("MapLayer drawSpecialLayer (tempLayer)") { ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); imageHelper = new SDLImageHelper; #ifdef USE_SDL2 @@ -2347,8 +2349,8 @@ TEST_CASE("MapLayer drawSpecialLayer (tempLayer)") TEST_CASE("MapLayer drawFringe") { ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); logger = new Logger; imageHelper = new SDLImageHelper; diff --git a/src/resources/map/speciallayer_unittest.cc b/src/resources/map/speciallayer_unittest.cc index b74ade7dc..6c6772332 100644 --- a/src/resources/map/speciallayer_unittest.cc +++ b/src/resources/map/speciallayer_unittest.cc @@ -27,22 +27,23 @@ #include "enums/resources/map/mapitemtype.h" +#include "utils/delete2.h" +#include "utils/virtfs.h" + #include "resources/sdlimagehelper.h" #include "resources/map/speciallayer.h" #include "resources/resourcemanager/resourcemanager.h" -#include "utils/delete2.h" - #include "debug.h" TEST_CASE("SpecialLayer updateCache") { client = new Client; ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); imageHelper = new SDLImageHelper; #ifdef USE_SDL2 diff --git a/src/resources/resourcemanager/resourcemanager.cpp b/src/resources/resourcemanager/resourcemanager.cpp index 322b119a1..86158776d 100644 --- a/src/resources/resourcemanager/resourcemanager.cpp +++ b/src/resources/resourcemanager/resourcemanager.cpp @@ -340,35 +340,6 @@ bool ResourceManager::setWriteDir(const std::string &path) const return static_cast<bool>(VirtFs::setWriteDir(path.c_str())); } -bool ResourceManager::addToSearchPath(const std::string &path, - const Append append) const -{ - logger->log("Adding to PhysicsFS: %s (%s)", path.c_str(), - append == Append_true ? "append" : "prepend"); - if (!VirtFs::addToSearchPath(path.c_str(), - append == Append_true ? 1 : 0)) - { - logger->log("Error: %s: addToSearchPath failed: %s", - path.c_str(), - VirtFs::getLastError()); - return false; - } - return true; -} - -bool ResourceManager::removeFromSearchPath(const std::string &path) const -{ - logger->log("Removing from PhysicsFS: %s", path.c_str()); - if (!VirtFs::removeFromSearchPath(path.c_str())) - { - logger->log("Error: %s: removeFromSearchPath failed: %s", - path.c_str(), - VirtFs::getLastError()); - return false; - } - return true; -} - void ResourceManager::searchAndAddArchives(const std::string &restrict path, const std::string &restrict ext, const Append append) const @@ -385,7 +356,7 @@ void ResourceManager::searchAndAddArchives(const std::string &restrict path, const std::string file = path + (*i); const std::string realPath = std::string( VirtFs::getRealDir(file.c_str())); - addToSearchPath(std::string(realPath).append( + VirtFs::addZipToSearchPath(std::string(realPath).append( dirSep).append(file), append); } } @@ -408,7 +379,7 @@ void ResourceManager::searchAndRemoveArchives(const std::string &restrict path, const std::string file = path + (*i); const std::string realPath = std::string( VirtFs::getRealDir(file.c_str())); - removeFromSearchPath(std::string(realPath).append( + VirtFs::removeZipFromSearchPath(std::string(realPath).append( dirSep).append(file)); } } diff --git a/src/resources/resourcemanager/resourcemanager.h b/src/resources/resourcemanager/resourcemanager.h index 58e74967f..6f6875361 100644 --- a/src/resources/resourcemanager/resourcemanager.h +++ b/src/resources/resourcemanager/resourcemanager.h @@ -68,23 +68,6 @@ class ResourceManager final : public MemoryCounter bool setWriteDir(const std::string &path) const; /** - * Adds a directory or archive to the search path. If append is true - * then the directory is added to the end of the search path, otherwise - * it is added at the front. - * - * @return <code>true</code> on success, <code>false</code> otherwise. - */ - bool addToSearchPath(const std::string &path, - const Append append) const; - - /** - * Remove a directory or archive from the search path. - * - * @return <code>true</code> on success, <code>false</code> otherwise. - */ - bool removeFromSearchPath(const std::string &path) const; - - /** * Searches for zip files and adds them to the search path. */ void searchAndAddArchives(const std::string &restrict path, diff --git a/src/resources/resourcemanager/resourcemanager_unittest.cc b/src/resources/resourcemanager/resourcemanager_unittest.cc index 684f2d839..98ed0ca2f 100644 --- a/src/resources/resourcemanager/resourcemanager_unittest.cc +++ b/src/resources/resourcemanager/resourcemanager_unittest.cc @@ -94,8 +94,8 @@ TEST_CASE("resourcemanager", "resourcemanager") logger = new Logger(); ResourceManager::init(); ResourceManager *safeResman = resourceManager; - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); imageHelper = new SDLImageHelper(); #ifdef USE_SDL2 diff --git a/src/resources/sprite/animatedsprite_unittest.cc b/src/resources/sprite/animatedsprite_unittest.cc index 17746f65c..9505e7d24 100644 --- a/src/resources/sprite/animatedsprite_unittest.cc +++ b/src/resources/sprite/animatedsprite_unittest.cc @@ -60,8 +60,8 @@ TEST_CASE("AnimatedSprite tests", "animatedsprite") SDL_Init(SDL_INIT_VIDEO); logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); mainGraphics = new SDLGraphics; imageHelper = new SDLImageHelper(); #ifdef USE_SDL2 diff --git a/src/utils/chatutils_unittest.cc b/src/utils/chatutils_unittest.cc index 233d02bf6..b28bd94da 100644 --- a/src/utils/chatutils_unittest.cc +++ b/src/utils/chatutils_unittest.cc @@ -54,8 +54,8 @@ TEST_CASE("chatutils replaceVars") SDL_Init(SDL_INIT_VIDEO); logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); theme = new Theme; Theme::selectSkin(); imageHelper = new SDLImageHelper(); diff --git a/src/utils/files.cpp b/src/utils/files.cpp index e875af770..51674751b 100644 --- a/src/utils/files.cpp +++ b/src/utils/files.cpp @@ -46,7 +46,7 @@ void Files::extractLocale() const std::string fileName2 = std::string(getenv( "APPDIR")).append("/locale.zip"); - resourceManager->addToSearchPath(fileName2, Append_false); + VirtFs::addZipToSearchPath(fileName2, Append_false); const std::string localDir = std::string(getenv("APPDIR")).append("/"); char **rootDirs = VirtFs::enumerateFiles("locale"); @@ -66,7 +66,7 @@ void Files::extractLocale() } } VirtFs::freeList(rootDirs); - resourceManager->removeFromSearchPath(fileName2); + VirtFs::removeZipFromSearchPath(fileName2); remove(fileName2.c_str()); } #endif // ANDROID @@ -126,9 +126,9 @@ void Files::extractZip(const std::string &restrict zipName, const std::string &restrict inDir, const std::string &restrict outDir) { - resourceManager->addToSearchPath(zipName, Append_false); + VirtFs::addZipToSearchPath(zipName, Append_false); copyPhysFsDir(inDir, outDir); - resourceManager->removeFromSearchPath(zipName); + VirtFs::removeZipFromSearchPath(zipName); remove(zipName.c_str()); } diff --git a/src/utils/files_unittest.cc b/src/utils/files_unittest.cc index 01996bd74..71e6e89c7 100644 --- a/src/utils/files_unittest.cc +++ b/src/utils/files_unittest.cc @@ -34,8 +34,8 @@ TEST_CASE("Files renameFile") dirSeparator = "/"; logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); const int sz = 1234567; char *buf = new char[sz]; @@ -71,8 +71,8 @@ TEST_CASE("Files existsLocal") dirSeparator = "/"; logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); REQUIRE(Files::existsLocal(Files::getPath("help/about.txt")) == true); REQUIRE_FALSE(Files::existsLocal(Files::getPath("help/about1.txt"))); REQUIRE_FALSE(Files::existsLocal(Files::getPath("help1/about.txt"))); @@ -85,8 +85,8 @@ TEST_CASE("Files loadTextFileString") dirSeparator = "/"; logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); REQUIRE(Files::loadTextFileString("test/simplefile.txt") == "this is test \nfile."); ResourceManager::deleteInstance(); @@ -98,8 +98,8 @@ TEST_CASE("Files loadTextFile") dirSeparator = "/"; logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); StringVect lines; Files::loadTextFile("test/simplefile.txt", lines); @@ -115,8 +115,8 @@ TEST_CASE("Files saveTextFile") dirSeparator = "/"; logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); const std::string dir = Files::getPath("test"); REQUIRE(dir.size() > 0); @@ -133,8 +133,8 @@ TEST_CASE("Files getFilesInDir") dirSeparator = "/"; logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); StringVect list; Files::getFilesInDir("test", diff --git a/src/utils/stringutils_unittest.cc b/src/utils/stringutils_unittest.cc index 46c1b352c..3354da89c 100644 --- a/src/utils/stringutils_unittest.cc +++ b/src/utils/stringutils_unittest.cc @@ -1264,10 +1264,10 @@ TEST_CASE("stringuntils replaceItemLinks") dirSeparator = "/"; logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); - resourceManager->addToSearchPath("data/test", Append_false); - resourceManager->addToSearchPath("../data/test", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data/test", Append_false); + VirtFs::addDirToSearchPath("../data/test", Append_false); ItemDB::NamedItemInfos &namedInfos = ItemDB::getNamedItemInfosTest(); ItemDB::ItemInfos &infos = ItemDB::getItemInfosTest(); diff --git a/src/utils/translation/poparser_unittest.cc b/src/utils/translation/poparser_unittest.cc index b59b1e098..e7928c8b5 100644 --- a/src/utils/translation/poparser_unittest.cc +++ b/src/utils/translation/poparser_unittest.cc @@ -50,8 +50,8 @@ TEST_CASE("PoParser tests", "PoParser") dirSeparator = "/"; logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); mainGraphics = new SDLGraphics; imageHelper = new SDLImageHelper(); diff --git a/src/utils/virtfs.cpp b/src/utils/virtfs.cpp index 6d3d18ba9..ef70d119e 100644 --- a/src/utils/virtfs.cpp +++ b/src/utils/virtfs.cpp @@ -136,14 +136,28 @@ namespace VirtFs return PHYSFS_setWriteDir(newDir); } - bool addToSearchPath(const char *const newDir, const int appendToPath) + bool addDirToSearchPath(const std::string &newDir, + const Append append) { - return PHYSFS_addToSearchPath(newDir, appendToPath); + return PHYSFS_addToSearchPath(newDir.c_str(), + append == Append_true ? 1 : 0); } - bool removeFromSearchPath(const char *const oldDir) + bool removeDirFromSearchPath(const std::string &oldDir) { - return PHYSFS_removeFromSearchPath(oldDir); + return PHYSFS_removeFromSearchPath(oldDir.c_str()); + } + + bool addZipToSearchPath(const std::string &newDir, + const Append append) + { + return PHYSFS_addToSearchPath(newDir.c_str(), + append == Append_true ? 1 : 0); + } + + bool removeZipFromSearchPath(const std::string &oldDir) + { + return PHYSFS_removeFromSearchPath(oldDir.c_str()); } const char *getRealDir(const char *const filename) diff --git a/src/utils/virtfs.h b/src/utils/virtfs.h index e2db24e44..3bb98c046 100644 --- a/src/utils/virtfs.h +++ b/src/utils/virtfs.h @@ -21,6 +21,8 @@ #ifndef UTILS_PHYSFSTOOLS_H #define UTILS_PHYSFSTOOLS_H +#include "enums/simpletypes/append.h" + #include "localconsts.h" #include <string> @@ -42,8 +44,12 @@ namespace VirtFs VirtFile *openWrite(const char *const filename); VirtFile *openAppend(const char *const filename); bool setWriteDir(const char *const newDir); - bool addToSearchPath(const char *const newDir, const int appendToPath); - bool removeFromSearchPath(const char *const oldDir); + bool addDirToSearchPath(const std::string &newDir, + const Append append); + bool removeDirFromSearchPath(const std::string &oldDir); + bool addZipToSearchPath(const std::string &newDir, + const Append append); + bool removeZipFromSearchPath(const std::string &oldDir); const char *getRealDir(const char *const filename); bool mkdir(const char *const dirName); void *loadFile(const std::string &fileName, int &fileSize); diff --git a/src/utils/xml_unittest.cc b/src/utils/xml_unittest.cc index 575c61a5c..e6198a597 100644 --- a/src/utils/xml_unittest.cc +++ b/src/utils/xml_unittest.cc @@ -51,8 +51,8 @@ TEST_CASE("xml doc") XML::initXML(); logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); mainGraphics = new SDLGraphics; imageHelper = new SDLImageHelper(); #ifdef USE_SDL2 diff --git a/src/utils/xmlutils_unittest.cc b/src/utils/xmlutils_unittest.cc index ab70b7ec1..dbb571429 100644 --- a/src/utils/xmlutils_unittest.cc +++ b/src/utils/xmlutils_unittest.cc @@ -38,8 +38,8 @@ TEST_CASE("xmlutils readXmlIntVector 1") XML::initXML(); logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); std::vector<int> arr; @@ -68,8 +68,8 @@ TEST_CASE("xmlutils readXmlStringMap 1") XML::initXML(); logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data", Append_false); - resourceManager->addToSearchPath("../data", Append_false); + VirtFs::addDirToSearchPath("data", Append_false); + VirtFs::addDirToSearchPath("../data", Append_false); std::map<std::string, std::string> arr; @@ -97,8 +97,8 @@ TEST_CASE("xmlutils readXmlIntMap 1") XML::initXML(); logger = new Logger(); ResourceManager::init(); - resourceManager->addToSearchPath("data/test", Append_false); - resourceManager->addToSearchPath("../data/test", Append_false); + VirtFs::addDirToSearchPath("data/test", Append_false); + VirtFs::addDirToSearchPath("../data/test", Append_false); std::map<int32_t, int32_t> arr; |