aboutsummaryrefslogtreecommitdiff
path: root/src/util.cpp
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2012-02-06 13:55:11 -0500
committerGavin Andresen <gavinandresen@gmail.com>2012-02-07 09:14:31 -0500
commit3ad9f8a70fda629d0ec0b87631d1361178763733 (patch)
tree2b5d3f08689aafb3d0b0de92b832529871db9b31 /src/util.cpp
parent3ae0735553e078bcedffd0a657bee106ab79a5d4 (diff)
New GetArg features: allow --, and booleans can be -foo or -nofoo
Diffstat (limited to 'src/util.cpp')
-rw-r--r--src/util.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/util.cpp b/src/util.cpp
index b4f8543566..8bbdfbc834 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -475,9 +475,37 @@ void ParseParameters(int argc, const char*const argv[])
#endif
if (psz[0] != '-')
break;
+
mapArgs[psz] = pszValue;
mapMultiArgs[psz].push_back(pszValue);
}
+
+ // New 0.6 features:
+ BOOST_FOREACH(const PAIRTYPE(string,string)& entry, mapArgs)
+ {
+ string name = entry.first;
+
+ // interpret --foo as -foo (as long as both are not set)
+ if (name.find("--") == 0)
+ {
+ std::string singleDash(name.begin()+1, name.end());
+ if (mapArgs.count(singleDash) == 0)
+ mapArgs[singleDash] = entry.second;
+ name = singleDash;
+ }
+
+ // interpret -nofoo as -foo=0 (and -nofoo=0 as -foo=1, as long as -foo not set)
+ if (name.find("-no") == 0)
+ {
+ std::string positive("-");
+ positive.append(name.begin()+3, name.end());
+ if (mapArgs.count(positive) == 0)
+ {
+ bool value = !GetBoolArg(name);
+ mapArgs[positive] = (value ? "1" : "0");
+ }
+ }
+ }
}
std::string GetArg(const std::string& strArg, const std::string& strDefault)