]>
Commit | Line | Data |
---|---|---|
c86edd1d Q |
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) | |
660b35f8 | 52 | if (ptr->hchan == hchan && !ircd_strcmp(ptr->banmask->content, banmask)) |
c86edd1d Q |
53 | return ptr; |
54 | return NULL; | |
55 | } | |
56 | ||
e908ecfa | 57 | void hchanban_schedule_entry(hchanban* item) |
c86edd1d | 58 | { |
c86edd1d Q |
59 | if (hchannel_is_valid(item->hchan)) |
60 | helpmod_setban(item->hchan, item->banmask->content, 0, MCB_DEL, HNOW); | |
61 | ||
e908ecfa | 62 | hchanban_del(item); |
c86edd1d | 63 | } |