aboutsummaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorJames Brown2004-02-07 04:53:59 +0000
committerJames Brown2004-02-07 04:53:59 +0000
commit9b97d851fe7caef9c6c87ec5a073f44060112b9c (patch)
tree4078f6a0bbed03596af3da67b6a63615984ddd21 /base
parenta2039576fb698d50c6459d7f2ea66804dcbd33d6 (diff)
downloadscummvm-rg350-9b97d851fe7caef9c6c87ec5a073f44060112b9c.tar.gz
scummvm-rg350-9b97d851fe7caef9c6c87ec5a073f44060112b9c.tar.bz2
scummvm-rg350-9b97d851fe7caef9c6c87ec5a073f44060112b9c.zip
Add -c/--config option to specific alternate configuration file. Sorry Max, but it's damn useful for coverdiscs :)
svn-id: r12758
Diffstat (limited to 'base')
-rw-r--r--base/gameDetector.cpp5
-rw-r--r--base/main.cpp23
2 files changed, 28 insertions, 0 deletions
diff --git a/base/gameDetector.cpp b/base/gameDetector.cpp
index d6ccdb7af9..98f91a3796 100644
--- a/base/gameDetector.cpp
+++ b/base/gameDetector.cpp
@@ -48,6 +48,7 @@ static const char USAGE_STRING[] =
" -z, --list-games Display list of supported games and exit\n"
" -t, --list-targets Display list of configured targets and exit\n"
"\n"
+ " -c, --config=CONFIG Use alternate configuration file\n"
" -p, --path=PATH Path to where the game is installed\n"
" -x, --save-slot[=NUM] Save game slot to load (default: autosave)\n"
" -f, --fullscreen Force full-screen mode\n"
@@ -284,6 +285,10 @@ void GameDetector::parseCommandLine(int argc, char **argv) {
cmdValue = (shortCmdLower == s[1]);
s += 2;
+ DO_OPTION('c', "config")
+ // Dummy
+ END_OPTION
+
DO_OPTION('b', "boot-param")
ConfMan.set("boot_param", (int)strtol(option, 0, 10), kTransientDomain);
END_OPTION
diff --git a/base/main.cpp b/base/main.cpp
index 36409fe41e..bf33c75084 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -245,6 +245,7 @@ int main(int argc, char *argv[]) {
extern "C" int scummvm_main(GameDetector &detector, int argc, char *argv[]) {
#endif
OSystem::Property prop;
+ char *cfgFilename = NULL, *s=argv[1];
#if defined(UNIX)
/* On Unix, do a quick endian / alignement check before starting */
@@ -286,6 +287,28 @@ extern "C" int scummvm_main(GameDetector &detector, int argc, char *argv[]) {
#endif //defined(WIN32) && defined(USE_CONSOLE)
+
+ // Quick preparse of command-line, looking for alt configfile path
+ for (int i = argc - 1; i >= 1; i--) {
+ s = argv[i];
+ bool shortOpt = (s[0] == '-' && tolower(s[1]) == 'c');
+ bool longOpt = (s[0] == '-' && s[1] == '-' && s[2] == 'c' && s[3] == 'o' \
+ && s[4] == 'n' && s[5] == 'f' && s[6] == 'i' && s[7] == 'g');
+
+ if (shortOpt || longOpt) {
+ if (longOpt) s+=9;
+ if (shortOpt) s+=2;
+
+ if (*s == '\0')
+ break;
+
+ cfgFilename = s;
+ break;
+ }
+ }
+ if (cfgFilename != NULL)
+ ConfMan.switchFile(cfgFilename);
+
// Update the config file
ConfMan.set("versioninfo", gScummVMVersion, Common::ConfigManager::kApplicationDomain);