aboutsummaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorMatthew Hoops2011-05-31 14:16:29 -0400
committerMatthew Hoops2011-05-31 14:16:29 -0400
commitaa49b38c5a8032586cb94fc4ca07149eecabe64a (patch)
treeea5c7617f8c482c8cf4141b728b3ccff5a7f84c7 /base
parentd3ea9ab2a9334747eb445c1b45aa30cb17ffdf1b (diff)
parentc86a6c466fabe31fbf36363aa8d0ac8ea6001b9f (diff)
downloadscummvm-rg350-aa49b38c5a8032586cb94fc4ca07149eecabe64a.tar.gz
scummvm-rg350-aa49b38c5a8032586cb94fc4ca07149eecabe64a.tar.bz2
scummvm-rg350-aa49b38c5a8032586cb94fc4ca07149eecabe64a.zip
Merge remote branch 'upstream/master' into t7g-ios
Conflicts: engines/groovie/script.cpp
Diffstat (limited to 'base')
-rw-r--r--base/commandLine.cpp47
-rw-r--r--base/commandLine.h24
-rw-r--r--base/main.cpp6
-rw-r--r--base/main.h3
-rw-r--r--base/plugins.cpp4
-rw-r--r--base/plugins.h5
-rw-r--r--base/version.cpp3
-rw-r--r--base/version.h3
8 files changed, 37 insertions, 58 deletions
diff --git a/base/commandLine.cpp b/base/commandLine.cpp
index 05e1d2c131..78eea50082 100644
--- a/base/commandLine.cpp
+++ b/base/commandLine.cpp
@@ -18,14 +18,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $URL$
- * $Id$
- *
*/
// FIXME: Avoid using printf
#define FORBIDDEN_SYMBOL_EXCEPTION_printf
+#define FORBIDDEN_SYMBOL_EXCEPTION_exit
+
#include "engines/metaengine.h"
#include "base/commandLine.h"
#include "base/plugins.h"
@@ -888,7 +887,8 @@ Common::String parseCommandLine(Common::StringMap &settings, int argc, const cha
#endif // DISABLE_COMMAND_LINE
-Common::Error processSettings(Common::String &command, Common::StringMap &settings) {
+bool processSettings(Common::String &command, Common::StringMap &settings, Common::Error &err) {
+ err = Common::kNoError;
#ifndef DISABLE_COMMAND_LINE
@@ -897,33 +897,34 @@ Common::Error processSettings(Common::String &command, Common::StringMap &settin
// have been loaded.
if (command == "list-targets") {
listTargets();
- return Common::kNoError;
+ return true;
} else if (command == "list-games") {
listGames();
- return Common::kNoError;
+ return true;
} else if (command == "list-saves") {
- return listSaves(settings["list-saves"].c_str());
+ err = listSaves(settings["list-saves"].c_str());
+ return true;
} else if (command == "list-themes") {
listThemes();
- return Common::kNoError;
+ return true;
} else if (command == "version") {
printf("%s\n", gScummVMFullVersion);
printf("Features compiled in: %s\n", gScummVMFeatures);
- return Common::kNoError;
+ return true;
} else if (command == "help") {
printf(HELP_STRING, s_appName);
- return Common::kNoError;
+ return true;
}
#ifdef DETECTOR_TESTING_HACK
else if (command == "test-detector") {
runDetectorTest();
- return Common::kNoError;
+ return true;
}
#endif
#ifdef UPGRADE_ALL_TARGETS_HACK
else if (command == "upgrade-targets") {
upgradeTargets();
- return Common::kNoError;
+ return true;
}
#endif
@@ -961,26 +962,6 @@ Common::Error processSettings(Common::String &command, Common::StringMap &settin
}
- // The user can override the savepath with the SCUMMVM_SAVEPATH
- // environment variable. This is weaker than a --savepath on the
- // command line, but overrides the default savepath, hence it is
- // handled here, just before the command line gets parsed.
-#if !defined(_WIN32_WCE) && !defined(__GP32__) && !defined(ANDROID)
- if (!settings.contains("savepath")) {
- const char *dir = getenv("SCUMMVM_SAVEPATH");
- if (dir && *dir && strlen(dir) < MAXPATHLEN) {
- Common::FSNode saveDir(dir);
- if (!saveDir.exists()) {
- warning("Non-existent SCUMMVM_SAVEPATH save path. It will be ignored");
- } else if (!saveDir.isWritable()) {
- warning("Non-writable SCUMMVM_SAVEPATH save path. It will be ignored");
- } else {
- settings["savepath"] = dir;
- }
- }
- }
-#endif
-
// Finally, store the command line settings into the config manager.
for (Common::StringMap::const_iterator x = settings.begin(); x != settings.end(); ++x) {
Common::String key(x->_key);
@@ -995,7 +976,7 @@ Common::Error processSettings(Common::String &command, Common::StringMap &settin
ConfMan.set(key, value, Common::ConfigManager::kTransientDomain);
}
- return Common::kArgumentNotProcessed;
+ return false;
}
} // End of namespace Base
diff --git a/base/commandLine.h b/base/commandLine.h
index 6205c914e0..2798ab0934 100644
--- a/base/commandLine.h
+++ b/base/commandLine.h
@@ -18,9 +18,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $URL$
- * $Id$
- *
*/
#ifndef COMMON_COMMAND_LINE_H
@@ -35,9 +32,28 @@ class String;
namespace Base {
+/**
+ * Register various defaults with the ConfigManager.
+ */
void registerDefaults();
+
+/**
+ * Parse the command line for options and a command; the options
+ * are stored in the map 'settings, the command (if any) is returned.
+ */
Common::String parseCommandLine(Common::StringMap &settings, int argc, const char * const *argv);
-Common::Error processSettings(Common::String &command, Common::StringMap &settings);
+
+/**
+ * Process the command line options and arguments.
+ * Returns true if everything was handled and ScummVM should quit
+ * (e.g. because "--help" was specified, and handled).
+ *
+ * @param[in] command the command as returned by parseCommandLine
+ * @param[in] settings the settings as returned by parseCommandLine
+ * @param[out] err indicates whether any error occurred, and which
+ * @return true if the command was completely processed and ScummVM should quit, false otherwise
+ */
+bool processSettings(Common::String &command, Common::StringMap &settings, Common::Error &err);
} // End of namespace Base
diff --git a/base/main.cpp b/base/main.cpp
index b34eb6966a..906f4c9242 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -18,9 +18,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $URL$
- * $Id$
- *
*/
/*! \mainpage %ScummVM Source Reference
@@ -352,8 +349,7 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) {
Common::Error res;
// TODO: deal with settings that require plugins to be loaded
- res = Base::processSettings(command, settings);
- if (res.getCode() != Common::kArgumentNotProcessed) {
+ if (Base::processSettings(command, settings, res)) {
if (res.getCode() != Common::kNoError)
warning("%s", res.getDesc().c_str());
return res.getCode();
diff --git a/base/main.h b/base/main.h
index 93e73f55e6..3d75931454 100644
--- a/base/main.h
+++ b/base/main.h
@@ -18,9 +18,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $URL$
- * $Id$
- *
*/
#ifndef BASE_MAIN_H
diff --git a/base/plugins.cpp b/base/plugins.cpp
index 38b5626fe2..4a3b201714 100644
--- a/base/plugins.cpp
+++ b/base/plugins.cpp
@@ -18,9 +18,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $URL$
- * $Id$
- *
*/
#include "base/plugins.h"
@@ -228,6 +225,7 @@ public:
LINK_PLUGIN(AMIGA)
LINK_PLUGIN(APPLEIIGS)
LINK_PLUGIN(TOWNS)
+ LINK_PLUGIN(PC98)
#if defined(USE_TIMIDITY)
LINK_PLUGIN(TIMIDITY)
#endif
diff --git a/base/plugins.h b/base/plugins.h
index d8f1cb96ee..a1ae734159 100644
--- a/base/plugins.h
+++ b/base/plugins.h
@@ -18,9 +18,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $URL$
- * $Id$
- *
*/
#ifndef BASE_PLUGINS_H
@@ -83,7 +80,7 @@ extern int pluginTypeVersions[PLUGIN_TYPE_MAX];
(ENABLE_##ID && !PLUGIN_ENABLED_DYNAMIC(ID))
#define PLUGIN_ENABLED_DYNAMIC(ID) \
- (ENABLE_##ID && (ENABLE_##ID == DYNAMIC_PLUGIN) && DYNAMIC_MODULES)
+ (ENABLE_##ID && (ENABLE_##ID == DYNAMIC_PLUGIN) && defined(DYNAMIC_MODULES))
// see comments in backends/plugins/elf/elf-provider.cpp
#if defined(USE_ELF_LOADER) && defined(ELF_LOADER_CXA_ATEXIT)
diff --git a/base/version.cpp b/base/version.cpp
index a1f6d60fa0..3083034714 100644
--- a/base/version.cpp
+++ b/base/version.cpp
@@ -18,9 +18,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * $URL$
- * $Id$
- *
*/
#include "common/scummsys.h"
diff --git a/base/version.h b/base/version.h
index 1ad6d48b8b..a5c25c03f4 100644
--- a/base/version.h
+++ b/base/version.h
@@ -17,9 +17,6 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
*/
#ifndef BASE_VERSION_H