]> jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chanserv_chansearch.c
A4STATS: remove E style escapes and switch to createtable for indices
[irc/quakenet/newserv.git] / chanserv / chanserv_chansearch.c
1 /* Chanserv related plugins for chansearch.. */
2
3 #include "chanserv.h"
4 #include "../chansearch/chansearch.h"
5
6 int cs_cschanserv(void *source, int cargc, char **cargv);
7 int cs_cschanlevsize(void *source, int cargc, char **cargv);
8
9 void _init() {
10 regchansearchfunc("hasq", 0, cs_cschanserv);
11 regchansearchfunc("chanlev", 1, cs_cschanlevsize);
12 }
13
14 void _fini() {
15 unregchansearchfunc("hasq", cs_cschanserv);
16 unregchansearchfunc("chanlev", cs_cschanlevsize);
17 }
18
19 int cs_cschanservexe(chanindex *cip, void *arg) {
20 return (cip->exts[chanservext]==NULL);
21 }
22
23 int cs_cschanserv(void *source, int cargc, char **cargv) {
24 filter *thefilter=(filter *)source;
25
26 thefilter->sf=cs_cschanservexe;
27 thefilter->arg=NULL;
28
29 return 0;
30 }
31
32 int cs_cschanlevsizeexe(chanindex *cip, void *arg) {
33 long minlength=(long)arg;
34 regchan *rcp;
35 regchanuser *rcup;
36 int i,j;
37
38 if (!(rcp=cip->exts[chanservext]))
39 return 1;
40
41 j=0;
42 for (i=0;i<REGCHANUSERHASHSIZE;i++) {
43 for (rcup=rcp->regusers[i];rcup;rcup=rcup->nextbychan) {
44 j++;
45 if (j>=minlength)
46 return 0;
47 }
48 }
49
50 return 1;
51 }
52
53 int cs_cschanlevsize(void *source, int cargc, char **cargv) {
54 filter *thefilter=(filter *)source;
55
56 if (cargc<1)
57 return 1;
58
59 thefilter->sf=cs_cschanlevsizeexe;
60 thefilter->arg=(void *)strtoul(cargv[0],NULL,10);
61
62 return 0;
63 }