aboutsummaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorThierry Crozat2017-05-02 23:59:23 +0100
committerThierry Crozat2017-05-03 00:17:16 +0100
commitee0ac2662189c67a2c2779021488312731b13f79 (patch)
tree23724eb6ea8d2ffce77d3c01ff288ddfbdf10e0f /base
parentbfd2b487eba0a51a9e86b79b567bdd34b65008df (diff)
downloadscummvm-rg350-ee0ac2662189c67a2c2779021488312731b13f79.tar.gz
scummvm-rg350-ee0ac2662189c67a2c2779021488312731b13f79.tar.bz2
scummvm-rg350-ee0ac2662189c67a2c2779021488312731b13f79.zip
BASE: Fix auto-detect command to detect and start game
There were several issues. The first one was introduced recently and caused the preferred target to be used as a game ID, which resulted in an error when this is not a valid game ID. Thus this fixes bug #9754. The other issues were here since the auto-detect command was added and caused other command line options, suh as the path, to be lost. This usually resulted in a failure to start the game as the data files could not be found (unless the ID happened to be the same name as a target previously added). This also caused a reappearance of the old bug
Diffstat (limited to 'base')
-rw-r--r--base/commandLine.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/base/commandLine.cpp b/base/commandLine.cpp
index 15f064f9e3..0c87012769 100644
--- a/base/commandLine.cpp
+++ b/base/commandLine.cpp
@@ -855,11 +855,11 @@ static bool addGameToConf(const GameDescriptor &gd) {
return true;
}
-/** Display all games in the given directory, add it to config according to input */
-static bool detectGames(Common::String path, bool addToConfig) {
+/** Display all games in the given directory, return ID of first detected game */
+static Common::String detectGames(Common::String path) {
GameList candidates = getGameList(path);
if (candidates.empty())
- return false;
+ return Common::String();
// Print all the candidate found
printf("ID Description\n");
@@ -868,11 +868,7 @@ static bool detectGames(Common::String path, bool addToConfig) {
printf("%-20s %s\n", v->gameid().c_str(), v->description().c_str());
}
- if (addToConfig) {
- Common::String domain = candidates[0].preferredtarget();
- ConfMan.setActiveDomain(domain);
- }
- return true;
+ return candidates[0].gameid();
}
/** Add one of the games in the given directory, or current directory if empty */
@@ -1194,11 +1190,15 @@ bool processSettings(Common::String &command, Common::StringMap &settings, Commo
printf(HELP_STRING, s_appName);
return true;
} else if (command == "auto-detect") {
- // If auto-detects succeed, we want to return false so that the game is started
- return !detectGames(settings["path"], true);
- //return true;
+ // If auto-detects fails (returns an empty ID) return true to close ScummVM.
+ // If we get a non-empty ID, we store it in command so that it gets processed together with the
+ // other command line options below.
+ command = detectGames(settings["path"]);
+ if (command.empty())
+ return true;
} else if (command == "detect") {
- detectGames(settings["path"], false);
+ // Ignore the return value of detectGame.
+ detectGames(settings["path"]);
return true;
} else if (command == "add") {
addGame(settings["path"]);