From fc54ce58f454ab7bbd80cc89e46de7f8128e7bc8 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Sun, 14 Jul 2013 19:39:39 +0300 Subject: [PATCH] Fixed argument handling --- pdns/arguments.cc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pdns/arguments.cc b/pdns/arguments.cc index 849118c10..bc3bd1a4b 100644 --- a/pdns/arguments.cc +++ b/pdns/arguments.cc @@ -310,7 +310,6 @@ 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,16 +325,20 @@ void ArgvMap::parseOne(const string &arg, const string &parseOnly, bool lax) 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 && !d_cleared.count(var)) { - if (params[var].empty()) { + if (incremental) { + if (params[var].empty() && !d_cleared.count(var)) { throw ArgException("Incremental parameter '"+var+"' without a parent"); } - params[var]+=val; - } else + if (params[var].empty()) + params[var]=val; + else + params[var]+=", " + val; + } else { params[var]=val; } + } else if(!lax) throw ArgException("Trying to set unexisting parameter '"+var+"'"); -- 2.40.0