#include "ChanNode.h"
+#include "ChanUser.h"
+#include "UserNode.h"
static struct ChanNode **chanList;
} else
last_chan = cchan;
}
+ if(chan->user) {
+ //free all chanusers
+ struct ChanUser *chanuser, *next;
+ for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = next) {
+ next = getChannelUsers(chan, chanuser);
+ removeChanUserFromLists(chanUser, 0, 1, 1);
+ }
+ }
if(freeChan)
free(chan);
else
chan->next = NULL;
}
+
+void checkChannelVisibility(struct ChanNode* chan) {
+ struct ChanUser *chanuser, *cchanuser, *next, *last = NULL;
+ for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = getChannelUsers(chan, chanuser)) {
+ if(chanuser->user->flags & USERFLAG_ISBOT) return;
+ }
+ //free the channel...
+ for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = next) {
+ next = getChannelUsers(chan, chanuser);
+ //remove the channel from the user's channel-list
+ removeChanUserFromLists(chanUser, 0, 1, 0);
+ if(!chanuser->user->channel) {
+ //free the user (no more channels)
+ delUser(chanuser->user, 1);
+ }
+ free(chanuser);
+ }
+ chan->user = NULL;
+ delChannel(chan, 1);
+}