]> jfr.im git - irc/quakenet/newserv.git/blob - helpmod2/hchanban.c
Initial Import
[irc/quakenet/newserv.git] / helpmod2 / hchanban.c
1 #include <stdlib.h>
2 #include <string.h>
3
4 #include "../localuser/localuser.h"
5 #include "../lib/irc_string.h"
6
7 #include "hchanban.h"
8 #include "helpmod.h"
9
10 hchanban *hchanban_add(hchannel* hchan, const char* banmask, time_t expiration)
11 {
12 hchanban *tmp = (hchanban*)malloc(sizeof(hchanban));
13
14 tmp->hchan = hchan;
15 tmp->banmask = getsstring(banmask, strlen(banmask));
16 tmp->expiration = expiration;
17
18 tmp->next = hchanbans;
19 hchanbans = tmp;
20
21 return hchanbans;
22 }
23
24 hchanban *hchanban_del(hchanban *hcban)
25 {
26 hchanban **ptr = &hchanbans;
27 for (;*ptr;ptr = &(*ptr)->next)
28 if (*ptr == hcban)
29 {
30 hchanban *tmp = (*ptr)->next;
31 freesstring((*ptr)->banmask);
32 free(*ptr);
33 *ptr = tmp;
34
35 return NULL;
36 }
37 return hcban;
38 }
39
40 hchanban *hchanban_del_all(void)
41 {
42 while (hchanbans)
43 hchanban_del(hchanbans);
44
45 return NULL;
46 }
47
48 hchanban *hchanban_get(hchannel* hchan, const char* banmask)
49 {
50 hchanban *ptr = hchanbans;
51 for (;ptr;ptr = ptr->next)
52 if (ptr->hchan == hchan && ircd_strcmp(ptr->banmask->content, banmask))
53 return ptr;
54 return NULL;
55 }
56
57 void hchanban_schedule_entry(void* ptr)
58 {
59 hchanban *item = (hchanban*)ptr;
60
61 if (hchannel_is_valid(item->hchan))
62 helpmod_setban(item->hchan, item->banmask->content, 0, MCB_DEL, HNOW);
63
64 hchanban_del(ptr);
65 }