]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chancmds/banclear.c
1 /* Automatically generated by refactor.pl.
5 * CMDLEVEL: QCMD_AUTHED
7 * CMDDESC: Removes all bans from a channel including persistent bans.
8 * CMDFUNC: csc_dobanclear
9 * CMDPROTO: int csc_dobanclear(void *source, int cargc, char **cargv);
10 * CMDHELP: Usage: BANCLEAR <channel>
11 * CMDHELP: Removes all temporary and persistent bans from a channel, where:
12 * CMDHELP: channel - the channel to use
13 * CMDHELP: BANCLEAR requires master (+m) access on the named channel.
16 #include "../chanserv.h"
17 #include "../../nick/nick.h"
18 #include "../../lib/flags.h"
19 #include "../../lib/irc_string.h"
20 #include "../../channel/channel.h"
21 #include "../../parser/parser.h"
22 #include "../../irc/irc.h"
23 #include "../../localuser/localuserchannel.h"
27 int csc_dobanclear(void *source
, int cargc
, char **cargv
) {
37 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "banclear");
41 if (!(cip
=cs_checkaccess(sender
, cargv
[0], CA_MASTERPRIV
, NULL
, "banclear", 0, 0)))
44 rcp
=cip
->exts
[chanservext
];
47 localsetmodeinit(&changes
, cip
->channel
, chanservnick
);
49 for (rbh
=&(rcp
->bans
); *rbh
; ) {
51 banstr
=bantostring(rbp
->cbp
);
52 chanservstdmessage(sender
, QM_REMOVEDPERMBAN
, banstr
, cip
->name
->content
);
54 localdosetmode_ban(&changes
, banstr
, MCB_DEL
);
55 /* Remove from database */
57 /* Remove from list */
59 /* Free ban/string and update setby refcount, and free actual regban */
60 freesstring(rbp
->reason
);
61 freechanban(rbp
->cbp
);
66 for (cbh
=&(cip
->channel
->bans
); *cbh
; ) {
68 banstr
=bantostring(cbp
);
69 chanservstdmessage(sender
, QM_REMOVEDCHANBAN
, banstr
, cip
->name
->content
);
70 localdosetmode_ban(&changes
, banstr
, MCB_DEL
);
72 localsetmodeflush(&changes
,1);
75 chanservstdmessage(sender
, QM_DONE
);