]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/database/chanservdb_alloc.c
3 * Handles allocation of the various chanserv structures.
6 #include "../chanserv.h"
7 #include "../../core/nsmalloc.h"
15 regchanuser
*csfreechanusers
;
16 regban
*csfreeregbans
;
17 activeuser
*csfreeactiveusers
;
18 maildomain
*csfreemaildomains
;
22 void chanservallocinit() {
27 csfreeactiveusers
=NULL
;
30 regchan
*getregchan() {
34 if (csfreechans
==NULL
) {
35 csfreechans
=(regchan
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(regchan
));
36 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
37 csfreechans
[i
].index
=(chanindex
*)&(csfreechans
[i
+1]);
39 csfreechans
[ALLOCUNIT
-1].index
=NULL
;
43 csfreechans
=(regchan
*)rcp
->index
;
50 void freeregchan(regchan
*rcp
) {
52 rcp
->index
=(chanindex
*)csfreechans
;
56 reguser
*getreguser() {
60 if (csfreeusers
==NULL
) {
61 csfreeusers
=(reguser
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(reguser
));
62 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
63 csfreeusers
[i
].nextbyname
=&(csfreeusers
[i
+1]);
65 csfreeusers
[ALLOCUNIT
-1].nextbyname
=NULL
;
69 csfreeusers
=rup
->nextbyname
;
76 void freereguser(reguser
*rup
) {
78 rup
->nextbyname
=csfreeusers
;
82 regchanuser
*getregchanuser() {
86 if (csfreechanusers
==NULL
) {
87 csfreechanusers
=(regchanuser
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(regchanuser
));
88 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
89 csfreechanusers
[i
].nextbyuser
=&(csfreechanusers
[i
+1]);
91 csfreechanusers
[ALLOCUNIT
-1].nextbyuser
=NULL
;
95 csfreechanusers
=rcup
->nextbyuser
;
102 void freeregchanuser(regchanuser
*rcup
) {
103 verifyregchanuser(rcup
);
104 rcup
->nextbyuser
=csfreechanusers
;
105 csfreechanusers
=rcup
;
108 regban
*getregban() {
112 if (csfreeregbans
==NULL
) {
113 csfreeregbans
=(regban
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(regban
));
114 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
115 csfreeregbans
[i
].next
=&(csfreeregbans
[i
+1]);
117 csfreeregbans
[ALLOCUNIT
-1].next
=NULL
;
121 csfreeregbans
=rbp
->next
;
128 void freeregban(regban
*rbp
) {
129 verifyregchanban(rbp
);
130 rbp
->next
=csfreeregbans
;
134 activeuser
*getactiveuser() {
138 if (csfreeactiveusers
==NULL
) {
139 csfreeactiveusers
=(activeuser
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(activeuser
));
140 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
141 csfreeactiveusers
[i
].next
=&(csfreeactiveusers
[i
+1]);
143 csfreeactiveusers
[ALLOCUNIT
-1].next
=NULL
;
146 aup
=csfreeactiveusers
;
147 csfreeactiveusers
=aup
->next
;
152 aup
->helloattempts
=0;
158 void freeactiveuser(activeuser
*aup
) {
159 verifyactiveuser(aup
);
160 aup
->next
=csfreeactiveusers
;
161 csfreeactiveusers
=aup
;
164 maildomain
*getmaildomain() {
168 if (csfreemaildomains
==NULL
) {
169 csfreemaildomains
=(maildomain
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(maildomain
));
170 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
171 csfreemaildomains
[i
].nextbyname
=&(csfreemaildomains
[i
+1]);
173 csfreemaildomains
[ALLOCUNIT
-1].nextbyname
=NULL
;
176 mdp
=csfreemaildomains
;
177 csfreemaildomains
=mdp
->nextbyname
;
184 void freemaildomain(maildomain
*mdp
) {
185 verifymaildomain(mdp
);
186 mdp
->nextbyname
=csfreemaildomains
;
187 csfreemaildomains
=mdp
;
190 maillock
*getmaillock() {
191 /* we don't create too many of these */
192 maillock
*mlp
= nsmalloc(POOL_CHANSERVDB
,sizeof(maillock
));
198 void freemaillock(maillock
*mlp
) {
201 freesstring(mlp
->pattern
);
202 freesstring(mlp
->reason
);
203 nsfree(POOL_CHANSERVDB
,mlp
);