]> jfr.im git - irc/quakenet/newserv.git/blob - trusts/data.c
Refactor data storage into data.c
[irc/quakenet/newserv.git] / trusts / data.c
1 #include <stdlib.h>
2
3 #include "../lib/sstring.h"
4 #include "../nick/nick.h" /* NICKLEN */
5 #include "trusts.h"
6
7 trustgroup *tglist;
8
9 void trusts_freeall(void) {
10 trustgroup *tg, *ntg;
11 trusthost *th, *nth;
12
13 for(tg=tglist;tg;tg=ntg) {
14 ntg = tg->next;
15 for(th=tg->hosts;th;th=nth) {
16 nth = th->next;
17
18 th_free(th);
19 }
20
21 tg_free(tg);
22 }
23
24 tglist = NULL;
25 }
26
27 trustgroup *tg_getbyid(unsigned int id) {
28 trustgroup *tg;
29
30 for(tg=tglist;tg;tg=tg->next)
31 if(tg->id == id)
32 return tg;
33
34 return NULL;
35 }
36
37 void th_free(trusthost *th) {
38 freesstring(th->host);
39 free(th);
40 }
41
42 int th_add(trustgroup *tg, char *host, unsigned int maxseen, time_t lastseen) {
43 trusthost *th = malloc(sizeof(trusthost));
44 if(!th)
45 return 0;
46
47 th->host = getsstring(host, TRUSTHOSTLEN);
48 if(!th->host) {
49 th_free(th);
50 return 0;
51 }
52 th->maxseen = maxseen;
53 th->lastseen = lastseen;
54
55 th->next = tg->hosts;
56 tg->hosts = th;
57
58 return 1;
59 }
60
61 void tg_free(trustgroup *tg) {
62 freesstring(tg->name);
63 freesstring(tg->createdby);
64 freesstring(tg->contact);
65 freesstring(tg->comment);
66 free(tg);
67 }
68
69 int tg_add(unsigned int id, char *name, unsigned int trustedfor, int mode, unsigned int maxperident, unsigned int maxseen, time_t expires, time_t lastseen, time_t lastmaxuserreset, char *createdby, char *contact, char *comment) {
70 trustgroup *tg = malloc(sizeof(trustgroup));
71 if(!tg)
72 return 0;
73
74 tg->name = getsstring(name, TRUSTNAMELEN);
75 tg->createdby = getsstring(createdby, NICKLEN);
76 tg->contact = getsstring(contact, CONTACTLEN);
77 tg->comment = getsstring(comment, COMMENTLEN);
78 if(!tg->name || !tg->createdby || !tg->contact || !tg->comment) {
79 tg_free(tg);
80 return 0;
81 }
82
83 tg->id = id;
84 tg->trustedfor = trustedfor;
85 tg->mode = mode;
86 tg->maxperident = maxperident;
87 tg->maxseen = maxseen;
88 tg->expires = expires;
89 tg->lastseen = lastseen;
90 tg->lastmaxuserreset = lastmaxuserreset;
91
92 tg->next = tglist;
93 tglist = tg;
94
95 return 1;
96 }