]>
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 nicklist
*csfreenicklists
;
17 regban
*csfreeregbans
;
18 activeuser
*csfreeactiveusers
;
22 void chanservallocinit() {
28 csfreeactiveusers
=NULL
;
31 regchan
*getregchan() {
35 if (csfreechans
==NULL
) {
36 csfreechans
=(regchan
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(regchan
));
37 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
38 csfreechans
[i
].index
=(chanindex
*)&(csfreechans
[i
+1]);
40 csfreechans
[ALLOCUNIT
-1].index
=NULL
;
44 csfreechans
=(regchan
*)rcp
->index
;
51 void freeregchan(regchan
*rcp
) {
53 rcp
->index
=(chanindex
*)csfreechans
;
57 reguser
*getreguser() {
61 if (csfreeusers
==NULL
) {
62 csfreeusers
=(reguser
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(reguser
));
63 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
64 csfreeusers
[i
].nextbyname
=&(csfreeusers
[i
+1]);
66 csfreeusers
[ALLOCUNIT
-1].nextbyname
=NULL
;
70 csfreeusers
=rup
->nextbyname
;
77 void freereguser(reguser
*rup
) {
79 rup
->nextbyname
=csfreeusers
;
83 regchanuser
*getregchanuser() {
87 if (csfreechanusers
==NULL
) {
88 csfreechanusers
=(regchanuser
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(regchanuser
));
89 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
90 csfreechanusers
[i
].nextbyuser
=&(csfreechanusers
[i
+1]);
92 csfreechanusers
[ALLOCUNIT
-1].nextbyuser
=NULL
;
96 csfreechanusers
=rcup
->nextbyuser
;
103 void freeregchanuser(regchanuser
*rcup
) {
104 verifyregchanuser(rcup
);
105 rcup
->nextbyuser
=csfreechanusers
;
106 csfreechanusers
=rcup
;
109 nicklist
*getnicklist() {
113 if (csfreenicklists
==NULL
) {
114 csfreenicklists
=(nicklist
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(nicklist
));
115 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
116 csfreenicklists
[i
].next
=&(csfreenicklists
[i
+1]);
118 csfreenicklists
[ALLOCUNIT
-1].next
=NULL
;
122 csfreenicklists
=nlp
->next
;
127 void freenicklist(nicklist
*nlp
) {
128 nlp
->next
=csfreenicklists
;
132 regban
*getregban() {
136 if (csfreeregbans
==NULL
) {
137 csfreeregbans
=(regban
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(regban
));
138 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
139 csfreeregbans
[i
].next
=&(csfreeregbans
[i
+1]);
141 csfreeregbans
[ALLOCUNIT
-1].next
=NULL
;
145 csfreeregbans
=rbp
->next
;
152 void freeregban(regban
*rbp
) {
153 verifyregchanban(rbp
);
154 rbp
->next
=csfreeregbans
;
158 activeuser
*getactiveuser() {
162 if (csfreeactiveusers
==NULL
) {
163 csfreeactiveusers
=(activeuser
*)nsmalloc(POOL_CHANSERVDB
,ALLOCUNIT
*sizeof(activeuser
));
164 for (i
=0;i
<(ALLOCUNIT
-1);i
++) {
165 csfreeactiveusers
[i
].next
=&(csfreeactiveusers
[i
+1]);
167 csfreeactiveusers
[ALLOCUNIT
-1].next
=NULL
;
170 aup
=csfreeactiveusers
;
171 csfreeactiveusers
=aup
->next
;
181 void freeactiveuser(activeuser
*aup
) {
182 verifyactiveuser(aup
);
183 aup
->next
=csfreeactiveusers
;
184 csfreeactiveusers
=aup
;