+static bool Use_Log = true;
+static CONF_SERVER New_Server;
+static int New_Server_Idx;
+
+static size_t Conf_Oper_Count;
+static size_t Conf_Channel_Count;
+static char Conf_MotdFile[FNAME_LEN];
+
+static void Set_Defaults PARAMS(( bool InitServers ));
+static bool Read_Config PARAMS(( bool ngircd_starting ));
+static bool Validate_Config PARAMS(( bool TestOnly, bool Rehash ));
+
+static void Handle_GLOBAL PARAMS(( int Line, char *Var, char *Arg ));
+static void Handle_OPERATOR PARAMS(( int Line, char *Var, char *Arg ));
+static void Handle_SERVER PARAMS(( int Line, char *Var, char *Arg ));
+static void Handle_CHANNEL PARAMS(( int Line, char *Var, char *Arg ));
+
+static void Config_Error PARAMS(( const int Level, const char *Format, ... ));
+
+static void Config_Error_NaN PARAMS(( const int LINE, const char *Value ));
+static void Config_Error_TooLong PARAMS(( const int LINE, const char *Value ));
+
+static void Init_Server_Struct PARAMS(( CONF_SERVER *Server ));
+
+#ifdef WANT_IPV6
+#define DEFAULT_LISTEN_ADDRSTR "::,0.0.0.0"
+#else
+#define DEFAULT_LISTEN_ADDRSTR "0.0.0.0"
+#endif
+
+#ifdef SSL_SUPPORT
+struct SSLOptions Conf_SSLOptions;
+
+static void
+ConfSSL_Init(void)
+{
+ free(Conf_SSLOptions.KeyFile);
+ Conf_SSLOptions.KeyFile = NULL;
+
+ free(Conf_SSLOptions.CertFile);
+ Conf_SSLOptions.CertFile = NULL;
+
+ free(Conf_SSLOptions.DHFile);
+ Conf_SSLOptions.DHFile = NULL;
+ array_free_wipe(&Conf_SSLOptions.KeyFilePassword);
+}
+
+static bool
+ssl_print_configvar(const char *name, const char *file)
+{
+ FILE *fp;
+
+ if (!file) {
+ printf(" %s =\n", name);
+ return true;
+ }
+
+ fp = fopen(file, "r");
+ if (fp)
+ fclose(fp);
+ else
+ fprintf(stderr, "ERROR: %s \"%s\": %s\n",
+ name, file, strerror(errno));
+
+ printf(" %s = %s\n", name, file);
+ return fp != NULL;
+}