]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Support for += syntax for options, candidate for ticket #502
authorAki Tuomi <cmouse@desteem.org>
Wed, 26 Jun 2013 20:40:52 +0000 (23:40 +0300)
committerAki Tuomi <cmouse@desteem.org>
Sun, 14 Jul 2013 15:28:28 +0000 (18:28 +0300)
pdns/arguments.cc

index 40e176d9ffee5d78a9043445000c1726a9dd8e95..49f981c4e385c537a3454d46514439705751bb7d 100644 (file)
@@ -293,8 +293,14 @@ void ArgvMap::parseOne(const string &arg, const string &parseOnly, bool lax)
 {
   string var, val;
   string::size_type pos;
-
-  if(!arg.find("--") &&(pos=arg.find("="))!=string::npos)  // this is a --port=25 case
+  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);
@@ -319,8 +325,15 @@ void ArgvMap::parseOne(const string &arg, const string &parseOnly, bool lax)
     if(pos && pos!=string::npos) 
       val=val.substr(pos);
 
-    if(parmIsset(var))
-      params[var]=val;
+    if(parmIsset(var)) {
+      if (incremental) {
+         if (!params[var].empty()) {
+           params[var]+=",";
+         }
+         params[var]+=val; 
+      } else 
+         params[var]=val;
+      }
     else
       if(!lax)
         throw ArgException("Trying to set unexisting parameter '"+var+"'");