]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/configreader.h
Probably doesnt run
[user/henk/code/inspircd.git] / include / configreader.h
index 617059cf44c5584a5b9bef9c157d393937838d72..d8fa3b418075c7d2977167aa958a18074998e582 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
@@ -68,10 +68,8 @@ class ValueItem
        /** Initialize with a bool */
        ValueItem(bool value);
        /** Initialize with a char pointer */
-       ValueItem(char* value);
+       ValueItem(const char* value);
        /** Change value to a char pointer */
-       void Set(char* value);
-       /** Change value to a const char pointer */
        void Set(const char* val);
        /** Change value to an int */
        void Set(int value);
@@ -166,11 +164,11 @@ typedef bool (*MultiNotify)(ServerConfig* conf, const char*);
 struct InitialConfig
 {
        /** Tag name */
-       char* tag;
+       const char* tag;
        /** Value name */
-       char* value;
+       const char* value;
        /** Default, if not defined */
-       char* default_value;
+       const char* default_value;
        /** Value containers */
        ValueContainerBase* val;
        /** Data types */
@@ -187,11 +185,11 @@ struct MultiConfig
        /** Tag name */
        const char*     tag;
        /** One or more items within tag */
-       char*           items[17];
+       const char*     items[18];
        /** One or more defaults for items within tags */
-       char*           items_default[17];
+       const char* items_default[18];
        /** One or more data types */
-       int             datatype[17];
+       int             datatype[18];
        /** Initialization function */
        MultiNotify     init_function;
        /** Validation function */
@@ -232,17 +230,28 @@ class CoreExport ServerConfig : public Extensible
         * configutation, appending errors to errorstream
         * and setting error if an error has occured.
         */
-       bool ParseLine(ConfigDataHash &target, std::string &line, long &linenumber, std::ostringstream &errorstream);
+       bool ParseLine(ConfigDataHash &target, std::string &line, long &linenumber, std::ostringstream &errorstream, int pass, std::istream* scan_for_includes_only);
   
        /** Process an include directive
         */
-       bool DoInclude(ConfigDataHash &target, const std::string &file, std::ostringstream &errorstream);
+       bool DoInclude(ConfigDataHash &target, const std::string &file, std::ostringstream &errorstream, int pass, std::istream* scan_for_includes_only);
 
        /** Check that there is only one of each configuration item
         */
-       bool CheckOnce(char* tag);
-  
-  public:
+       bool CheckOnce(const char* tag);
+
+ public:
+
+       std::ostringstream errstr;
+
+       ConfigDataHash newconfig;
+
+       std::map<std::string, std::istream*> IncludedFiles;
+
+       std::map<std::string, bool> CompletedFiles;
+
+       size_t TotalDownloaded;
+       size_t FileErrors;
 
        /** Used to indicate who we announce invites to on a channel */
        enum InviteAnnounceState { INVITE_ANNOUNCE_NONE, INVITE_ANNOUNCE_ALL, INVITE_ANNOUNCE_OPS, INVITE_ANNOUNCE_DYNAMIC };
@@ -251,6 +260,8 @@ class CoreExport ServerConfig : public Extensible
        Validator DNSServerValidator;
 
        InspIRCd* GetInstance();
+
+       int DoDownloads();
          
        /** This holds all the information in the config file,
         * it's indexed by tag name to a vector of key/values.
@@ -313,6 +324,10 @@ class CoreExport ServerConfig : public Extensible
         */
        char restartpass[MAXBUF];
 
+       /** The hash method for *BOTH* the die and restart passwords.
+        */
+       char powerhash[MAXBUF];
+
        /** The pathname and filename of the message of the
         * day file, as defined by the administrator.
         */
@@ -335,6 +350,18 @@ class CoreExport ServerConfig : public Extensible
         */
        char FixedQuit[MAXBUF];
 
+       /** The part prefix in use, or an empty string
+        */
+       char PrefixPart[MAXBUF];
+
+       /** The part suffix in use, or an empty string
+        */
+       char SuffixPart[MAXBUF];
+
+       /** The fixed part message in use, or an empty string
+        */
+       char FixedPart[MAXBUF];
+
        /** The last string found within a <die> tag, or
         * an empty string.
         */
@@ -600,7 +627,12 @@ class CoreExport ServerConfig : public Extensible
         * makes code simpler. 0AA, 1BB etc with letters are reserved
         * for services use.
         */
-       int sid;
+       char sid[MAXBUF];
+
+       /** True if we have been told to run the testsuite from the commandline,
+        * rather than entering the mainloop.
+        */
+       bool TestSuite;
 
        /** Construct a new ServerConfig
         */
@@ -626,7 +658,7 @@ class CoreExport ServerConfig : public Extensible
         * and initialize this class. All other methods
         * should be used only by the core.
         */
-       void Read(bool bail, User* user);
+       void Read(bool bail, User* user, int pass);
 
        /** Read a file into a file_cache object
         */
@@ -636,19 +668,19 @@ class CoreExport ServerConfig : public Extensible
         * @param bail If this is set to true, the error is sent to the console, and the program exits
         * @param user If this is set to a non-null value, and bail is false, the errors are spooled to
         * this user as SNOTICEs.
-        * If the parameter is NULL, the messages are spooled to all users via WriteOpers as SNOTICEs.
+        * If the parameter is NULL, the messages are spooled to all opers.
         */
        void ReportConfigError(const std::string &errormessage, bool bail, User* user);
 
        /** Load 'filename' into 'target', with the new config parser everything is parsed into
         * tag/key/value at load-time rather than at read-value time.
         */
-       bool LoadConf(ConfigDataHash &target, const char* filename, std::ostringstream &errorstream);
+       bool LoadConf(ConfigDataHash &target, const char* filename, std::ostringstream &errorstream, int pass, std::istream* scan_for_includs_only);
 
        /** Load 'filename' into 'target', with the new config parser everything is parsed into
         * tag/key/value at load-time rather than at read-value time.
         */
-       bool LoadConf(ConfigDataHash &target, const std::string &filename, std::ostringstream &errorstream);
+       bool LoadConf(ConfigDataHash &target, const std::string &filename, std::ostringstream &errorstream, int pass, std::istream* scan_for_includs_only = NULL);
        
        /* Both these return true if the value existed or false otherwise */