]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/chanserv_chansearch.c
A4STATS: remove E style escapes and switch to createtable for indices
[irc/quakenet/newserv.git] / chanserv / chanserv_chansearch.c
CommitLineData
c86edd1d
Q
1/* Chanserv related plugins for chansearch.. */
2
3#include "chanserv.h"
4#include "../chansearch/chansearch.h"
5
6int cs_cschanserv(void *source, int cargc, char **cargv);
7int cs_cschanlevsize(void *source, int cargc, char **cargv);
8
9void _init() {
10 regchansearchfunc("hasq", 0, cs_cschanserv);
11 regchansearchfunc("chanlev", 1, cs_cschanlevsize);
12}
13
14void _fini() {
15 unregchansearchfunc("hasq", cs_cschanserv);
16 unregchansearchfunc("chanlev", cs_cschanlevsize);
17}
18
19int cs_cschanservexe(chanindex *cip, void *arg) {
20 return (cip->exts[chanservext]==NULL);
21}
22
23int 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
32int cs_cschanlevsizeexe(chanindex *cip, void *arg) {
c3db6f7e 33 long minlength=(long)arg;
c86edd1d
Q
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
53int 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}