Module: ngircd.git Branch: master Commit: a12d6ff257813d47657d53f00699d21bfaf0e301 URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=a12d6...
Author: Alexander Barton alex@barton.de Date: Mon Sep 10 17:59:15 2012 +0200
Create &SERVER channel after predefined channels
This patch allows you to define &SERVER in a [Channel] block yourself and to overwrite the built-in topic and channel modes.
Fixes bug #131.
---
src/ngircd/channel.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/src/ngircd/channel.c b/src/ngircd/channel.c index 0f21a45..f0a9525 100644 --- a/src/ngircd/channel.c +++ b/src/ngircd/channel.c @@ -66,16 +66,8 @@ static void Set_KeyFile PARAMS((CHANNEL *Chan, const char *KeyFile)); GLOBAL void Channel_Init( void ) { - CHANNEL *sc; - My_Channels = NULL; My_Cl2Chan = NULL; - - sc = Channel_Create("&SERVER"); - if (sc) { - Channel_SetModes(sc, "mnPt"); - Channel_SetTopic(sc, Client_ThisServer(), "Server Messages"); - } } /* Channel_Init */
@@ -103,11 +95,12 @@ Channel_GetListInvites(CHANNEL *c) }
+/** + * Generate predefined persistent channels and &SERVER + */ GLOBAL void Channel_InitPredefined( void ) { - /* Generate predefined persistent channels */ - CHANNEL *new_chan; const struct Conf_Channel *conf_chan; const char *c; @@ -160,6 +153,18 @@ Channel_InitPredefined( void ) } if (channel_count) array_free(&Conf_Channels); + + /* Make sure the local &SERVER channel exists */ + if (!Channel_Search("&SERVER")) { + new_chan = Channel_Create("&SERVER"); + if (new_chan) { + Channel_SetModes(new_chan, "mnPt"); + Channel_SetTopic(new_chan, Client_ThisServer(), + "Server Messages"); + } else + Log(LOG_ERR, "Failed to create "&SERVER" channel!"); + } else + LogDebug("Required channel "&SERVER" already exists, ok."); } /* Channel_InitPredefined */