]>
Commit | Line | Data |
---|---|---|
1dd6d55d | 1 | /* Automatically generated by refactor.pl. |
2 | * | |
50cd26d6 | 3 | * Made this oper only until it does something useful |
1dd6d55d | 4 | * |
5 | * CMDNAME: language | |
50cd26d6 | 6 | * CMDLEVEL: QCMD_AUTHED | QCMD_OPER |
1dd6d55d | 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); | |
94e4d2f4 CP |
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. | |
1dd6d55d | 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 | } |