ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/numeric.c
(Generate patch)

Comparing:
ircd-hybrid/src/numeric.c (file contents), Revision 1028 by michael, Sun Nov 8 13:03:38 2009 UTC vs.
ircd-hybrid/trunk/src/numeric.c (file contents), Revision 1839 by michael, Sun Apr 21 09:41:40 2013 UTC

# Line 23 | Line 23
23   */
24  
25   #include "stdinc.h"
26
26   #include "numeric.h"
28 #include "irc_string.h"
29 #include "common.h"     /* NULL cripes */
30 #include "memory.h"
31 #include "s_log.h"
32 #include "fileio.h"
33 #include "send.h"
34 #include "client.h"
35 #include "messages.tab"
27  
28 < static char used_locale[LOCALE_LENGTH] = "standard";
28 >
29 > static const char *replies[] = {
30 > /* 000 */ NULL,
31 > /* 001 RPL_WELCOME */ ":%s 001 %s :Welcome to the %s Internet Relay Chat Network %s",
32 > /* 002 RPL_YOURHOST */ ":%s 002 %s :Your host is %s, running version %s",
33 > /* 003 RPL_CREATED */ ":%s 003 %s :This server was created %s",
34 > /* 004 RPL_MYINFO */ ":%s 004 %s %s %s %s biklmnoprstveIORS bkloveI",
35 > /* 005 RPL_ISUPPORT */ ":%s 005 %s %s :are supported by this server",
36 > /* 006 */ NULL,
37 > /* 007 */ NULL,
38 > /* 008 */ NULL,
39 > /* 009 */ NULL,
40 > /* 010 RPL_REDIR */ ":%s 010 %s %s %d :Please use this Server/Port instead",
41 > /* 011 */ NULL,
42 > /* 012 */ NULL,
43 > /* 013 */ NULL,
44 > /* 014 */ NULL,
45 > /* 015 RPL_MAP */ ":%s 015 %s :%s",
46 > /* 016 */ NULL,
47 > /* 017 RPL_MAPEND */ ":%s 017 %s :End of /MAP",
48 > /* 018 */ NULL,
49 > /* 019 */ NULL,
50 > /* 020 */ NULL,
51 > /* 021 */ NULL,
52 > /* 022 */ NULL,
53 > /* 023 */ NULL,
54 > /* 024 */ NULL,
55 > /* 025 */ NULL,
56 > /* 026 */ NULL,
57 > /* 027 */ NULL,
58 > /* 028 */ NULL,
59 > /* 029 */ NULL,
60 > /* 030 */ NULL,
61 > /* 031 */ NULL,
62 > /* 032 */ NULL,
63 > /* 033 */ NULL,
64 > /* 034 */ NULL,
65 > /* 035 */ NULL,
66 > /* 036 */ NULL,
67 > /* 037 */ NULL,
68 > /* 038 */ NULL,
69 > /* 039 */ NULL,
70 > /* 040 */ NULL,
71 > /* 041 */ NULL,
72 > /* 042 RPL_YOURID */ ":%s 042 %s %s :your unique ID",
73 > /* 043 */ NULL,
74 > /* 044 */ NULL,
75 > /* 045 */ NULL,
76 > /* 046 */ NULL,
77 > /* 047 */ NULL,
78 > /* 048 */ NULL,
79 > /* 049 */ NULL,
80 > /* 050 */ NULL,
81 > /* 051 */ NULL,
82 > /* 052 */ NULL,
83 > /* 053 */ NULL,
84 > /* 054 */ NULL,
85 > /* 055 */ NULL,
86 > /* 056 */ NULL,
87 > /* 057 */ NULL,
88 > /* 058 */ NULL,
89 > /* 059 */ NULL,
90 > /* 060 */ NULL,
91 > /* 061 */ NULL,
92 > /* 062 */ NULL,
93 > /* 063 */ NULL,
94 > /* 064 */ NULL,
95 > /* 065 */ NULL,
96 > /* 066 */ NULL,
97 > /* 067 */ NULL,
98 > /* 068 */ NULL,
99 > /* 069 */ NULL,
100 > /* 070 */ NULL,
101 > /* 071 */ NULL,
102 > /* 072 */ NULL,
103 > /* 073 */ NULL,
104 > /* 074 */ NULL,
105 > /* 075 */ NULL,
106 > /* 076 */ NULL,
107 > /* 077 */ NULL,
108 > /* 078 */ NULL,
109 > /* 079 */ NULL,
110 > /* 080 */ NULL,
111 > /* 081 */ NULL,
112 > /* 082 */ NULL,
113 > /* 083 */ NULL,
114 > /* 084 */ NULL,
115 > /* 085 */ NULL,
116 > /* 086 */ NULL,
117 > /* 087 */ NULL,
118 > /* 088 */ NULL,
119 > /* 089 */ NULL,
120 > /* 090 */ NULL,
121 > /* 091 */ NULL,
122 > /* 092 */ NULL,
123 > /* 093 */ NULL,
124 > /* 094 */ NULL,
125 > /* 095 */ NULL,
126 > /* 096 */ NULL,
127 > /* 097 */ NULL,
128 > /* 098 */ NULL,
129 > /* 099 */ NULL,
130 > /* 100 */ NULL,
131 > /* 101 */ NULL,
132 > /* 102 */ NULL,
133 > /* 103 */ NULL,
134 > /* 104 */ NULL,
135 > /* 105 */ NULL,
136 > /* 106 */ NULL,
137 > /* 107 */ NULL,
138 > /* 108 */ NULL,
139 > /* 109 */ NULL,
140 > /* 110 */ NULL,
141 > /* 111 */ NULL,
142 > /* 112 */ NULL,
143 > /* 113 */ NULL,
144 > /* 114 */ NULL,
145 > /* 115 */ NULL,
146 > /* 116 */ NULL,
147 > /* 117 */ NULL,
148 > /* 118 */ NULL,
149 > /* 119 */ NULL,
150 > /* 120 */ NULL,
151 > /* 121 */ NULL,
152 > /* 122 */ NULL,
153 > /* 123 */ NULL,
154 > /* 124 */ NULL,
155 > /* 125 */ NULL,
156 > /* 126 */ NULL,
157 > /* 127 */ NULL,
158 > /* 128 */ NULL,
159 > /* 129 */ NULL,
160 > /* 130 */ NULL,
161 > /* 131 */ NULL,
162 > /* 132 */ NULL,
163 > /* 133 */ NULL,
164 > /* 134 */ NULL,
165 > /* 135 */ NULL,
166 > /* 136 */ NULL,
167 > /* 137 */ NULL,
168 > /* 138 */ NULL,
169 > /* 139 */ NULL,
170 > /* 140 */ NULL,
171 > /* 141 */ NULL,
172 > /* 142 */ NULL,
173 > /* 143 */ NULL,
174 > /* 144 */ NULL,
175 > /* 145 */ NULL,
176 > /* 146 */ NULL,
177 > /* 147 */ NULL,
178 > /* 148 */ NULL,
179 > /* 149 */ NULL,
180 > /* 150 */ NULL,
181 > /* 151 */ NULL,
182 > /* 152 */ NULL,
183 > /* 153 */ NULL,
184 > /* 154 */ NULL,
185 > /* 155 */ NULL,
186 > /* 156 */ NULL,
187 > /* 157 */ NULL,
188 > /* 158 */ NULL,
189 > /* 159 */ NULL,
190 > /* 160 */ NULL,
191 > /* 161 */ NULL,
192 > /* 162 */ NULL,
193 > /* 163 */ NULL,
194 > /* 164 */ NULL,
195 > /* 165 */ NULL,
196 > /* 166 */ NULL,
197 > /* 167 */ NULL,
198 > /* 168 */ NULL,
199 > /* 169 */ NULL,
200 > /* 170 */ NULL,
201 > /* 171 */ NULL,
202 > /* 172 */ NULL,
203 > /* 173 */ NULL,
204 > /* 174 */ NULL,
205 > /* 175 */ NULL,
206 > /* 176 */ NULL,
207 > /* 177 */ NULL,
208 > /* 178 */ NULL,
209 > /* 179 */ NULL,
210 > /* 180 */ NULL,
211 > /* 181 */ NULL,
212 > /* 182 */ NULL,
213 > /* 183 */ NULL,
214 > /* 184 */ NULL,
215 > /* 185 */ NULL,
216 > /* 186 */ NULL,
217 > /* 187 */ NULL,
218 > /* 188 */ NULL,
219 > /* 189 */ NULL,
220 > /* 190 */ NULL,
221 > /* 191 */ NULL,
222 > /* 192 */ NULL,
223 > /* 193 */ NULL,
224 > /* 194 */ NULL,
225 > /* 195 */ NULL,
226 > /* 196 */ NULL,
227 > /* 197 */ NULL,
228 > /* 198 */ NULL,
229 > /* 199 */ NULL,
230 > /* 200 RPL_TRACELINK */ ":%s 200 %s Link %s %s %s",
231 > /* 201 RPL_TRACECONNECTING */ ":%s 201 %s Try. %s %s",
232 > /* 202 RPL_TRACEHANDSHAKE */ ":%s 202 %s H.S. %s %s",
233 > /* 203 RPL_TRACEUNKNOWN */ ":%s 203 %s ???? %s %s (%s) %d",
234 > /* 204 RPL_TRACEOPERATOR */ ":%s 204 %s Oper %s %s (%s) %lu %lu",
235 > /* 205 RPL_TRACEUSER */ ":%s 205 %s User %s %s (%s) %lu %lu",
236 > /* 206 RPL_TRACESERVER */ ":%s 206 %s Serv %s %dS %dC %s %s!%s@%s %lu",
237 > /* 207 */ NULL,
238 > /* 208 RPL_TRACENEWTYPE */ ":%s 208 %s <newtype> 0 %s",
239 > /* 209 RPL_TRACECLASS */ ":%s 209 %s Class %s %d",
240 > /* 210 */ NULL,
241 > /* 211 RPL_STATSLINKINFO */ ":%s 211 %s %s %u %u %llu %u %llu :%u %u %s",
242 > /* 212 RPL_STATSCOMMANDS */ ":%s 212 %s %s %u %llu :%u",
243 > /* 213 RPL_STATSCLINE */ ":%s 213 %s %c %s %s %s %d %s",
244 > /* 214 RPL_STATSNLINE */ ":%s 214 %s %c %s * %s %d %s",
245 > /* 215 RPL_STATSILINE */ ":%s 215 %s %c %s * %s@%s %d %s",
246 > /* 216 RPL_STATSKLINE */ ":%s 216 %s %s %s * %s :%s",
247 > /* 217 RPL_STATSQLINE */ ":%s 217 %s %c %u %s :%s",
248 > /* 218 RPL_STATSYLINE */ ":%s 218 %s %c %s %u %u %u %u %u %u %u/%u %u/%u %s",
249 > /* 219 RPL_ENDOFSTATS */ ":%s 219 %s %c :End of /STATS report",
250 > /* 220 RPL_STATSPLINE */ ":%s 220 %s %c %d %s %d %s :%s",
251 > /* 221 RPL_UMODEIS */ ":%s 221 %s %s",
252 > /* 222 */ NULL,
253 > /* 223 */ NULL,
254 > /* 224 */ NULL,
255 > /* 225 RPL_STATSDLINE */ ":%s 225 %s %c %s :%s",
256 > /* 226 RPL_STATSALINE */ ":%s 226 %s %s",
257 > /* 227 */ NULL,
258 > /* 228 */ NULL,
259 > /* 229 */ NULL,
260 > /* 230 */ NULL,
261 > /* 231 */ NULL,
262 > /* 232 */ NULL,
263 > /* 233 */ NULL,
264 > /* 234 */ NULL,
265 > /* 235 */ NULL,
266 > /* 236 */ NULL,
267 > /* 237 */ NULL,
268 > /* 238 */ NULL,
269 > /* 239 */ NULL,
270 > /* 240 */ NULL,
271 > /* 241 RPL_STATSLLINE */ ":%s 241 %s %c %s * %s %d %s",
272 > /* 242 RPL_STATSUPTIME */ ":%s 242 %s :Server Up %d days, %d:%02d:%02d",
273 > /* 243 RPL_STATSOLINE */ ":%s 243 %s %c %s@%s * %s %s %s",
274 > /* 244 RPL_STATSHLINE */ ":%s 244 %s %c %s * %s %d %s",
275 > /* 245 */ NULL,
276 > /* 246 RPL_STATSSERVICE */ ":%s 246 %s %c %s * %s %d %d",
277 > /* 247 RPL_STATSXLINE */ ":%s 247 %s %s %d %s :%s",
278 > /* 248 RPL_STATSULINE */ ":%s 248 %s U %s %s@%s %s",
279 > /* 249 */ NULL,
280 > /* 250 RPL_STATSCONN */ ":%s 250 %s :Highest connection count: %d (%d clients) (%llu connections received)",
281 > /* 251 RPL_LUSERCLIENT */ ":%s 251 %s :There are %d users and %d invisible on %d servers",
282 > /* 252 RPL_LUSEROP */ ":%s 252 %s %d :IRC Operators online",
283 > /* 253 RPL_LUSERUNKNOWN */ ":%s 253 %s %d :unknown connection(s)",
284 > /* 254 RPL_LUSERCHANNELS */ ":%s 254 %s %d :channels formed",
285 > /* 255 RPL_LUSERME */ ":%s 255 %s :I have %d clients and %d servers",
286 > /* 256 RPL_ADMINME */ ":%s 256 %s :Administrative info about %s",
287 > /* 257 RPL_ADMINLOC1 */ ":%s 257 %s :%s",
288 > /* 258 RPL_ADMINLOC2 */ ":%s 258 %s :%s",
289 > /* 259 RPL_ADMINEMAIL */ ":%s 259 %s :%s",
290 > /* 260 */ NULL,
291 > /* 261 */ NULL,
292 > /* 262 RPL_ENDOFTRACE */ ":%s 262 %s %s :End of TRACE",
293 > /* 263 RPL_LOAD2HI */ ":%s 263 %s :Server load is temporarily too heavy. Please wait a while and try again.",
294 > /* 264 */ NULL,
295 > /* 265 RPL_LOCALUSERS */ ":%s 265 %s :Current local users: %d  Max: %d",
296 > /* 266 RPL_GLOBALUSERS */ ":%s 266 %s :Current global users: %d  Max: %d",
297 > /* 267 */ NULL,
298 > /* 268 */ NULL,
299 > /* 269 */ NULL,
300 > /* 270 */ NULL,
301 > /* 271 */ NULL,
302 > /* 272 */ NULL,
303 > /* 273 */ NULL,
304 > /* 274 */ NULL,
305 > /* 275 */ NULL,
306 > /* 276 */ NULL,
307 > /* 277 */ NULL,
308 > /* 278 */ NULL,
309 > /* 279 */ NULL,
310 > /* 280 */ NULL,
311 > /* 281 RPL_ACCEPTLIST */ ":%s 281 %s :%s",
312 > /* 282 RPL_ENDOFACCEPT */ ":%s 282 %s :End of /ACCEPT list.",
313 > /* 283 */ NULL,
314 > /* 284 */ NULL,
315 > /* 285 */ NULL,
316 > /* 286 */ NULL,
317 > /* 287 */ NULL,
318 > /* 288 */ NULL,
319 > /* 289 */ NULL,
320 > /* 290 */ NULL,
321 > /* 291 */ NULL,
322 > /* 292 */ NULL,
323 > /* 293 */ NULL,
324 > /* 294 */ NULL,
325 > /* 295 */ NULL,
326 > /* 296 */ NULL,
327 > /* 297 */ NULL,
328 > /* 298 */ NULL,
329 > /* 299 */ NULL,
330 > /* 300 */ NULL,
331 > /* 301 RPL_AWAY */ ":%s 301 %s %s :%s",
332 > /* 302 RPL_USERHOST */ ":%s 302 %s :%s",
333 > /* 303 RPL_ISON */ ":%s 303 %s :",
334 > /* 304 */ NULL,
335 > /* 305 RPL_UNAWAY */ ":%s 305 %s :You are no longer marked as being away",
336 > /* 306 RPL_NOWAWAY */ ":%s 306 %s :You have been marked as being away",
337 > /* 307 RPL_WHOISREGNICK */ ":%s 307 %s %s :has identified for this nick",
338 > /* 308 RPL_WHOISADMIN */ ":%s 313 %s %s :is a Server Administrator",
339 > /* 309 */ NULL,
340 > /* 310 */ NULL,
341 > /* 311 RPL_WHOISUSER */ ":%s 311 %s %s %s %s * :%s",
342 > /* 312 RPL_WHOISSERVER */ ":%s 312 %s %s %s :%s",
343 > /* 313 RPL_WHOISOPERATOR */ ":%s 313 %s %s :is an IRC Operator",
344 > /* 314 RPL_WHOWASUSER */ ":%s 314 %s %s %s %s * :%s",
345 > /* 315 RPL_ENDOFWHO */ ":%s 315 %s %s :End of /WHO list.",
346 > /* 316 */ NULL,
347 > /* 317 RPL_WHOISIDLE */ ":%s 317 %s %s %u %d :seconds idle, signon time",
348 > /* 318 RPL_ENDOFWHOIS */ ":%s 318 %s %s :End of /WHOIS list.",
349 > /* 319 RPL_WHOISCHANNELS */ ":%s 319 %s %s :%s",
350 > /* 320 */ NULL,
351 > /* 321 RPL_LISTSTART */ ":%s 321 %s Channel :Users  Name",
352 > /* 322 RPL_LIST */ ":%s 322 %s %s %d :%s",
353 > /* 323 RPL_LISTEND */ ":%s 323 %s :End of /LIST",
354 > /* 324 RPL_CHANNELMODEIS */ ":%s 324 %s %s %s %s",
355 > /* 325 */ NULL,
356 > /* 326 */ NULL,
357 > /* 327 */ NULL,
358 > /* 328 */ NULL,
359 > /* 329 RPL_CREATIONTIME */ ":%s 329 %s %s %lu",
360 > /* 330 */ NULL,
361 > /* 331 RPL_NOTOPIC */ ":%s 331 %s %s :No topic is set.",
362 > /* 332 RPL_TOPIC */ ":%s 332 %s %s :%s",
363 > /* 333 RPL_TOPICWHOTIME */ ":%s 333 %s %s %s %lu",
364 > /* 334 */ NULL,
365 > /* 335 */ NULL,
366 > /* 336 */ NULL,
367 > /* 337 */ NULL,
368 > /* 338 RPL_WHOISACTUALLY */ ":%s 338 %s %s %s :actually using host",
369 > /* 339 */ NULL,
370 > /* 340 */ NULL,
371 > /* 341 RPL_INVITING */ ":%s 341 %s %s %s",
372 > /* 342 */ NULL,
373 > /* 343 */ NULL,
374 > /* 344 */ NULL,
375 > /* 345 */ NULL,
376 > /* 346 RPL_INVEXLIST */ ":%s 346 %s %s %s!%s@%s %s %lu",
377 > /* 347 RPL_ENDOFINVEXLIST */ ":%s 347 %s %s :End of Channel Invite List",
378 > /* 348 RPL_EXCEPTLIST */ ":%s 348 %s %s %s!%s@%s %s %lu",
379 > /* 349 RPL_ENDOFEXCEPTLIST */ ":%s 349 %s %s :End of Channel Exception List",
380 > /* 350 */ NULL,
381 > /* 351 RPL_VERSION */ ":%s 351 %s %s(%s). %s :%s%s",
382 > /* 352 RPL_WHOREPLY */ ":%s 352 %s %s %s %s %s %s %s :%d %s",
383 > /* 353 RPL_NAMREPLY */ ":%s 353 %s %s %s :",
384 > /* 354 */ NULL,
385 > /* 355 */ NULL,
386 > /* 356 */ NULL,
387 > /* 357 */ NULL,
388 > /* 358 */ NULL,
389 > /* 359 */ NULL,
390 > /* 360 */ NULL,
391 > /* 361 */ NULL,
392 > /* 362 RPL_CLOSING */ ":%s 362 %s %s :Closed. Status = %d",
393 > /* 363 RPL_CLOSEEND */ ":%s 363 %s %d: Connections Closed",
394 > /* 364 RPL_LINKS */ ":%s 364 %s %s %s :%d %s",
395 > /* 365 RPL_ENDOFLINKS */ ":%s 365 %s %s :End of /LINKS list.",
396 > /* 366 RPL_ENDOFNAMES */ ":%s 366 %s %s :End of /NAMES list.",
397 > /* 367 RPL_BANLIST */ ":%s 367 %s %s %s!%s@%s %s %lu",
398 > /* 368 RPL_ENDOFBANLIST */ ":%s 368 %s %s :End of Channel Ban List",
399 > /* 369 RPL_ENDOFWHOWAS */ ":%s 369 %s %s :End of WHOWAS",
400 > /* 370 */ NULL,
401 > /* 371 RPL_INFO */ ":%s 371 %s :%s",
402 > /* 372 RPL_MOTD */ ":%s 372 %s :- %s",
403 > /* 373 RPL_INFOSTART */ ":%s 373 %s :Server INFO",
404 > /* 374 RPL_ENDOFINFO */ ":%s 374 %s :End of /INFO list.",
405 > /* 375 RPL_MOTDSTART */ ":%s 375 %s :- %s Message of the Day - ",
406 > /* 376 RPL_ENDOFMOTD */ ":%s 376 %s :End of /MOTD command.",
407 > /* 377 */ NULL,
408 > /* 378 */ NULL,
409 > /* 379 */ NULL,
410 > /* 380 */ NULL,
411 > /* 381 RPL_YOUREOPER */ ":%s 381 %s :You have entered... the Twilight Zone!",
412 > /* 382 RPL_REHASHING */ ":%s 382 %s %s :Rehashing",
413 > /* 383 */ NULL,
414 > /* 384 */ NULL,
415 > /* 385 */ NULL,
416 > /* 386 */ NULL,
417 > /* 387 */ NULL,
418 > /* 388 */ NULL,
419 > /* 389 */ NULL,
420 > /* 390 */ NULL,
421 > /* 391 RPL_TIME */ ":%s 391 %s %s :%s",
422 > /* 392 */ NULL,
423 > /* 393 */ NULL,
424 > /* 394 */ NULL,
425 > /* 395 */ NULL,
426 > /* 396 */ NULL,
427 > /* 397 */ NULL,
428 > /* 398 */ NULL,
429 > /* 399 */ NULL,
430 > /* 400 */ NULL,
431 > /* 401 ERR_NOSUCHNICK */ ":%s 401 %s %s :No such nick/channel",
432 > /* 402 ERR_NOSUCHSERVER */ ":%s 402 %s %s :No such server",
433 > /* 403 ERR_NOSUCHCHANNEL */ ":%s 403 %s %s :No such channel",
434 > /* 404 ERR_CANNOTSENDTOCHAN */ ":%s 404 %s %s :Cannot send to channel",
435 > /* 405 ERR_TOOMANYCHANNELS */ ":%s 405 %s %s :You have joined too many channels",
436 > /* 406 ERR_WASNOSUCHNICK */ ":%s 406 %s %s :There was no such nickname",
437 > /* 407 ERR_TOOMANYTARGETS */ ":%s 407 %s %s :Too many recipients. Only %d processed",
438 > /* 408 */ NULL,
439 > /* 409 ERR_NOORIGIN */ ":%s 409 %s :No origin specified",
440 > /* 410 ERR_INVALIDCAPCMD */ ":%s 410 %s %s :Invalid CAP subcommand",
441 > /* 411 ERR_NORECIPIENT */ ":%s 411 %s :No recipient given (%s)",
442 > /* 412 ERR_NOTEXTTOSEND */ ":%s 412 %s :No text to send",
443 > /* 413 ERR_NOTOPLEVEL */ ":%s 413 %s %s :No toplevel domain specified",
444 > /* 414 ERR_WILDTOPLEVEL */ ":%s 414 %s %s :Wildcard in toplevel Domain",
445 > /* 415 */ NULL,
446 > /* 416 */ NULL,
447 > /* 417 */ NULL,
448 > /* 418 */ NULL,
449 > /* 419 */ NULL,
450 > /* 420 */ NULL,
451 > /* 421 ERR_UNKNOWNCOMMAND */ ":%s 421 %s %s :Unknown command",
452 > /* 422 ERR_NOMOTD */ ":%s 422 %s :MOTD File is missing",
453 > /* 423 ERR_NOADMININFO */ ":%s 423 %s %s :No administrative info available",
454 > /* 424 */ NULL,
455 > /* 425 */ NULL,
456 > /* 426 */ NULL,
457 > /* 427 */ NULL,
458 > /* 428 */ NULL,
459 > /* 429 */ NULL,
460 > /* 430 */ NULL,
461 > /* 431 ERR_NONICKNAMEGIVEN */ ":%s 431 %s :No nickname given",
462 > /* 432 ERR_ERRONEUSNICKNAME */ ":%s 432 %s %s :%s",
463 > /* 433 ERR_NICKNAMEINUSE */ ":%s 433 %s %s :Nickname is already in use.",
464 > /* 434 */ NULL,
465 > /* 435 */ NULL,
466 > /* 436 ERR_NICKCOLLISION */ ":%s 436 %s %s :Nickname collision KILL",
467 > /* 437 ERR_UNAVAILRESOURCE */ ":%s 437 %s %s :Nick/channel is temporarily unavailable",
468 > /* 438 ERR_NICKTOOFAST */ ":%s 438 %s %s %s :Nick change too fast. Please wait %d seconds.",
469 > /* 439 */ NULL,
470 > /* 440 ERR_SERVICESDOWN */ ":%s 440 %s %s :Services is currently down.",
471 > /* 441 ERR_USERNOTINCHANNEL */ ":%s 441 %s %s %s :They aren't on that channel",
472 > /* 442 ERR_NOTONCHANNEL */ ":%s 442 %s %s :You're not on that channel",
473 > /* 443 ERR_USERONCHANNEL */ ":%s 443 %s %s %s :is already on channel",
474 > /* 444 */ NULL,
475 > /* 445 */ NULL,
476 > /* 446 */ NULL,
477 > /* 447 */ NULL,
478 > /* 448 */ NULL,
479 > /* 449 */ NULL,
480 > /* 450 */ NULL,
481 > /* 451 ERR_NOTREGISTERED */ ":%s 451 %s :You have not registered",
482 > /* 452 */ NULL,
483 > /* 453 */ NULL,
484 > /* 454 */ NULL,
485 > /* 455 */ NULL,
486 > /* 456 ERR_ACCEPTFULL */ ":%s 456 %s :Accept list is full",
487 > /* 457 ERR_ACCEPTEXIST */ ":%s 457 %s %s!%s@%s :is already on your accept list",
488 > /* 458 ERR_ACCEPTNOT */ ":%s 458 %s %s!%s@%s :is not on your accept list",
489 > /* 459 */ NULL,
490 > /* 460 */ NULL,
491 > /* 461 ERR_NEEDMOREPARAMS */ ":%s 461 %s %s :Not enough parameters",
492 > /* 462 ERR_ALREADYREGISTRED */ ":%s 462 %s :You may not reregister",
493 > /* 463 */ NULL,
494 > /* 464 ERR_PASSWDMISMATCH */ ":%s 464 %s :Password Incorrect",
495 > /* 465 ERR_YOUREBANNEDCREEP */ ":%s 465 %s :You are banned from this server- %s",
496 > /* 466 */ NULL,
497 > /* 467 */ NULL,
498 > /* 468 ERR_ONLYSERVERSCANCHANGE */ ":%s 468 %s %s :Only servers can change that mode",
499 > /* 469 */ NULL,
500 > /* 470 ERR_OPERONLYCHAN */ ":%s 470 %s %s :Cannot join channel (+O)",
501 > /* 471 ERR_CHANNELISFULL */ ":%s 471 %s %s :Cannot join channel (+l)",
502 > /* 472 ERR_UNKNOWNMODE */ ":%s 472 %s %c :is unknown mode char to me",
503 > /* 473 ERR_INVITEONLYCHAN */ ":%s 473 %s %s :Cannot join channel (+i)",
504 > /* 474 ERR_BANNEDFROMCHAN */ ":%s 474 %s %s :Cannot join channel (+b)",
505 > /* 475 ERR_BADCHANNELKEY */ ":%s 475 %s %s :Cannot join channel (+k)",
506 > /* 476 */ NULL,
507 > /* 477 ERR_NEEDREGGEDNICK */ ":%s 477 %s %s :You need to identify to a registered nick to join or speak in that channel.",
508 > /* 478 ERR_BANLISTFULL */ ":%s 478 %s %s %s :Channel ban list is full",
509 > /* 479 ERR_BADCHANNAME */ ":%s 479 %s %s :Illegal channel name",
510 > /* 480 ERR_SSLONLYCHAN */ ":%s 480 %s %s :Cannot join channel (+S)",
511 > /* 481 ERR_NOPRIVILEGES */ ":%s 481 %s :Permission Denied - You're not an IRC operator",
512 > /* 482 ERR_CHANOPRIVSNEEDED */ ":%s 482 %s %s :You're not channel operator",
513 > /* 483 ERR_CANTKILLSERVER */ ":%s 483 %s :You can't kill a server!",
514 > /* 484 ERR_RESTRICTED */ ":%s 484 %s :You are restricted",
515 > /* 485 ERR_CHANBANREASON */ ":%s 485 %s %s :Cannot join channel (%s)",
516 > /* 486 ERR_NONONREG */ ":%s 486 %s %s :You must identify to a registered nick to private message that person",
517 > /* 487 */ NULL,
518 > /* 488 */ NULL,
519 > /* 489 */ NULL,
520 > /* 490 */ NULL,
521 > /* 491 ERR_NOOPERHOST */ ":%s 491 %s :Only few of mere mortals may try to enter the twilight zone",
522 > /* 492 */ NULL,
523 > /* 493 */ NULL,
524 > /* 494 */ NULL,
525 > /* 495 */ NULL,
526 > /* 496 */ NULL,
527 > /* 497 */ NULL,
528 > /* 498 */ NULL,
529 > /* 499 */ NULL,
530 > /* 500 */ NULL,
531 > /* 501 ERR_UMODEUNKNOWNFLAG */ ":%s 501 %s :Unknown MODE flag",
532 > /* 502 ERR_USERSDONTMATCH */ ":%s 502 %s :Can't change mode for other users",
533 > /* 503 ERR_GHOSTEDCLIENT */ ":%s 503 %s :Message could not be delivered to %s",
534 > /* 504 ERR_USERNOTONSERV */ ":%s 504 %s %s :User is not on this server",
535 > /* 505 */ NULL,
536 > /* 506 */ NULL,
537 > /* 507 */ NULL,
538 > /* 508 */ NULL,
539 > /* 509 */ NULL,
540 > /* 510 */ NULL,
541 > /* 511 */ NULL,
542 > /* 512 ERR_TOOMANYWATCH */ ":%s 512 %s %s :Maximum size for WATCH-list is %d entries",
543 > /* 513 ERR_WRONGPONG */ ":%s 513 %s :To connect type /QUOTE PONG %u",
544 > /* 514 */ NULL,
545 > /* 515 */ NULL,
546 > /* 516 */ NULL,
547 > /* 517 */ NULL,
548 > /* 518 */ NULL,
549 > /* 519 */ NULL,
550 > /* 520 */ NULL,
551 > /* 521 ERR_LISTSYNTAX */ ":%s 521 %s :Bad list syntax, type /QUOTE HELP LIST",
552 > /* 522 */ NULL,
553 > /* 523 */ NULL,
554 > /* 524 ERR_HELPNOTFOUND */ ":%s 524 %s %s :Help not found",
555 > /* 525 */ NULL,
556 > /* 526 */ NULL,
557 > /* 527 */ NULL,
558 > /* 528 */ NULL,
559 > /* 529 */ NULL,
560 > /* 530 */ NULL,
561 > /* 531 */ NULL,
562 > /* 532 */ NULL,
563 > /* 533 */ NULL,
564 > /* 534 */ NULL,
565 > /* 535 */ NULL,
566 > /* 536 */ NULL,
567 > /* 537 */ NULL,
568 > /* 538 */ NULL,
569 > /* 539 */ NULL,
570 > /* 540 */ NULL,
571 > /* 541 */ NULL,
572 > /* 542 */ NULL,
573 > /* 543 */ NULL,
574 > /* 544 */ NULL,
575 > /* 545 */ NULL,
576 > /* 546 */ NULL,
577 > /* 547 */ NULL,
578 > /* 548 */ NULL,
579 > /* 549 */ NULL,
580 > /* 550 */ NULL,
581 > /* 551 */ NULL,
582 > /* 552 */ NULL,
583 > /* 553 */ NULL,
584 > /* 554 */ NULL,
585 > /* 555 */ NULL,
586 > /* 556 */ NULL,
587 > /* 557 */ NULL,
588 > /* 558 */ NULL,
589 > /* 559 */ NULL,
590 > /* 560 */ NULL,
591 > /* 561 */ NULL,
592 > /* 562 */ NULL,
593 > /* 563 */ NULL,
594 > /* 564 */ NULL,
595 > /* 565 */ NULL,
596 > /* 566 */ NULL,
597 > /* 567 */ NULL,
598 > /* 568 */ NULL,
599 > /* 569 */ NULL,
600 > /* 570 */ NULL,
601 > /* 571 */ NULL,
602 > /* 572 */ NULL,
603 > /* 573 */ NULL,
604 > /* 574 */ NULL,
605 > /* 575 */ NULL,
606 > /* 576 */ NULL,
607 > /* 577 */ NULL,
608 > /* 578 */ NULL,
609 > /* 579 */ NULL,
610 > /* 580 */ NULL,
611 > /* 581 */ NULL,
612 > /* 582 */ NULL,
613 > /* 583 */ NULL,
614 > /* 584 */ NULL,
615 > /* 585 */ NULL,
616 > /* 586 */ NULL,
617 > /* 587 */ NULL,
618 > /* 588 */ NULL,
619 > /* 589 */ NULL,
620 > /* 590 */ NULL,
621 > /* 591 */ NULL,
622 > /* 592 */ NULL,
623 > /* 593 */ NULL,
624 > /* 594 */ NULL,
625 > /* 595 */ NULL,
626 > /* 596 */ NULL,
627 > /* 597 */ NULL,
628 > /* 598 */ NULL,
629 > /* 599 */ NULL,
630 > /* 600 RPL_LOGON */ ":%s 600 %s %s %s %s %d :logged online",
631 > /* 601 RPL_LOGOFF */ ":%s 601 %s %s %s %s %d :logged offline",
632 > /* 602 RPL_WATCHOFF */ ":%s 602 %s %s %s %s %d :stopped watching",
633 > /* 603 RPL_WATCHSTAT */ ":%s 603 %s :You have %u and are on %u WATCH entries",
634 > /* 604 RPL_NOWON */ ":%s 604 %s %s %s %s %d :is online",
635 > /* 605 RPL_NOWOFF */ ":%s 605 %s %s %s %s %d :is offline",
636 > /* 606 RPL_WATCHLIST */ ":%s 606 %s :%s",
637 > /* 607 RPL_ENDOFWATCHLIST */ ":%s 607 %s :End of WATCH %c",
638 > /* 608 */ NULL,
639 > /* 609 */ NULL,
640 > /* 610 */ NULL,
641 > /* 611 */ NULL,
642 > /* 612 */ NULL,
643 > /* 613 */ NULL,
644 > /* 614 */ NULL,
645 > /* 615 */ NULL,
646 > /* 616 */ NULL,
647 > /* 617 */ NULL,
648 > /* 618 */ NULL,
649 > /* 619 */ NULL,
650 > /* 620 */ NULL,
651 > /* 621 */ NULL,
652 > /* 622 */ NULL,
653 > /* 623 */ NULL,
654 > /* 624 */ NULL,
655 > /* 625 */ NULL,
656 > /* 626 */ NULL,
657 > /* 627 */ NULL,
658 > /* 628 */ NULL,
659 > /* 629 */ NULL,
660 > /* 630 */ NULL,
661 > /* 631 */ NULL,
662 > /* 632 */ NULL,
663 > /* 633 */ NULL,
664 > /* 634 */ NULL,
665 > /* 635 */ NULL,
666 > /* 636 */ NULL,
667 > /* 637 */ NULL,
668 > /* 638 */ NULL,
669 > /* 639 */ NULL,
670 > /* 640 */ NULL,
671 > /* 641 */ NULL,
672 > /* 642 */ NULL,
673 > /* 643 */ NULL,
674 > /* 644 */ NULL,
675 > /* 645 */ NULL,
676 > /* 646 */ NULL,
677 > /* 647 */ NULL,
678 > /* 648 */ NULL,
679 > /* 649 */ NULL,
680 > /* 650 */ NULL,
681 > /* 651 */ NULL,
682 > /* 652 */ NULL,
683 > /* 653 */ NULL,
684 > /* 654 */ NULL,
685 > /* 655 */ NULL,
686 > /* 656 */ NULL,
687 > /* 657 */ NULL,
688 > /* 658 */ NULL,
689 > /* 659 */ NULL,
690 > /* 660 */ NULL,
691 > /* 661 */ NULL,
692 > /* 662 */ NULL,
693 > /* 663 */ NULL,
694 > /* 664 */ NULL,
695 > /* 665 */ NULL,
696 > /* 666 */ NULL,
697 > /* 667 */ NULL,
698 > /* 668 */ NULL,
699 > /* 669 */ NULL,
700 > /* 670 */ NULL,
701 > /* 671 RPL_WHOISSECURE */ ":%s 671 %s %s :is connected via SSL (secure link)",
702 > /* 672 */ NULL,
703 > /* 673 */ NULL,
704 > /* 674 */ NULL,
705 > /* 675 */ NULL,
706 > /* 676 */ NULL,
707 > /* 677 */ NULL,
708 > /* 678 */ NULL,
709 > /* 679 */ NULL,
710 > /* 680 */ NULL,
711 > /* 681 */ NULL,
712 > /* 682 */ NULL,
713 > /* 683 */ NULL,
714 > /* 684 */ NULL,
715 > /* 685 */ NULL,
716 > /* 686 */ NULL,
717 > /* 687 */ NULL,
718 > /* 688 */ NULL,
719 > /* 689 */ NULL,
720 > /* 690 */ NULL,
721 > /* 691 */ NULL,
722 > /* 692 */ NULL,
723 > /* 693 */ NULL,
724 > /* 694 */ NULL,
725 > /* 695 */ NULL,
726 > /* 696 */ NULL,
727 > /* 697 */ NULL,
728 > /* 698 */ NULL,
729 > /* 699 */ NULL,
730 > /* 700 */ NULL,
731 > /* 701 */ NULL,
732 > /* 702 RPL_MODLIST */ ":%s 702 %s %s %p %s %s",
733 > /* 703 RPL_ENDOFMODLIST */ ":%s 703 %s :End of /MODLIST.",
734 > /* 704 RPL_HELPSTART */ ":%s 704 %s %s :%s",
735 > /* 705 RPL_HELPTXT */ ":%s 705 %s %s :%s",
736 > /* 706 RPL_ENDOFHELP */ ":%s 706 %s %s :End of /HELP.",
737 > /* 707 */ NULL,
738 > /* 708 RPL_ETRACE_FULL */ ":%s 708 %s %s %s %s %s %s %s %s %s :%s",
739 > /* 709 RPL_ETRACE */ ":%s 709 %s %s %s %s %s %s %s :%s",
740 > /* 710 RPL_KNOCK */ ":%s 710 %s %s %s!%s@%s :has asked for an invite.",
741 > /* 711 RPL_KNOCKDLVR */ ":%s 711 %s %s :Your KNOCK has been delivered.",
742 > /* 712 ERR_TOOMANYKNOCK */ ":%s 712 %s %s :Too many KNOCKs (%s).",
743 > /* 713 ERR_CHANOPEN */ ":%s 713 %s %s :Channel is open.",
744 > /* 714 ERR_KNOCKONCHAN */ ":%s 714 %s %s :You are already on that channel.",
745 > /* 715 */ NULL,
746 > /* 716 RPL_TARGUMODEG */ ":%s 716 %s %s :is in +g mode (server side ignore)",
747 > /* 717 RPL_TARGNOTIFY */ ":%s 717 %s %s :has been informed that you messaged them.",
748 > /* 718 RPL_UMODEGMSG */ ":%s 718 %s %s :is messaging you, and you are umode +g.",
749 > /* 719 */ NULL,
750 > /* 720 */ NULL,
751 > /* 721 */ NULL,
752 > /* 722 */ NULL,
753 > /* 723 ERR_NOPRIVS */ ":%s 723 %s %s :Insufficient oper privs.",
754 > /* 724 RPL_TESTMASK */ ":%s 724 %s %s!%s@%s %u %u :Local/remote clients match.",
755 > /* 725 RPL_TESTLINE */ ":%s 725 %s %c %ld %s :%s",
756 > /* 726 RPL_NOTESTLINE */ ":%s 726 %s %s :No matches",
757 > /* 727 */ NULL,
758 > /* 728 */ NULL,
759 > /* 729 */ NULL,
760 > /* 730 */ NULL,
761 > /* 731 */ NULL,
762 > /* 732 */ NULL,
763 > /* 733 */ NULL,
764 > /* 734 */ NULL,
765 > /* 735 */ NULL,
766 > /* 736 */ NULL,
767 > /* 737 */ NULL,
768 > /* 738 */ NULL,
769 > /* 739 */ NULL,
770 > /* 740 */ NULL,
771 > /* 741 */ NULL,
772 > /* 742 */ NULL,
773 > /* 743 */ NULL,
774 > /* 744 */ NULL,
775 > /* 745 */ NULL,
776 > /* 746 */ NULL,
777 > /* 747 */ NULL,
778 > /* 748 */ NULL,
779 > /* 749 */ NULL,
780 > /* 750 */ NULL,
781 > /* 751 */ NULL,
782 > /* 752 */ NULL,
783 > /* 753 */ NULL,
784 > /* 754 */ NULL,
785 > /* 755 */ NULL,
786 > /* 756 */ NULL,
787 > /* 757 */ NULL,
788 > /* 758 */ NULL,
789 > /* 759 */ NULL,
790 > /* 760 */ NULL,
791 > /* 761 */ NULL,
792 > /* 762 */ NULL,
793 > /* 763 */ NULL,
794 > /* 764 */ NULL,
795 > /* 765 */ NULL,
796 > /* 766 */ NULL,
797 > /* 767 */ NULL,
798 > /* 768 */ NULL,
799 > /* 769 */ NULL,
800 > /* 770 */ NULL,
801 > /* 771 */ NULL,
802 > /* 772 */ NULL,
803 > /* 773 */ NULL,
804 > /* 774 */ NULL,
805 > /* 775 */ NULL,
806 > /* 776 */ NULL,
807 > /* 777 */ NULL,
808 > /* 778 */ NULL,
809 > /* 779 */ NULL,
810 > /* 780 */ NULL,
811 > /* 781 */ NULL,
812 > /* 782 */ NULL,
813 > /* 783 */ NULL,
814 > /* 784 */ NULL,
815 > /* 785 */ NULL,
816 > /* 786 */ NULL,
817 > /* 787 */ NULL,
818 > /* 788 */ NULL,
819 > /* 789 */ NULL,
820 > /* 790 */ NULL,
821 > /* 791 */ NULL,
822 > /* 792 */ NULL,
823 > /* 793 */ NULL,
824 > /* 794 */ NULL,
825 > /* 795 */ NULL,
826 > /* 796 */ NULL,
827 > /* 797 */ NULL,
828 > /* 798 */ NULL,
829 > /* 799 */ NULL,
830 > /* 800 */ NULL,
831 > /* 801 */ NULL,
832 > /* 802 */ NULL,
833 > /* 803 */ NULL,
834 > /* 804 */ NULL,
835 > /* 805 */ NULL,
836 > /* 806 */ NULL,
837 > /* 807 */ NULL,
838 > /* 808 */ NULL,
839 > /* 809 */ NULL,
840 > /* 810 */ NULL,
841 > /* 811 */ NULL,
842 > /* 812 */ NULL,
843 > /* 813 */ NULL,
844 > /* 814 */ NULL,
845 > /* 815 */ NULL,
846 > /* 816 */ NULL,
847 > /* 817 */ NULL,
848 > /* 818 */ NULL,
849 > /* 819 */ NULL,
850 > /* 820 */ NULL,
851 > /* 821 */ NULL,
852 > /* 822 */ NULL,
853 > /* 823 */ NULL,
854 > /* 824 */ NULL,
855 > /* 825 */ NULL,
856 > /* 826 */ NULL,
857 > /* 827 */ NULL,
858 > /* 828 */ NULL,
859 > /* 829 */ NULL,
860 > /* 830 */ NULL,
861 > /* 831 */ NULL,
862 > /* 832 */ NULL,
863 > /* 833 */ NULL,
864 > /* 834 */ NULL,
865 > /* 835 */ NULL,
866 > /* 836 */ NULL,
867 > /* 837 */ NULL,
868 > /* 838 */ NULL,
869 > /* 839 */ NULL,
870 > /* 840 */ NULL,
871 > /* 841 */ NULL,
872 > /* 842 */ NULL,
873 > /* 843 */ NULL,
874 > /* 844 */ NULL,
875 > /* 845 */ NULL,
876 > /* 846 */ NULL,
877 > /* 847 */ NULL,
878 > /* 848 */ NULL,
879 > /* 849 */ NULL,
880 > /* 850 */ NULL,
881 > /* 851 */ NULL,
882 > /* 852 */ NULL,
883 > /* 853 */ NULL,
884 > /* 854 */ NULL,
885 > /* 855 */ NULL,
886 > /* 856 */ NULL,
887 > /* 857 */ NULL,
888 > /* 858 */ NULL,
889 > /* 859 */ NULL,
890 > /* 860 */ NULL,
891 > /* 861 */ NULL,
892 > /* 862 */ NULL,
893 > /* 863 */ NULL,
894 > /* 864 */ NULL,
895 > /* 865 */ NULL,
896 > /* 866 */ NULL,
897 > /* 867 */ NULL,
898 > /* 868 */ NULL,
899 > /* 869 */ NULL,
900 > /* 870 */ NULL,
901 > /* 871 */ NULL,
902 > /* 872 */ NULL,
903 > /* 873 */ NULL,
904 > /* 874 */ NULL,
905 > /* 875 */ NULL,
906 > /* 876 */ NULL,
907 > /* 877 */ NULL,
908 > /* 878 */ NULL,
909 > /* 879 */ NULL,
910 > /* 880 */ NULL,
911 > /* 881 */ NULL,
912 > /* 882 */ NULL,
913 > /* 883 */ NULL,
914 > /* 884 */ NULL,
915 > /* 885 */ NULL,
916 > /* 886 */ NULL,
917 > /* 887 */ NULL,
918 > /* 888 */ NULL,
919 > /* 889 */ NULL,
920 > /* 890 */ NULL,
921 > /* 891 */ NULL,
922 > /* 892 */ NULL,
923 > /* 893 */ NULL,
924 > /* 894 */ NULL,
925 > /* 895 */ NULL,
926 > /* 896 */ NULL,
927 > /* 897 */ NULL,
928 > /* 898 */ NULL,
929 > /* 899 */ NULL,
930 > /* 900 */ NULL,
931 > /* 901 */ NULL,
932 > /* 902 */ NULL,
933 > /* 903 */ NULL,
934 > /* 904 */ NULL,
935 > /* 905 */ NULL,
936 > /* 906 */ NULL,
937 > /* 907 */ NULL,
938 > /* 908 */ NULL,
939 > /* 909 */ NULL,
940 > /* 910 */ NULL,
941 > /* 911 */ NULL,
942 > /* 912 */ NULL,
943 > /* 913 */ NULL,
944 > /* 914 */ NULL,
945 > /* 915 */ NULL,
946 > /* 916 */ NULL,
947 > /* 917 */ NULL,
948 > /* 918 */ NULL,
949 > /* 919 */ NULL,
950 > /* 920 */ NULL,
951 > /* 921 */ NULL,
952 > /* 922 */ NULL,
953 > /* 923 */ NULL,
954 > /* 924 */ NULL,
955 > /* 925 */ NULL,
956 > /* 926 */ NULL,
957 > /* 927 */ NULL,
958 > /* 928 */ NULL,
959 > /* 929 */ NULL,
960 > /* 930 */ NULL,
961 > /* 931 */ NULL,
962 > /* 932 */ NULL,
963 > /* 933 */ NULL,
964 > /* 934 */ NULL,
965 > /* 935 */ NULL,
966 > /* 936 */ NULL,
967 > /* 937 */ NULL,
968 > /* 938 */ NULL,
969 > /* 939 */ NULL,
970 > /* 940 */ NULL,
971 > /* 941 */ NULL,
972 > /* 942 */ NULL,
973 > /* 943 */ NULL,
974 > /* 944 */ NULL,
975 > /* 945 */ NULL,
976 > /* 946 */ NULL,
977 > /* 947 */ NULL,
978 > /* 948 */ NULL,
979 > /* 949 */ NULL,
980 > /* 950 */ NULL,
981 > /* 951 */ NULL,
982 > /* 952 */ NULL,
983 > /* 953 */ NULL,
984 > /* 954 */ NULL,
985 > /* 955 */ NULL,
986 > /* 956 */ NULL,
987 > /* 957 */ NULL,
988 > /* 958 */ NULL,
989 > /* 959 */ NULL,
990 > /* 960 */ NULL,
991 > /* 961 */ NULL,
992 > /* 962 */ NULL,
993 > /* 963 */ NULL,
994 > /* 964 */ NULL,
995 > /* 965 */ NULL,
996 > /* 966 */ NULL,
997 > /* 967 */ NULL,
998 > /* 968 */ NULL,
999 > /* 969 */ NULL,
1000 > /* 970 */ NULL,
1001 > /* 971 */ NULL,
1002 > /* 972 */ NULL,
1003 > /* 973 */ NULL,
1004 > /* 974 */ NULL,
1005 > /* 975 */ NULL,
1006 > /* 976 */ NULL,
1007 > /* 977 */ NULL,
1008 > /* 978 */ NULL,
1009 > /* 979 */ NULL,
1010 > /* 980 */ NULL,
1011 > /* 981 */ NULL,
1012 > /* 982 */ NULL,
1013 > /* 983 */ NULL,
1014 > /* 984 */ NULL,
1015 > /* 985 */ NULL,
1016 > /* 986 */ NULL,
1017 > /* 987 */ NULL,
1018 > /* 988 */ NULL,
1019 > /* 989 */ NULL,
1020 > /* 990 */ NULL,
1021 > /* 991 */ NULL,
1022 > /* 992 */ NULL,
1023 > /* 993 */ NULL,
1024 > /* 994 */ NULL,
1025 > /* 995 */ NULL,
1026 > /* 996 */ NULL,
1027 > /* 997 */ NULL,
1028 > /* 998 */ NULL,
1029 > /* 999 ERR_LAST_ERR_MSG */ ":%s 999 %s :Last Error Message"
1030 > };
1031  
1032   /*
1033   * form_str
1034   *
1035 < * inputs       - numeric
1036 < * output       - corresponding string
1037 < * side effects - NONE
1035 > * inputs       - numeric
1036 > * output       - corresponding string
1037 > * side effects - NONE
1038   */
1039 < const char* form_str(int numeric)
1039 > const char *
1040 > form_str(unsigned int numeric)
1041   {
48  assert(-1 < numeric);
1042    assert(numeric < ERR_LAST_ERR_MSG);
1043  
1044    if (numeric > ERR_LAST_ERR_MSG)
1045      numeric = ERR_LAST_ERR_MSG;
53  if (numeric < 0)
54    numeric = ERR_LAST_ERR_MSG;
1046  
1047 <  assert(replies[numeric].standard != NULL);
1047 >  assert(replies[numeric]);
1048  
1049 <  return (replies[numeric].translated != NULL ? replies[numeric].translated :
59 <                                                replies[numeric].standard);
60 < }
61 <
62 < /* Attempts to change a numeric with index "reply" to "new_reply".
63 < * Returns 1 if ok, 0 otherwise.
64 < */
65 < static int
66 < change_reply(const char *locale, int linecnt, int reply, char *new_reply)
67 < {
68 <  int found;
69 <  char *new = new_reply;
70 <  const char *old = replies[reply].standard;
71 <
72 <  for (; *new; new++)
73 <  {
74 <    if (*new == '%')
75 <    {
76 <      if (!*++new) break;
77 <      if (*new != '%')
78 <      {
79 <        /* We've just found a format symbol. Check if it is the next format
80 <         * symbol in the original reply.
81 <         */
82 <        for (; *new >= '0' && *new <= '9'; new++); /* skip size prefix */
83 <        found = 0;
84 <        for (; *old; old++)
85 <        {
86 <          if (*old == '%')
87 <          {
88 <            if (!*++old) break;  /* shouldn't happen */
89 <            if (*old != '%')
90 <            {
91 <              for (; *old >= '0' && *old <= '9'; old++); /* skip size prefix */
92 <              if (*new != *old++)
93 <              {
94 <                ilog(L_ERROR, "Incompatible format symbols (%s.lang, %d)",
95 <                              locale, linecnt);
96 <                return 0;
97 <              }
98 <              found = 1;
99 <              break;
100 <            }
101 <          }
102 <        }
103 <        if (!found)
104 <        {
105 <          ilog(L_ERROR, "Too many format symbols (%s.lang, %d)", locale, linecnt);
106 <          return(0);
107 <        }
108 <      }
109 <    }
110 <  }
111 <
112 <  MyFree(replies[reply].translated);
113 <  DupString(replies[reply].translated, new_reply);
114 <  return(1);
115 < }
116 <
117 < /* Loads a language file. Errors are logged into the log file. */
118 < void
119 < set_locale(const char *locale)
120 < {
121 <  int i, res = 1, linecnt = 0;
122 <  char buffer[IRCD_BUFSIZE + 1];
123 <  char *ident, *reply;
124 <  FBFILE *f;
125 <
126 <  /* Restore standard replies */
127 <  for (i = 0; i <= ERR_LAST_ERR_MSG; i++)   /* 0 isn't a magic number! ;> */
128 <  {
129 <    if (replies[i].translated != NULL)
130 <    {
131 <      MyFree(replies[i].translated);
132 <      replies[i].translated = NULL;
133 <    }
134 <  }
135 <
136 <  if (strchr(locale, '/') != NULL)
137 <  {
138 <    strlcpy(used_locale, "standard", sizeof(used_locale));  /* XXX paranoid */
139 <    return;
140 <  }
141 <
142 <  /* yes, I know - the slash isn't necessary. But I have to be sure
143 <   * that it'll work even if some lame admin won't put "/" at the end
144 <   * of MSGPATH.
145 <   */
146 <  snprintf(buffer, sizeof(buffer), "%s/%s.lang", MSGPATH, locale);
147 <  if ((f = fbopen(buffer, "r")) == NULL)
148 <  {
149 <    strlcpy(used_locale, "standard", sizeof(used_locale));  /* XXX */
150 <    return;
151 <  }
152 <
153 <  /* Process the language file */
154 <  while (fbgets(buffer, sizeof(buffer), f))
155 <  {
156 <    ++linecnt;
157 <    if (buffer[0] == ';')
158 <      continue;   /* that's a comment */
159 <
160 <    if ((ident = strpbrk(buffer, "\r\n")) != NULL)
161 <      *ident = '\0';
162 <
163 <    /* skip spaces if there are any */
164 <    for (ident = buffer; *ident == ' ' || *ident == '\t'; ident++)/* null */;
165 <    if (*ident == '\0')
166 <      continue;            /* empty line */
167 <
168 <    /* skip after the reply identificator */
169 <    for (reply = ident; *reply != ' ' && *reply != '\t' && *reply != ':';
170 <      reply++)
171 <      if (*reply == '\0') goto error;
172 <
173 <    if (*reply == ' ' || *reply == '\t')
174 <    {
175 <      for (*reply++ = '\0'; *reply == ' ' || *reply == '\t'; reply++);
176 <      if (*reply != ':')
177 <      {
178 <        error:
179 <        ilog(L_ERROR, "Invalid line in language file (%s.lang, %d)",
180 <                      locale, linecnt);
181 <        res = 0;
182 <        continue;
183 <      }
184 <    }
185 <    else
186 <      *reply++ = '\0';
187 <    if (*ident == '\0')
188 <      goto error;
189 <
190 <    /* skip to the beginning of reply */
191 <    while (*reply == ' ' || *reply == '\t') reply++;
192 <    if (*reply == '\0')
193 <      goto error;
194 <
195 <    for (i = 0; i <= ERR_LAST_ERR_MSG; i++)
196 <    {
197 <      if (replies[i].name != NULL)
198 <      {
199 <        if (irccmp(replies[i].name, ident) == 0)
200 <        {
201 <          if (!change_reply(locale, linecnt, i, reply)) res = 0;
202 <          i = -1;
203 <          break;
204 <        }
205 <      }
206 <    }
207 <    if (i != -1)
208 <    {
209 <      ilog(L_ERROR,
210 <           "Unknown numeric %s (%s.lang, %d)", ident, locale, linecnt);
211 <      res = 0;
212 <    }
213 <  }
214 <  fbclose(f);
215 <
216 <  strlcpy(used_locale, locale, sizeof(used_locale));
217 <  if (!res)
218 <    sendto_realops_flags(UMODE_ALL, L_ADMIN, "Language file [%s] contains "
219 <                         "errors, check server log file for more details",
220 <                         used_locale);
221 < }
222 <
223 < /* Returns the name of current locale. */
224 < const char *
225 < get_locale(void)
226 < {
227 <  return used_locale;
1049 >  return replies[numeric];
1050   }

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)