]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
allow empty parent
authorKees Monshouwer <mind04@monshouwer.org>
Sun, 14 Jul 2013 00:02:37 +0000 (02:02 +0200)
committerAki Tuomi <cmouse@desteem.org>
Sun, 14 Jul 2013 15:30:45 +0000 (18:30 +0300)
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 b4331c2524c01a1a31d9dc16da068e8d9518bfbe..30c74f28266e33f14e23c882e99e3498fffbf5e3 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 344c8bc53e1631b3c891a82b462405afd8fda89f..52762df823fedebb7b3903f5b62a2b1757e285e2 100755 (executable)
@@ -307,7 +307,7 @@ __EOF__
                        done
 
                        $RUNWRAPPER $PDNS --daemon=no --local-port=$port --socket-dir=./  \
-                               --no-shuffle --launch=random --launch+=gmysql --gmysql-dnssec \
+                               --no-shuffle --launch --launch+=random --launch+=gmysql --gmysql-dnssec \
                                --fancy-records --send-root-referral \
                                --cache-ttl=0 --no-config \
                                --gmysql-dbname="$GMYSQLDB" \