From ebea155b8ebe6a92701aa40155e548bc59f12dbb Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sat, 15 Apr 2006 13:58:01 +0000 Subject: Always use base 0 in strtol when parsing integer command line options / config file entries (this makes it possible to optionally use hex values) svn-id: r21911 --- base/gameDetector.cpp | 11 ++--------- common/config-manager.cpp | 5 ++++- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/base/gameDetector.cpp b/base/gameDetector.cpp index 4139b54d99..eec3d69276 100644 --- a/base/gameDetector.cpp +++ b/base/gameDetector.cpp @@ -294,7 +294,7 @@ GameDescriptor GameDetector::findGame(const String &gameName, const Plugin **plu DO_OPTION_OPT(shortCmd, longCmd, 0) \ if (!option) usage("Option '%s' requires an argument", argv[i]); \ char *endptr = 0; \ - int intValue; intValue = (int)strtol(option, &endptr, 10); \ + int intValue; intValue = (int)strtol(option, &endptr, 0); \ if (endptr == NULL || *endptr != 0) usage("--%s: Invalid number '%s'", longCmd, option); // Use this for boolean options; this distinguishes between "-x" and "-X", @@ -508,14 +508,7 @@ Common::String GameDetector::parseCommandLine(Common::StringMap &settings, int a END_OPTION #ifndef DISABLE_SCUMM - DO_LONG_OPTION("tempo") - // Use the special value '0' for the base in (int)strtol. - // Doing that makes it possible to enter hex values - // as "0x1234", but also decimal values ("123"). - int value = (int)strtol(option, 0, 0); - char buf[20]; - snprintf(buf, sizeof(buf), "%d", value); - settings["tempo"] = buf; + DO_LONG_OPTION_INT("tempo") END_OPTION DO_LONG_OPTION_BOOL("demo-mode") diff --git a/common/config-manager.cpp b/common/config-manager.cpp index ca30f5bb1e..b0de2d5ee6 100644 --- a/common/config-manager.cpp +++ b/common/config-manager.cpp @@ -425,7 +425,10 @@ int ConfigManager::getInt(const String &key, const String &domName) const { if (value.empty()) return 0; - int ivalue = (int)strtol(value.c_str(), &errpos, 10); + // We zse the special value '0' for the base passed to strtol. Doing that + // makes it possible to enter hex values as "0x1234", but also decimal + // values ("123") are still valid. + int ivalue = (int)strtol(value.c_str(), &errpos, 0); if (value.c_str() == errpos) error("ConfigManager::getInt(%s,%s): '%s' is not a valid integer", key.c_str(), domName.c_str(), errpos); -- cgit v1.2.3