]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/usercmds/info.c
1 /* Automatically generated by refactor.pl.
5 * CMDLEVEL: QCMD_AUTHED | QCMD_OPER
7 * CMDDESC: Shows or changes info line.
9 * CMDPROTO: int csu_doinfo(void *source, int cargc, char **cargv);
10 * CMDHELP: Usage: INFO [<channel>] [<info line>]
11 * CMDHELP: Shows or updates your current info line, which can be configured to be displayed
12 * CMDHELP: when you join a channel. Where:
13 * CMDHELP: channel - channel to set info line on. If no channel is specified, your default
14 * CMDHELP: info line will be used. If a channel is specified you must be known
15 * CMDHELP: (+k) on the channel.
16 * CMDHELP: info line - new info line to set. If not specified, the current info line will be
17 * CMDHELP: displayed. If \"none\" is specified, the info line will be cleared.
20 #include "../chanserv.h"
21 #include "../../lib/irc_string.h"
25 int csu_doinfo(void *source
, int cargc
, char **cargv
) {
27 reguser
*rup
=getreguserfromnick(sender
);
31 char linebuf
[INFOLEN
+10];
35 if (cargc
==0 || *cargv
[0]!='#') {
36 /* Global info line */
38 /* Setting to either one word or "none" */
39 if (!ircd_strcmp(cargv
[0],"none")) {
47 /* More than one word: we need to stick them back together */
48 snprintf(linebuf
,INFOLEN
,"%s %s",cargv
[0],cargv
[1]);
55 freesstring(rup
->info
);
57 rup
->info
=getsstring(newline
, INFOLEN
);
59 chanservstdmessage(sender
, QM_DONE
);
63 chanservstdmessage(sender
, QM_GLOBALINFO
, (rup
->info
&& *rup
->info
->content
)?rup
->info
->content
:"(none)");
65 /* Channel info line */
67 if (!(cip
=findchanindex(cargv
[0])) || !(rcp
=cip
->exts
[chanservext
]) ||
68 (CIsSuspended(rcp
) && !cs_privcheck(QPRIV_SUSPENDBYPASS
, sender
))) {
69 chanservstdmessage(sender
, QM_UNKNOWNCHAN
, cargv
[0]);
73 if ((!(rcup
=findreguseronchannel(rcp
, rup
)) || !CUHasVoicePriv(rcup
))) {
74 chanservstdmessage(sender
, QM_NOACCESSONCHAN
, cargv
[0], "info");
80 freesstring(rcup
->info
);
82 if (!ircd_strcmp(cargv
[1],"none"))
85 rcup
->info
=getsstring(cargv
[1],INFOLEN
);
87 csdb_updatechanuser(rcup
);
88 chanservstdmessage(sender
, QM_DONE
);
91 chanservstdmessage(sender
, QM_CHANNELINFO
, cip
->name
->content
,
92 (rcup
->info
&& *rcup
->info
->content
)?rcup
->info
->content
:"(none)");