New GetArg features: allow --, and booleans can be -foo or -nofoo
This commit is contained in:
28
src/util.cpp
28
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)
|
||||
|
||||
Reference in New Issue
Block a user