From 3ad9f8a70fda629d0ec0b87631d1361178763733 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 6 Feb 2012 13:55:11 -0500 Subject: New GetArg features: allow --, and booleans can be -foo or -nofoo --- src/util.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/util.cpp') 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) -- cgit v1.2.3