]> git.ipfire.org Git - thirdparty/pdns.git/blobdiff - pdns/arguments.hh
Merge pull request #7677 from rgacogne/dnsdist-logging-facility
[thirdparty/pdns.git] / pdns / arguments.hh
index c62ece7afc3231c37d3127ff85e52d7f40eb8040..93705958414023edfffbe1a9327dc99decdd061c 100644 (file)
@@ -1,21 +1,24 @@
 /*
-    PowerDNS Versatile Database Driven Nameserver
-    Copyright (C) 2002  PowerDNS.COM BV
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License version 2
-    as published by the Free Software Foundation
-    
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+ * This file is part of PowerDNS or dnsdist.
+ * Copyright -- PowerDNS.COM B.V. and its contributors
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * In addition, for the avoidance of any doubt, permission is granted to
+ * link this program with OpenSSL and to (re)distribute the binaries
+ * produced as the result of such linking.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
 #ifndef ARGUMENTS_HH
 #define ARGUMENTS_HH
 
 #include <iostream>
 #include "misc.hh"
 #include "pdnsexception.hh"
-#ifndef WIN32
-# include <sys/types.h>
-# include <pwd.h>
-# include <grp.h>
-#endif
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
 
 #include "namespaces.hh"
 
@@ -61,7 +62,7 @@ typedef PDNSException ArgException;
     
     R.parse(argc, argv); // read the arguments from main()
     
-    cout<<"Will we be a deamon?: "<<R.isset("daemon")<<endl;
+    cout<<"Will we be a daemon?: "<<R.isset("daemon")<<endl;
     cout<<"Our port will be "<<R["port"]<<endl;
     
     map<string,string>::const_iterator i;
@@ -91,24 +92,23 @@ public:
   {
     return file(fname,true);
   }
+  bool parseFile(const char *fname, const string& arg, bool lax); //<! parse one line
   typedef map<string,string> param_t; //!< use this if you need to know the content of the map
   bool parmIsset(const string &var); //!< Checks if a parameter is set to *a* value
   bool mustDo(const string &var); //!< if a switch is given, if we must do something (--help)
-  int asNum(const string &var); //!< return a variable value as a number
-#ifndef WIN32
-  mode_t asMode(const string &var); //<!< return value interpreted as octal number
+  int asNum(const string &var, int def=0); //!< return a variable value as a number or the default if the variable is empty
+  mode_t asMode(const string &var); //!< return value interpreted as octal number
   uid_t asUid(const string &var); //!< return user id, resolves if necessary
   gid_t asGid(const string &var); //!< return group id, resolves if necessary
-#endif
   double asDouble(const string &var); //!< return a variable value as a number
   string &set(const string &); //!< Gives a writable reference and allocates space for it
-  string &set(const string &, const string &); //!< Does the same but also allows to specify a help message
+  string &set(const string &, const string &); //!< Does the same but also allows one to specify a help message
   void setCmd(const string &, const string &); //!< Add a command flag
   string &setSwitch(const string &, const string &); //!< Add a command flag
   string helpstring(string prefix=""); //!< generates the --help
   string configstring(bool current=false); //!< generates the --mkconfig
   bool contains(const string &var, const string &val);
-  bool isEmpty(const string &var); //<! checks if variable has value
+  bool isEmpty(const string &var); //!< checks if variable has value
 
   vector<string>list();
   string getHelp(const string &item);
@@ -117,6 +117,7 @@ public:
   const param_t::const_iterator end(); //!< iterator semantics
   const string &operator[](const string &); //!< iterator semantics
   const vector<string>&getCommands();
+  void gatherIncludes(std::vector<std::string> &extraConfigs);
 private:
   void parseOne(const string &unparsed, const string &parseOnly="", bool lax=false);
   typedef map<string,string> params_t;