]> jfr.im git - irc/quakenet/newserv.git/blame - helpmod2/hchanban.c
TRUSTS: use correct socket opt...
[irc/quakenet/newserv.git] / helpmod2 / hchanban.c
CommitLineData
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
10hchanban *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
24hchanban *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
40hchanban *hchanban_del_all(void)
41{
42 while (hchanbans)
43 hchanban_del(hchanbans);
44
45 return NULL;
46}
47
48hchanban *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 57void 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}