assert(channel_count == 0 || conf_chan != NULL);
for (i = 0; i < channel_count; i++, conf_chan++) {
- if (!conf_chan->name[0] || !Channel_IsValidName(conf_chan->name)) {
- Log(LOG_ERR, "Can't create pre-defined channel: invalid name: \"%s\"",
- conf_chan->name);
+ if (!conf_chan->name[0])
+ continue;
+ if (!Channel_IsValidName(conf_chan->name)) {
+ Log(LOG_ERR,
+ "Can't create pre-defined channel: invalid name: \"%s\"",
+ conf_chan->name);
continue;
}
} /* Channel_Quit */
+/**
+ * Get number of channels this server knows and that are "visible" to
+ * the given client. If no client is given, all channels will be counted.
+ *
+ * @param Client The client to check or NULL.
+ * @return Number of channels visible to the client.
+ */
GLOBAL unsigned long
-Channel_Count( void )
+Channel_CountVisible (CLIENT *Client)
{
CHANNEL *c;
unsigned long count = 0;
c = My_Channels;
- while( c )
- {
- count++;
+ while(c) {
+ if (Client) {
+ if (!strchr(Channel_Modes(c), 's')
+ || Channel_IsMemberOf(c, Client))
+ count++;
+ } else
+ count++;
c = c->next;
}
return count;
-} /* Channel_Count */
+}
GLOBAL unsigned long
{
struct list_head *h = Channel_GetListBans(c);
LogDebug("Adding \"%s\" to \"%s\" %s list", mask, Channel_Name(c), "ban");
- return Lists_Add(h, mask, false);
+ return Lists_Add(h, mask, false, NULL);
}
{
struct list_head *h = Channel_GetListInvites(c);
LogDebug("Adding \"%s\" to \"%s\" %s list", mask, Channel_Name(c), "invite");
- return Lists_Add(h, mask, onlyonce);
+ return Lists_Add(h, mask, onlyonce, NULL);
}