]> granicus.if.org Git - pdns/commitdiff
add --no-config flag to pdns_control, thanks Kees Monshouwer
authorPeter van Dijk <peter.van.dijk@netherlabs.nl>
Fri, 12 Oct 2012 09:47:01 +0000 (09:47 +0000)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Fri, 12 Oct 2012 09:47:01 +0000 (09:47 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2810 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/dynloader.cc

index 1eba2dd30c900379d8b3edde67925d4df9e06567..ed25e2909b808e6dbd2ee067895104418ecbe647 100644 (file)
@@ -60,6 +60,7 @@ int main(int argc, char **argv)
   ::arg().set("secret","Secret needed to connect to remote PowerDNS");
 
   ::arg().set("config-name","Name of this virtual configuration - will rename the binary image")="";
+  ::arg().setCmd("no-config","Don't parse configuration file");
   ::arg().set("chroot","")="";
   ::arg().setCmd("help","Provide a helpful message");
   ::arg().laxParse(argc,argv);
@@ -70,26 +71,32 @@ int main(int argc, char **argv)
     exit(99);
   }
 
+  const vector<string>commands=::arg().getCommands();
+
+  if(commands.empty()) {
+    cerr<<"No command passed"<<endl;
+    return 0;
+  }
+
   if(::arg()["config-name"]!="") 
     s_programname+="-"+::arg()["config-name"];
 
   string configname=::arg()["config-dir"]+"/"+s_programname+".conf";
   cleanSlashes(configname);
+
+  if(!::arg().mustDo("no-config")) {
+    ::arg().laxFile(configname.c_str());
+    ::arg().laxParse(argc,argv); // reparse so the commandline still wins
+  }
   
-  ::arg().laxFile(configname.c_str());
   string socketname=::arg()["socket-dir"]+"/"+s_programname+".controlsocket";
+  cleanSlashes(socketname);
+  
   if(::arg()["chroot"].empty())
     localdir="/tmp";
   else
     localdir=dirname(strdup(socketname.c_str()));
 
-  const vector<string>&commands=::arg().getCommands();
-
-  if(commands.empty()) {
-    cerr<<"No command passed"<<endl;
-    return 0;
-  }
-
   try {
     string command=commands[0];
     shared_ptr<DynMessenger> D;