]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/usercmds/usercomment.c
CHANSERV: more checks on lastchannelID / lastuserID
[irc/quakenet/newserv.git] / chanserv / usercmds / usercomment.c
CommitLineData
1dd6d55d 1/* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: usercomment
5 * CMDLEVEL: QCMD_OPER
6 * CMDARGS: 2
7 * CMDDESC: Shows or changes staff comment for a user.
8 * CMDFUNC: csu_dousercomment
9 * CMDPROTO: int csu_dousercomment(void *source, int cargc, char **cargv);
baafd54b 10 * CMDHELP: Usage: usercomment <username> [[+]<comment>]
94e4d2f4 11 * CMDHELP: Shows or changes the staff comment for the specified user.
baafd54b
CP
12 * CMDHELP: Comments can be appended to by prefixing <comment> with +.
13 * CMDHELP: Use 'none' for <comment> to unset.
1dd6d55d 14 */
15
16#include "../chanserv.h"
17#include "../../lib/irc_string.h"
18#include <stdio.h>
19#include <string.h>
20
21int csu_dousercomment(void *source, int cargc, char **cargv) {
22 nick *sender=source;
23 reguser *rup=getreguserfromnick(sender), *target;
24 char buf[300];
25 int bufpos;
26
27 if (!rup)
28 return CMD_ERROR;
29
30 if (cargc<1) {
31 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "usercomment");
32 return CMD_ERROR;
33 }
34
35 if (!(target=findreguser(sender, cargv[0])))
36 return CMD_ERROR;
37
38 if (cargc>1) {
39 if (!ircd_strcmp(cargv[1],"none")) {
40 freesstring(target->comment);
41 target->comment=NULL;
42 } else {
43 if (*cargv[1]=='+') {
44 if (target->comment) {
45 strcpy(buf,target->comment->content);
46 bufpos=target->comment->length;
47 buf[bufpos++]=' ';
48 } else {
49 bufpos=0;
50 }
15cf23c4 51 strncpy(buf+bufpos, cargv[1]+1, 280-bufpos);
1dd6d55d 52 } else {
53 strncpy(buf, cargv[1], 250);
54 }
55
56 freesstring(target->comment);
57 target->comment=getsstring(buf,250);
58 }
59 csdb_updateuser(target);
60 }
61
62 if (target->comment)
63 chanservstdmessage(sender, QM_COMMENT, target->username, target->comment->content);
64 else
65 chanservstdmessage(sender, QM_NOCOMMENT, target->username);
66
67 return CMD_OK;
68}