From 6f7b669becb0ebf2058fa2bbe834de48c01de933 Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Wed, 28 May 2008 00:31:20 +0200 Subject: [PATCH] --configtest: return non-zero exit code if there are errors --- src/ngircd/conf.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c index 8da608da..ca561109 100644 --- a/src/ngircd/conf.c +++ b/src/ngircd/conf.c @@ -56,7 +56,7 @@ static int New_Server_Idx; static void Set_Defaults PARAMS(( bool InitServers )); static bool Read_Config PARAMS(( bool ngircd_starting )); -static void Validate_Config PARAMS(( bool TestOnly, bool Rehash )); +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 )); @@ -173,11 +173,14 @@ Conf_Test( void ) struct group *grp; unsigned int i; char *topic; + bool config_valid; Use_Log = false; - Read_Config( true ); - Validate_Config(true, false); + if (! Read_Config(true)) + return 1; + + config_valid = Validate_Config(true, false); /* If stdin and stdout ("you can read our nice message and we can * read in your keypress") are valid tty's, wait for a key: */ @@ -265,7 +268,7 @@ Conf_Test( void ) printf( " Topic = %s\n\n", topic ? topic : ""); } - return 0; + return (config_valid ? 0 : 1); } /* Conf_Test */ @@ -1117,7 +1120,7 @@ Handle_CHANNEL( int Line, char *Var, char *Arg ) } /* Handle_CHANNEL */ -static void +static bool Validate_Config(bool Configtest, bool Rehash) { /* Validate configuration settings. */ @@ -1125,6 +1128,7 @@ Validate_Config(bool Configtest, bool Rehash) #ifdef DEBUG int i, servers, servers_once; #endif + bool config_valid = true; char *ptr; /* Validate configured server name, see RFC 2812 section 2.3.1 */ @@ -1143,6 +1147,7 @@ Validate_Config(bool Configtest, bool Rehash) if (!Conf_ServerName[0]) { /* No server name configured! */ + config_valid = false; Config_Error(LOG_ALERT, "No (valid) server name configured in \"%s\" (section 'Global': 'Name')!", NGIRCd_ConfFile); @@ -1156,6 +1161,7 @@ Validate_Config(bool Configtest, bool Rehash) if (Conf_ServerName[0] && !strchr(Conf_ServerName, '.')) { /* No dot in server name! */ + config_valid = false; Config_Error(LOG_ALERT, "Invalid server name configured in \"%s\" (section 'Global': 'Name'): Dot missing!", NGIRCd_ConfFile); @@ -1170,6 +1176,7 @@ Validate_Config(bool Configtest, bool Rehash) #ifdef STRICT_RFC if (!Conf_ServerAdminMail[0]) { /* No administrative contact configured! */ + config_valid = false; Config_Error(LOG_ALERT, "No administrator email address configured in \"%s\" ('AdminEMail')!", NGIRCd_ConfFile); @@ -1202,6 +1209,8 @@ Validate_Config(bool Configtest, bool Rehash) "Configuration: Operators=%d, Servers=%d[%d], Channels=%d", Conf_Oper_Count, servers, servers_once, Conf_Channel_Count); #endif + + return config_valid; } /* Validate_Config */