]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
allow empty parent
authorKees Monshouwer <mind04@monshouwer.org>
Fri, 22 Nov 2013 13:29:49 +0000 (14:29 +0100)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Tue, 26 Nov 2013 11:26:31 +0000 (12:26 +0100)
pdns/arguments.cc
pdns/arguments.hh
regression-tests/start-test-stop

index 1e11d4d551001df44503fa22e3704a8cffc5277d..da481a1b2ea45e0c81b9fae5944b7e01272dd3c5 100644 (file)
@@ -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<string>&ArgvMap::getCommands()
 void ArgvMap::parse(int &argc, char **argv, bool lax)
 {
   d_cmds.clear();
+  d_cleared.clear();
   for(int n=1;n<argc;n++) {
     parseOne(argv[n],"",lax);
   }
index 865239337c72f0502de1966efc54d4af5afb9a9b..ba51b23bd2e4dbe89a28b7ddacb188acbb379b99 100644 (file)
@@ -20,6 +20,7 @@
 #define ARGUMENTS_HH
 
 #include <map>
+#include <set>
 #include <string>
 #include <vector>
 #include <fstream>
@@ -123,6 +124,7 @@ private:
   map<string,string> helpmap;
   map<string,string> d_typeMap;
   vector<string> d_cmds;
+  std::set<string> d_cleared;
 };
 
 extern ArgvMap &arg();
index f6e37314715d58d0e0fc6aa402b9b590a670494b..9d40ecb6440bbe690f17495ac3f35aae66b125a7 100755 (executable)
@@ -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" \