From: Kees Monshouwer Date: Fri, 26 Jul 2013 20:57:58 +0000 (+0200) Subject: improve += options X-Git-Tag: rec-3.6.0-rc1~532^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4d752b05af718d63bd1775dfb1f552378c3179d8;p=pdns improve += options --- diff --git a/pdns/arguments.cc b/pdns/arguments.cc index bbad995e5..f1b279030 100644 --- a/pdns/arguments.cc +++ b/pdns/arguments.cc @@ -299,53 +299,56 @@ void ArgvMap::parseOne(const string &arg, const string &parseOnly, bool lax) string var, val; string::size_type pos; bool incremental = false; - if(!arg.find("--") &&(pos=arg.find("+="))!=string::npos) // this is a --port+=25 case - { - var=arg.substr(2,pos-2); - val=arg.substr(pos+2); - incremental = true; - } - else if(!arg.find("--") &&(pos=arg.find("="))!=string::npos) // this is a --port=25 case - { - var=arg.substr(2,pos-2); - val=arg.substr(pos+1); - } + + if(!arg.find("--") && (pos=arg.find("+="))!=string::npos) // this is a --port+=25 case + { + var=arg.substr(2,pos-2); + val=arg.substr(pos+2); + incremental = true; + } + else if(!arg.find("--") && (pos=arg.find("="))!=string::npos) // this is a --port=25 case + { + var=arg.substr(2,pos-2); + val=arg.substr(pos+1); + } else if(!arg.find("--") && (arg.find("=")==string::npos)) // this is a --daemon case - { - var=arg.substr(2); - val=""; - } + { + var=arg.substr(2); + val=""; + } else if(arg[0]=='-') - { - var=arg.substr(1); - val=""; - } - else { // command - d_cmds.push_back(arg); + { + var=arg.substr(1); + val=""; } + else // command + d_cmds.push_back(arg); if(var!="" && (parseOnly.empty() || var==parseOnly)) { - pos=val.find_first_not_of(" \t"); // strip leading whitespace if(pos && pos!=string::npos) val=val.substr(pos); - if (!incremental && val.empty()) d_cleared.insert(var); - if(parmIsset(var)) { - if (incremental) { - if (params[var].empty() && !d_cleared.count(var)) { - throw ArgException("Incremental parameter '"+var+"' without a parent"); - } - if (params[var].empty()) - params[var]=val; - else - params[var]+=", " + val; - } else { - params[var]=val; + if(parmIsset(var)) + { + if(incremental) + { + if(params[var].empty()) + { + if(!d_cleared.count(var)) + throw ArgException("Incremental parameter '"+var+"' without a parent"); + params[var]=val; + } + else + params[var]+=", " + val; + } + else + { + params[var]=val; + d_cleared.insert(var); } } - else - if(!lax) - throw ArgException("Trying to set unexisting parameter '"+var+"'"); + else if(!lax) + throw ArgException("Trying to set unexisting parameter '"+var+"'"); } } diff --git a/regression-tests/start-test-stop b/regression-tests/start-test-stop index 3acfb597d..05bbd107b 100755 --- a/regression-tests/start-test-stop +++ b/regression-tests/start-test-stop @@ -326,7 +326,7 @@ __EOF__ done $RUNWRAPPER $PDNS --daemon=no --local-port=$port --socket-dir=./ \ - --no-shuffle --launch --launch+=random --launch+=gmysql --gmysql-dnssec \ + --no-shuffle --launch --launch+=random --launch+=gmysql --launch+=random --gmysql-dnssec \ --send-root-referral \ --allow-2136-from=127.0.0.0/8 --experimental-rfc2136=yes --experimental-direct-dnskey=yes \ --cache-ttl=$cachettl --no-config \