+/* ChanUser.c - NeonServ v5.2
+ * Copyright (C) 2011 Philipp Kreil (pk910)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include "ChanUser.h"
#include "ChanNode.h"
chanuser->chan = chan;
chanuser->changeTime = 0;
+ chanuser->spamnode = NULL;
chanuser->next_user = chan->user;
chan->user = chanuser;
chanuser->chan = chan;
chanuser->changeTime = 0;
+ chanuser->spamnode = NULL;
chanuser->next_user = chan->user;
chan->user = chanuser;
return last->next_chan;
}
-void delChanUser(struct ChanUser *chanuser, int freeChanUser) {
+void delChanUser(struct ChanUser *chanuser, int do_freeChanUser) {
struct ChanUser *cchanuser, *last;
//remove it from the user's channel-list
if(!(chanuser->flags & CHANUSERFLAG_INVISIBLE)) {
last = cchanuser;
}
- if(freeChanUser)
- free(chanuser);
- else {
+ if(do_freeChanUser) {
+ freeChanUser(chanuser);
+ } else {
chanuser->next_chan = NULL;
chanuser->next_user = NULL;
}
}
-void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist, int remove_from_channellist, int freeChanUser) {
+void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist, int remove_from_channellist, int do_freeChanUser) {
struct ChanUser *cchanuser, *last;
if(remove_from_userlist) {
//remove it from the channel's user-list
chanuser->next_chan = NULL;
}
- if(freeChanUser)
- free(chanuser);
+ if(do_freeChanUser) {
+ freeChanUser(chanuser);
+ }
+}
+
+void freeChanUser(struct ChanUser *chanuser) {
+ if(chanuser->spamnode)
+ free(chanuser->spamnode);
+ free(chanuser);
}