added some code & compiler information to cmd_netinfo
[NeonServV5.git] / BanNode.c
1
2 #include "BanNode.h"
3 #include "ChanNode.h"
4
5 struct BanNode* addChannelBan(struct ChanNode *chan, char *mask) {
6     struct BanNode *ban = malloc(sizeof(*ban));
7     ban->chan = chan;
8     ban->mask = strdup(mask);
9     ban->next = chan->bans;
10     chan->bans = ban;
11     return ban;
12 }
13
14 void removeChannelBanMask(struct ChanNode *chan, char *mask) {
15     struct BanNode *cban, *last = NULL;
16     for(cban = chan->bans; cban; cban = cban->next) {
17         if(!strcmp(cban->mask, mask)) {
18             if(last)
19                 last->next = cban->next;
20             else
21                 chan->bans = cban->next;
22             free(cban->mask);
23             free(cban);
24             break;
25         } else 
26             last = cban;
27     }
28 }
29
30 void removeChannelBan(struct BanNode *ban) {
31     struct BanNode *cban, *last = NULL;
32     struct ChanNode *chan = ban->chan;
33     for(cban = chan->bans; cban; cban = cban->next) {
34         if(cban == ban) {
35             if(last)
36                 last->next = ban->next;
37             else
38                 chan->bans = ban->next;
39             free(ban->mask);
40             free(ban);
41             break;
42         } else 
43             last = cban;
44     }
45 }
46
47 void removeChannelBans(struct ChanNode *chan) {
48     struct BanNode *ban, *next;
49     for(ban = chan->bans; ban; ban = next) {
50         next = ban->next;
51         free(ban->mask);
52         free(ban);
53     }
54     chan->bans = NULL;
55 }