]> jfr.im git - irc/quakenet/newserv.git/blob - chanserv/usercmds/language.c
Add remaining help.
[irc/quakenet/newserv.git] / chanserv / usercmds / language.c
1 /* Automatically generated by refactor.pl.
2 *
3 * Made this oper only until it does something useful
4 *
5 * CMDNAME: language
6 * CMDLEVEL: QCMD_AUTHED | QCMD_OPER
7 * CMDARGS: 1
8 * CMDDESC: Shows or changes your current language.
9 * CMDFUNC: csu_dolanguage
10 * CMDPROTO: int csu_dolanguage(void *source, int cargc, char **cargv);
11 * CMDHELP: Usage: language [<language code>]
12 * CMDHELP: Shows your currently selected language and a list of others
13 * CMDHELP: by default, changes your language when you specify a language code.
14 */
15
16 #include "../chanserv.h"
17 #include "../../lib/irc_string.h"
18 #include <stdio.h>
19 #include <string.h>
20
21 int csu_dolanguage(void *source, int cargc, char **cargv) {
22 nick *sender=source;
23 reguser *rup=getreguserfromnick(sender);
24 char buf[300];
25 int bufpos=0;
26 int i;
27 int len;
28
29 if (!rup)
30 return CMD_ERROR;
31
32 if (cargc==0) {
33 /* Display language */
34 i=rup->languageid;
35 chanservstdmessage(sender, QM_YOURLANGUAGE, cslanguages[i] ? cslanguages[i]->name->content : "Unknown");
36
37 /* Display available lanaguages */
38 chanservstdmessage(sender, QM_LANGUAGELIST);
39
40 for (i=0;i<MAXLANG;i++) {
41 if (cslanguages[i]) {
42 if (bufpos > 70) {
43 chanservsendmessage(sender, "%s", buf);
44 bufpos=0;
45 }
46 len=sprintf(buf+bufpos, "%.14s (%.2s)",cslanguages[i]->name->content,cslanguages[i]->code);
47 memset(buf+bufpos+len,' ',20-len);
48 bufpos+=20;
49 buf[bufpos]='\0';
50 }
51 }
52
53 if (bufpos)
54 chanservsendmessage(sender, "%s", buf);
55
56 chanservstdmessage(sender, QM_ENDOFLIST);
57 } else {
58 /* Set language */
59 for (i=0;i<MAXLANG;i++) {
60 if (cslanguages[i] && !ircd_strcmp(cargv[0],cslanguages[i]->code)) {
61 /* Match. */
62 rup->languageid=i;
63 csdb_updateuser(rup);
64
65 chanservstdmessage(sender, QM_DONE);
66 chanservstdmessage(sender, QM_YOURLANGUAGE, cslanguages[i]->name->content);
67 break;
68 }
69 }
70
71 if (i==MAXLANG)
72 chanservstdmessage(sender, QM_UNKNOWNLANGUAGE, cargv[0]);
73 }
74
75 return CMD_OK;
76 }