]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conf.c
Pidfile_Create(): Don't leak file descriptor on error path
[ngircd-alex.git] / src / ngircd / conf.c
index f18016b5c13f7a852ca61ce688a0048980370ef4..54269009d1ee433bb537fa1c4ef140f34ea2cb57 100644 (file)
@@ -58,7 +58,7 @@ static int New_Server_Idx;
 static char Conf_MotdFile[FNAME_LEN];
 
 static void Set_Defaults PARAMS(( bool InitServers ));
-static bool Read_Config PARAMS(( bool ngircd_starting ));
+static bool Read_Config PARAMS(( bool TestOnly, bool IsStarting ));
 static bool Validate_Config PARAMS(( bool TestOnly, bool Rehash ));
 
 static void Handle_GLOBAL PARAMS(( int Line, char *Var, char *Arg ));
@@ -206,7 +206,7 @@ ports_parse(array *a, int Line, char *Arg)
 GLOBAL void
 Conf_Init( void )
 {
-       Read_Config( true );
+       Read_Config(false, true);
        Validate_Config(false, false);
 }
 
@@ -218,7 +218,7 @@ Conf_Init( void )
 GLOBAL bool
 Conf_Rehash( void )
 {
-       if (!Read_Config(false))
+       if (!Read_Config(false, false))
                return false;
        Validate_Config(false, true);
 
@@ -299,7 +299,7 @@ Conf_Test( void )
 
        Use_Log = false;
 
-       if (! Read_Config(true))
+       if (!Read_Config(true, true))
                return 1;
 
        config_valid = Validate_Config(true, false);
@@ -778,7 +778,7 @@ Read_Motd(const char *filename)
  *                             successfully; false otherwise.
  */
 static bool
-Read_Config( bool ngircd_starting )
+Read_Config(bool TestOnly, bool IsStarting)
 {
        char section[LINE_LEN], str[LINE_LEN], *var, *arg, *ptr;
        const UINT16 defaultport = 6667;
@@ -792,16 +792,19 @@ Read_Config( bool ngircd_starting )
                /* No configuration file found! */
                Config_Error( LOG_ALERT, "Can't read configuration \"%s\": %s",
                                        NGIRCd_ConfFile, strerror( errno ));
-               if (!ngircd_starting)
+               if (!IsStarting)
                        return false;
                Config_Error( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
                exit( 1 );
        }
 
        opers_free();
-       Set_Defaults( ngircd_starting );
+       Set_Defaults(IsStarting);
 
-       Config_Error( LOG_INFO, "Reading configuration from \"%s\" ...", NGIRCd_ConfFile );
+       if (TestOnly)
+               Config_Error(LOG_INFO,
+                            "Reading configuration from \"%s\" ...",
+                            NGIRCd_ConfFile );
 
        /* Clean up server configuration structure: mark all already
         * configured servers as "once" so that they are deleted
@@ -854,10 +857,13 @@ Read_Config( bool ngircd_starting )
                /* Is this the beginning of a new section? */
                if(( str[0] == '[' ) && ( str[strlen( str ) - 1] == ']' )) {
                        strlcpy( section, str, sizeof( section ));
-                       if (strcasecmp(section, "[GLOBAL]") == 0 ||
-                           strcasecmp(section, "[LIMITS]") == 0 ||
-                           strcasecmp(section, "[OPTIONS]") == 0 ||
-                           strcasecmp(section, "[SSL]") == 0)
+                       if (strcasecmp(section, "[GLOBAL]") == 0
+                           || strcasecmp(section, "[LIMITS]") == 0
+                           || strcasecmp(section, "[OPTIONS]") == 0
+#ifdef SSL_SUPPORT
+                           || strcasecmp(section, "[SSL]") == 0
+#endif
+                           )
                                continue;
 
                        if( strcasecmp( section, "[SERVER]" ) == 0 ) {