From: Kees Monshouwer Date: Fri, 22 Nov 2013 13:29:49 +0000 (+0100) Subject: allow empty parent X-Git-Tag: auth-3.3.1~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff07f01f89dab98754e627992a471e9c475710ff;p=thirdparty%2Fpdns.git allow empty parent --- diff --git a/pdns/arguments.cc b/pdns/arguments.cc index 1e11d4d551..da481a1b2e 100644 --- a/pdns/arguments.cc +++ b/pdns/arguments.cc @@ -309,6 +309,7 @@ void ArgvMap::parseOne(const string &arg, const string &parseOnly, bool lax) { var=arg.substr(2); val=""; + d_cleared.insert(var); } else if(arg[0]=='-') { @@ -326,9 +327,9 @@ void ArgvMap::parseOne(const string &arg, const string &parseOnly, bool lax) val=val.substr(pos); if(parmIsset(var)) { - if (incremental) { - if (!params[var].empty()) { - params[var]+=","; + if (incremental && !d_cleared.count(var)) { + if (params[var].empty()) { + throw ArgException("Incremental parameter '"+var+"' without a parent"); } params[var]+=val; } else @@ -348,6 +349,7 @@ const vector&ArgvMap::getCommands() void ArgvMap::parse(int &argc, char **argv, bool lax) { d_cmds.clear(); + d_cleared.clear(); for(int n=1;n +#include #include #include #include @@ -123,6 +124,7 @@ private: map helpmap; map d_typeMap; vector d_cmds; + std::set d_cleared; }; extern ArgvMap &arg(); diff --git a/regression-tests/start-test-stop b/regression-tests/start-test-stop index f6e3731471..9d40ecb644 100755 --- a/regression-tests/start-test-stop +++ b/regression-tests/start-test-stop @@ -266,7 +266,7 @@ __EOF__ done $RUNWRAPPER $PDNS --daemon=no --local-port=$port --socket-dir=./ \ - --no-shuffle --launch=random,gmysql --gmysql-dnssec \ + --no-shuffle --launch --launch+=random --launch+=gmysql --launch+=random --gmysql-dnssec \ --fancy-records --send-root-referral \ --cache-ttl=0 --no-config \ --gmysql-dbname="$GMYSQLDB" \