commit a12d6ff257813d47657d53f00699d21bfaf0e301 from: Alexander Barton date: Mon Sep 10 15:59:15 2012 UTC 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. commit - 2205227c3b3cbc8788bcf97a037c9e3016f71c9c commit + a12d6ff257813d47657d53f00699d21bfaf0e301 blob - 0f21a459c3a6644c0f14b2c581f8a45aca154bdc blob + f0a9525d348a5d992596f453fd9ba709cbd47c9a --- src/ngircd/channel.c +++ src/ngircd/channel.c @@ -66,16 +66,8 @@ static void Set_KeyFile PARAMS((CHANNEL *Chan, const c 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 */