From acd1f910d5d5f8a8bbeb6fc953afdf5a1ece404c Mon Sep 17 00:00:00 2001 From: Max Horn Date: Thu, 30 Dec 2004 21:48:22 +0000 Subject: Handle SCUMMVM_SAVEPATH exactly like the command line option --savepath (but the command line option has higher priority); i.e. it's affecting the config system (see also bug #1045171) svn-id: r16391 --- base/gameDetector.cpp | 15 +++++++++++++-- common/savefile.cpp | 22 ++++++++-------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/base/gameDetector.cpp b/base/gameDetector.cpp index e371cf2924..1d10138ba9 100644 --- a/base/gameDetector.cpp +++ b/base/gameDetector.cpp @@ -48,6 +48,9 @@ extern int gDebugLevel; +// For convenience, we alias kTransientDomain here +static const Common::String &kTransientDomain = Common::ConfigManager::kTransientDomain; + // DONT FIXME: DO NOT ORDER ALPHABETICALLY, THIS IS ORDERED BY IMPORTANCE/CATEGORY! :) #ifdef __PALM_OS__ @@ -187,6 +190,16 @@ GameDetector::GameDetector() { #endif #endif + // The user can override the savepath with the SCUMMVM_SAVEPATH + // environment variable. +#if !defined(MACOS_CARBON) && !defined(_WIN32_WCE) + const char *dir = getenv("SCUMMVM_SAVEPATH"); + if (dir && *dir) { + // TODO: Verify whether the path is valid + ConfMan.set("savepath", dir, kTransientDomain); + } +#endif + _dumpScripts = false; memset(&_game, 0, sizeof(_game)); @@ -291,8 +304,6 @@ GameSettings GameDetector::findGame(const String &gameName, const Plugin **plugi } -static const Common::String &kTransientDomain = Common::ConfigManager::kTransientDomain; - void GameDetector::parseCommandLine(int argc, char **argv) { int i; char *s; diff --git a/common/savefile.cpp b/common/savefile.cpp index 17468f6a80..fcf86308aa 100644 --- a/common/savefile.cpp +++ b/common/savefile.cpp @@ -39,21 +39,15 @@ const char *SaveFileManager::getSavePath() const { const char *dir = NULL; -#if !defined(MACOS_CARBON) && !defined(_WIN32_WCE) - dir = getenv("SCUMMVM_SAVEPATH"); -#endif - - // If SCUMMVM_SAVEPATH was not specified, try to use game specific savepath from config - if (!dir || dir[0] == 0) { + // Try to use game specific savepath from config + dir = ConfMan.get("savepath").c_str(); + + // Work around a bug (#999122) in the original 0.6.1 release of + // ScummVM, which would insert a bad savepath value into config files. + if (0 == strcmp(dir, "None")) { + ConfMan.removeKey("savepath", ConfMan.getActiveDomain()); + ConfMan.flushToDisk(); dir = ConfMan.get("savepath").c_str(); - - // Work around a bug (#999122) in the original 0.6.1 release of - // ScummVM, which would insert a bad savepath value into config files. - if (0 == strcmp(dir, "None")) { - ConfMan.removeKey("savepath", ConfMan.getActiveDomain()); - ConfMan.flushToDisk(); - dir = ConfMan.get("savepath").c_str(); - } } #ifdef _WIN32_WCE -- cgit v1.2.3