1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-29 02:56:37 +02:00
Files
unrealircd/src/err.c
T
Bram Matthys 2eecf4f2da Use generic numeric 531 (ERR_CANTSENDTOUSER) for all such cases and use hook
CAN_SEND_TO_USER rather than HOOKTYPE_PRE_USERMSG (which is now removed).

As for the numeric change: this makes it much easier for client devs.
You rarely need to differentiate in the client code between the various
causes. One only cares about detecting that the message was not sent and
that the user needs to be informed.
This replaces various NOTICEs, ERR_NOCTCP, ERR_NONONREG etc. with just the
new numeric 531, which is taken from InspIRCd. The syntax is:
:server 531 yourname targetname :reason for the block
This makes it similar to numeric 404 (ERR_CANNOTSENDTOCHAN) that is used to
indicate that a channel message was blocked.

For module devs, the new hook CAN_SEND_TO_USER prototype is:
int hooktype_can_send_to_user(Client *client, Client *target, char **text, char **errmsg, int notice);
You can replace the text via this, by setting *text in your function.
You can block the message, by returning HOOK_DENY. If doing so, then
you must also set *errmsg to an appropriate value.
Do not send any error message to the user! UnrealIRCd will take care of
sending the error message for you, if you set *errmsg.
Only if you need something special you could violate this rule, but
preferably not!

As you can see, CAN_SEND_TO_USER works just like CAN_SEND_TO_CHANNEL.
2019-10-05 12:53:41 +02:00

1052 lines
30 KiB
C

/*
* Unreal Internet Relay Chat Daemon, src/err.c
* Copyright (C) 1992 Darren Reed
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "unrealircd.h"
static char *replies[] = {
/* 000 */ NULL,
/* 001 RPL_WELCOME */ ":Welcome to the %s IRC Network %s!%s@%s",
/* 002 RPL_YOURHOST */ ":Your host is %s, running version %s",
/* 003 RPL_CREATED */ ":This server was created %s",
/* 004 RPL_MYINFO */ "%s %s %s %s",
/* 005 RPL_ISUPPORT */ "%s :are supported by this server",
/* 006 RPL_MAP */ ":%s%-*s(%ld) %s",
/* 007 RPL_MAPEND */ ":End of /MAP",
/* 008 RPL_SNOMASK */ "%s :Server notice mask",
/* 009 */ NULL, /* ircu */
/* 010 RPL_REDIR */ "%s %d :Please use this Server/Port instead",
/* 011 */ NULL,
/* 012 */ NULL,
/* 013 */ NULL,
/* 014 */ NULL, /* hybrid */
/* 015 */ NULL,
/* 016 */ NULL,
/* 017 */ NULL,
/* 018 */ NULL,
/* 019 */ NULL,
/* 020 */ NULL,
/* 021 */ NULL,
/* 022 */ NULL,
/* 023 */ NULL,
/* 024 */ NULL,
/* 025 */ NULL,
/* 026 */ NULL,
/* 027 */ NULL,
/* 028 */ NULL,
/* 029 */ NULL,
/* 030 */ NULL,
/* 031 */ NULL,
/* 032 */ NULL,
/* 033 */ NULL,
/* 034 */ NULL,
/* 035 */ NULL,
/* 036 */ NULL,
/* 037 */ NULL,
/* 038 */ NULL,
/* 039 */ NULL,
/* 040 */ NULL,
/* 041 */ NULL,
/* 042 RPL_YOURID */ "%s :your unique ID",
/* 043 */ NULL, /* ircnet */
/* 044 */ NULL,
/* 045 */ NULL,
/* 046 */ NULL,
/* 047 */ NULL,
/* 048 */ NULL,
/* 049 */ NULL,
/* 050 */ NULL, /* aircd */
/* 051 */ NULL, /* aircd */
/* 052 */ NULL,
/* 053 */ NULL,
/* 054 */ NULL,
/* 055 */ NULL,
/* 056 */ NULL,
/* 057 */ NULL,
/* 058 */ NULL,
/* 059 */ NULL,
/* 060 */ NULL,
/* 061 */ NULL,
/* 062 */ NULL,
/* 063 */ NULL,
/* 064 */ NULL,
/* 065 */ NULL,
/* 066 */ NULL,
/* 067 */ NULL,
/* 068 */ NULL,
/* 069 */ NULL,
/* 070 */ NULL,
/* 071 */ NULL,
/* 072 */ NULL,
/* 073 */ NULL,
/* 074 */ NULL,
/* 075 */ NULL,
/* 076 */ NULL,
/* 077 */ NULL,
/* 078 */ NULL,
/* 079 */ NULL,
/* 080 */ NULL,
/* 081 */ NULL,
/* 082 */ NULL,
/* 083 */ NULL,
/* 084 */ NULL,
/* 085 */ NULL,
/* 086 */ NULL,
/* 087 */ NULL,
/* 088 */ NULL,
/* 089 */ NULL,
/* 090 */ NULL,
/* 091 */ NULL,
/* 092 */ NULL,
/* 093 */ NULL,
/* 094 */ NULL,
/* 095 */ NULL,
/* 096 */ NULL,
/* 097 */ NULL,
/* 098 */ NULL,
/* 099 */ NULL,
/* 100 */ NULL,
/* 101 */ NULL,
/* 102 */ NULL,
/* 103 */ NULL,
/* 104 */ NULL,
/* 105 RPL_REMOTEISUPPORT */ "%s :are supported by this server",
/* 106 */ NULL,
/* 107 */ NULL,
/* 108 */ NULL,
/* 109 */ NULL,
/* 110 */ NULL,
/* 111 */ NULL,
/* 112 */ NULL,
/* 113 */ NULL,
/* 114 */ NULL,
/* 115 */ NULL,
/* 116 */ NULL,
/* 117 */ NULL,
/* 118 */ NULL,
/* 119 */ NULL,
/* 120 */ NULL,
/* 121 */ NULL,
/* 122 */ NULL,
/* 123 */ NULL,
/* 124 */ NULL,
/* 125 */ NULL,
/* 126 */ NULL,
/* 127 */ NULL,
/* 128 */ NULL,
/* 129 */ NULL,
/* 130 */ NULL,
/* 131 */ NULL,
/* 132 */ NULL,
/* 133 */ NULL,
/* 134 */ NULL,
/* 135 */ NULL,
/* 136 */ NULL,
/* 137 */ NULL,
/* 138 */ NULL,
/* 139 */ NULL,
/* 140 */ NULL,
/* 141 */ NULL,
/* 142 */ NULL,
/* 143 */ NULL,
/* 144 */ NULL,
/* 145 */ NULL,
/* 146 */ NULL,
/* 147 */ NULL,
/* 148 */ NULL,
/* 149 */ NULL,
/* 150 */ NULL,
/* 151 */ NULL,
/* 152 */ NULL,
/* 153 */ NULL,
/* 154 */ NULL,
/* 155 */ NULL,
/* 156 */ NULL,
/* 157 */ NULL,
/* 158 */ NULL,
/* 159 */ NULL,
/* 160 */ NULL,
/* 161 */ NULL,
/* 162 */ NULL,
/* 163 */ NULL,
/* 164 */ NULL,
/* 165 */ NULL,
/* 166 */ NULL,
/* 167 */ NULL,
/* 168 */ NULL,
/* 169 */ NULL,
/* 170 */ NULL,
/* 171 */ NULL,
/* 172 */ NULL,
/* 173 */ NULL,
/* 174 */ NULL,
/* 175 */ NULL,
/* 176 */ NULL,
/* 177 */ NULL,
/* 178 */ NULL,
/* 179 */ NULL,
/* 180 */ NULL,
/* 181 */ NULL,
/* 182 */ NULL,
/* 183 */ NULL,
/* 184 */ NULL,
/* 185 */ NULL,
/* 186 */ NULL,
/* 187 */ NULL,
/* 188 */ NULL,
/* 189 */ NULL,
/* 190 */ NULL,
/* 191 */ NULL,
/* 192 */ NULL,
/* 193 */ NULL,
/* 194 */ NULL,
/* 195 */ NULL,
/* 196 */ NULL,
/* 197 */ NULL,
/* 198 */ NULL,
/* 199 */ NULL,
/* 200 RPL_TRACELINK */ "Link %s%s %s %s",
/* 201 RPL_TRACECONNECTING */ "Attempt %s %s",
/* 202 RPL_TRACEHANDSHAKE */ "Handshaking %s %s",
/* 203 RPL_TRACEUNKNOWN */ "???? %s %s",
/* 204 RPL_TRACEOPERATOR */ "Operator %s %s [%s] %ld",
/* 205 RPL_TRACEUSER */ "User %s %s [%s] %ld",
/* 206 RPL_TRACESERVER */ "Server %s %dS %dC %s %s!%s@%s %ld",
/* 207 RPL_TRACESERVICE */ "Service %s %s",
/* 208 RPL_TRACENEWTYPE */ "%s 0 %s",
/* 209 RPL_TRACECLASS */ "Class %s %d",
/* 210 RPL_STATSHELP */ ":%s",
/* 211 */ NULL, /* Used */
#ifdef DEBUGMODE
/* 212 RPL_STATSCOMMANDS */ "%s %u %lu %lu %lu %lu %lu",
#else
/* 212 RPL_STATSCOMMANDS */ "%s %u %lu",
#endif
/* 213 RPL_STATSCLINE */ "%c %s * %s %d %d %s",
/* 214 RPL_STATSOLDNLINE */ "%c %s * %s %d %d %s",
/* 215 RPL_STATSILINE */ "I %s * %s %d %s %s %d",
/* 216 RPL_STATSKLINE */ "%s %s %s",
/* 217 RPL_STATSQLINE */ "%c %s %ld %ld %s :%s",
/* 218 RPL_STATSYLINE */ "Y %s %d %d %d %d %d",
/* 219 RPL_ENDOFSTATS */ "%c :End of /STATS report",
/* 220 RPL_STATSBLINE */ "%c %s %s %s %d %d",
/* 221 RPL_UMODEIS */ "%s",
/* 222 RPL_SQLINE_NICK */ "%s :%s",
/* 223 RPL_STATSGLINE */ "%c %s%s@%s %li %li %s :%s",
/* 224 RPL_STATSTLINE */ "T %s %s %s",
/* 225 RPL_STATSELINE (we use 230 instead) */ NULL,
/* 226 RPL_STATSNLINE */ "n %s %s",
/* 227 RPL_STATSVLINE */ "v %s %s %s",
/* 228 RPL_STATSBANVER */ "%s %s",
/* 229 RPL_STATSSPAMF */ "%c %s %s %s %li %li %li %s %s :%s",
/* 230 RPL_STATSEXCEPTTKL */ "%s%s@%s %s %li %li %s :%s",
/* 231 */ NULL, /* rfc1459 */
/* 232 RPL_RULES */ ":- %s",
/* 233 */ NULL, /* rfc1459 */
/* 234 */ NULL, /* rfc2812 */
/* 235 */ NULL, /* rfc2812 */
/* 236 */ NULL, /* ircu */
/* 237 */ NULL, /* ircu */
/* 238 */ NULL, /* ircu, ircnet */
/* 239 */ NULL, /* ircnet */
/* 240 */ NULL, /* rfc2812, austhex */
/* 241 RPL_STATSLLINE */ "%c %s * %s %d %d",
/* 242 RPL_STATSUPTIME */ ":Server Up %ld days, %ld:%02ld:%02ld",
/* 243 RPL_STATSOLINE */ "%c %s * %s %s %s",
/* 244 RPL_STATSHLINE */ "%c %s * %s %d %d",
/* 245 RPL_STATSSLINE */ "%c %s * %s %d %d",
/* 246 */ NULL, /* rfc2812 */
/* 247 RPL_STATSXLINE */ "X %s %d",
/* 248 RPL_STATSULINE */ "U %s",
/* 249 RPL_STATSDEBUG */ ":%s",
/* 250 RPL_STATSCONN */ ":Highest connection count: %d (%d clients)",
/* 251 RPL_LUSERCLIENT */ ":There are %d users and %d invisible on %d servers",
/* 252 RPL_LUSEROP */ "%d :operator(s) online",
/* 253 RPL_LUSERUNKNOWN */ "%d :unknown connection(s)",
/* 254 RPL_LUSERCHANNELS */ "%d :channels formed",
/* 255 RPL_LUSERME */ ":I have %d clients and %d servers",
/* 256 RPL_ADMINME */ ":Administrative info about %s",
/* 257 RPL_ADMINLOC1 */ ":%s",
/* 258 RPL_ADMINLOC2 */ ":%s",
/* 259 RPL_ADMINEMAIL */ ":%s",
/* 260 */ NULL,
/* 261 RPL_TRACELOG */ "File %s %d",
/* 262 */ NULL, /* rfc2812 */
/* 263 RPL_TRYAGAIN */ "%s :Flooding detected. Please wait a while and try again.",
/* 264 */ NULL,
/* 265 RPL_LOCALUSERS */ "%d %d :Current local users %d, max %d",
/* 266 RPL_GLOBALUSERS */ "%d %d :Current global users %d, max %d",
/* 267 */ NULL, /* aircd */
/* 268 */ NULL, /* aircd */
/* 269 */ NULL, /* aircd */
/* 270 */ NULL, /* ircu */
/* 271 RPL_SILELIST */ "%s %s",
/* 272 RPL_ENDOFSILELIST */ ":End of Silence List",
/* 273 */ NULL, /* aircd */
/* 274 */ NULL, /* ircnet */
/* 275 RPL_STATSDLINE */ "%c %s %s",
/* 276 RPL_WHOISCERTFP */ "%s :has client certificate fingerprint %s",
/* 277 */ NULL, /* hybrid */
/* 278 */ NULL, /* hybrid */
/* 279 */ NULL,
/* 280 */ NULL, /* ircu */
/* 281 */ NULL, /* ircu, hybrid */
/* 282 */ NULL, /* ircu, hybrid */
/* 283 */ NULL, /* ircu, hybrid */
/* 284 */ NULL, /* hybrid, quakenet */
/* 285 */ NULL, /* ircu, aircd, quakenet */
/* 286 */ NULL, /* aircd, quakenet */
/* 287 */ NULL, /* aircd, quakenet */
/* 288 */ NULL, /* aircd, quakenet */
/* 289 */ NULL, /* aircd, quakenet */
/* 290 */ NULL, /* aircd, quakenet */
/* 291 */ NULL, /* aircd, quakenet */
/* 292 */ NULL, /* aircd */
/* 293 */ NULL, /* aircd */
/* 294 RPL_HELPFWD */ ":Your help-request has been forwarded to Help Operators",
/* 295 RPL_HELPIGN */ ":Your address has been ignored from forwarding",
/* 296 */ NULL, /* aircd */
/* 297 */ NULL,
/* 298 */ NULL, /* Used */
/* 299 */ NULL, /* aircd */
/* 300 */ NULL, /* rfc1459 */
/* 301 RPL_AWAY */ "%s :%s",
/* 302 RPL_USERHOST */ ":%s %s %s %s %s",
/* 303 RPL_ISON */ ":",
/* 304 */ NULL, /* RPL_TEXT */
/* 305 RPL_UNAWAY */ ":You are no longer marked as being away",
/* 306 RPL_NOWAWAY */ ":You have been marked as being away",
/* 307 RPL_WHOISREGNICK */ "%s :is identified for this nick",
/* 308 RPL_RULESSTART */ ":- %s Server Rules - ",
/* 309 RPL_ENDOFRULES */ ":End of RULES command.",
/* 310 RPL_WHOISHELPOP */ "%s :is available for help.",
/* 311 RPL_WHOISUSER */ "%s %s %s * :%s",
/* 312 RPL_WHOISSERVER */ "%s %s :%s",
/* 313 RPL_WHOISOPERATOR */ "%s :is %s",
/* 314 RPL_WHOWASUSER */ "%s %s %s * :%s",
/* 315 RPL_ENDOFWHO */ "%s :End of /WHO list.",
/* 316 */ NULL, /* rfc1459 */
/* 317 RPL_WHOISIDLE */ "%s %ld %ld :seconds idle, signon time",
/* 318 RPL_ENDOFWHOIS */ "%s :End of /WHOIS list.",
/* 319 RPL_WHOISCHANNELS */ "%s :%s",
/* 320 RPL_WHOISSPECIAL */ "%s :%s",
/* 321 RPL_LISTSTART */ "Channel :Users Name",
#ifndef LIST_SHOW_MODES
/* 322 RPL_LIST */ "%s %d :%s",
#else
/* 322 RPL_LIST */ "%s %d :%s %s",
#endif
/* 323 RPL_LISTEND */ ":End of /LIST",
/* 324 RPL_CHANNELMODEIS */ "%s %s %s",
/* 325 */ NULL, /* rfc2812 */
/* 326 */ NULL, /* Used */
/* 327 */ NULL, /* Used */
/* 328 */ NULL, /* bahamut, austhex */
/* 329 RPL_CREATIONTIME */ "%s %lu",
/* 330 RPL_WHOISLOGGEDIN */ "%s %s :is logged in as",
/* 331 RPL_NOTOPIC */ "%s :No topic is set.",
/* 332 RPL_TOPIC */ "%s :%s",
/* 333 RPL_TOPICWHOTIME */ "%s %s %lu",
/* 334 RPL_LISTSYNTAX */ ":%s",
/* 335 RPL_WHOISBOT */ "%s :is a \2Bot\2 on %s",
/* 336 RPL_INVITELIST */ ":%s",
/* 337 RPL_ENDOFINVITELIST */ ":End of /INVITE list.",
/* 338 */ NULL, /* ircu, bahamut */
/* 339 */ NULL, /* Used */
/* 340 RPL_USERIP */ ":%s %s %s %s %s",
/* 341 RPL_INVITING */ "%s %s",
/* 342 RPL_SUMMONING */ "%s :User summoned to irc",
/* 343 */ NULL,
/* 344 */ NULL,
/* 345 */ NULL, /* gamesurge */
/* 346 RPL_INVEXLIST */ "%s %s %s %lu",
/* 347 RPL_ENDOFINVEXLIST */ "%s :End of Channel Invite List",
/* 348 RPL_EXLIST */ "%s %s %s %lu",
/* 349 RPL_ENDOFEXLIST */ "%s :End of Channel Exception List",
/* 350 */ NULL,
/* 351 RPL_VERSION */ "%s.%s %s :%s%s%s [%s=%d]",
/* 352 RPL_WHOREPLY */ "%s %s %s %s %s %s :%d %s",
/* 353 RPL_NAMREPLY */ "%s",
/* 354 */ NULL, /* ircu */
/* 355 */ NULL, /* quakenet */
/* 356 */ NULL,
/* 357 */ NULL, /* austhex */
/* 358 */ NULL, /* austhex */
/* 359 */ NULL, /* austhex */
/* 360 */ NULL,
/* 361 */ NULL, /* rfc1459 */
/* 362 RPL_CLOSING */ "%s :Closed. Status = %d",
/* 363 RPL_CLOSEEND */ "%d: Connections Closed",
/* 364 RPL_LINKS */ "%s %s :%d %s",
/* 365 RPL_ENDOFLINKS */ "%s :End of /LINKS list.",
/* 366 RPL_ENDOFNAMES */ "%s :End of /NAMES list.",
/* 367 RPL_BANLIST */ "%s %s %s %lu",
/* 368 RPL_ENDOFBANLIST */ "%s :End of Channel Ban List",
/* 369 RPL_ENDOFWHOWAS */ "%s :End of WHOWAS",
/* 370 */ NULL,
/* 371 RPL_INFO */ ":%s",
/* 372 RPL_MOTD */ ":- %s",
/* 373 RPL_INFOSTART */ ":Server INFO",
/* 374 RPL_ENDOFINFO */ ":End of /INFO list.",
/* 375 RPL_MOTDSTART */ ":- %s Message of the Day - ",
/* 376 RPL_ENDOFMOTD */ ":End of /MOTD command.",
/* 377 */ NULL, /* aircd, austhex */
/* 378 RPL_WHOISHOST */ "%s :is connecting from %s@%s %s",
/* 379 RPL_WHOISMODES */ "%s :is using modes %s %s",
/* 380 */ NULL, /* aircd, austhex */
/* 381 RPL_YOUREOPER */ ":You are now an IRC Operator",
/* 382 RPL_REHASHING */ "%s :Rehashing",
/* 383 */ NULL, /* rfc2812 */
/* 384 RPL_MYPORTIS */ "%d :Port to local server is\r\n",
/* 385 */ NULL, /* austhex, hybrid */
/* 386 RPL_QLIST */ "%s %s",
/* 387 RPL_ENDOFQLIST */ "%s :End of Channel Owner List",
/* 388 RPL_ALIST */ "%s %s",
/* 389 RPL_ENDOFALIST */ "%s :End of Protected User List",
/* 390 */ NULL,
/* 391 RPL_TIME */ "%s :%s",
#ifdef ENABLE_USERS
/* 392 RPL_USERSSTART */ ":UserID Terminal Host",
/* 393 RPL_USERS */ ":%-8s %-9s %-8s",
/* 394 RPL_ENDOFUSERS */ ":End of Users",
/* 395 RPL_NOUSERS */ ":Nobody logged in.",
#else
/* 392 */ NULL,
/* 393 */ NULL,
/* 394 */ NULL,
/* 395 */ NULL,
#endif
/* 396 RPL_HOSTHIDDEN */ "%s :is now your displayed host",
/* 397 */ NULL,
/* 398 */ NULL,
/* 399 */ NULL,
/* 400 */ NULL, /* Used */
/* 401 ERR_NOSUCHNICK */ "%s :No such nick/channel",
/* 402 ERR_NOSUCHSERVER */ "%s :No such server",
/* 403 ERR_NOSUCHCHANNEL */ "%s :No such channel",
/* 404 ERR_CANNOTSENDTOCHAN */ "%s :%s (%s)",
/* 405 ERR_TOOMANYCHANNELS */ "%s :You have joined too many channels",
/* 406 ERR_WASNOSUCHNICK */ "%s :There was no such nickname",
/* 407 ERR_TOOMANYTARGETS */ "%s :Too many targets. The maximum is %d for %s.",
/* 408 */ NULL, /* rfc2812, bahamut */
/* 409 ERR_NOORIGIN */ ":No origin specified",
/* 410 ERR_INVALIDCAPCMD */ "%s :Invalid CAP subcommand",
/* 411 ERR_NORECIPIENT */ ":No recipient given (%s)",
/* 412 ERR_NOTEXTTOSEND */ ":No text to send",
/* 413 ERR_NOTOPLEVEL */ "%s :No toplevel domain specified",
/* 414 ERR_WILDTOPLEVEL */ "%s :Wildcard in toplevel Domain",
/* 415 */ NULL, /* rfc2812 */
/* 416 ERR_TOOMANYMATCHES */ "%s :%s",
/* 417 */ NULL,
/* 418 */ NULL,
/* 419 */ NULL, /* aircd */
/* 420 */ NULL,
/* 421 ERR_UNKNOWNCOMMAND */ "%s :Unknown command",
/* 422 ERR_NOMOTD */ ":MOTD File is missing",
/* 423 ERR_NOADMININFO */ "%s :No administrative info available",
/* 424 ERR_FILEERROR */ ":File error doing %s on %s",
/* 425 ERR_NOOPERMOTD */ ":OPERMOTD File is missing",
/* 426 */ NULL,
/* 427 */ NULL,
/* 428 */ NULL,
/* 429 ERR_TOOMANYAWAY */ ":Too Many aways - Flood Protection activated",
/* 430 */ NULL, /* austhex */
/* 431 ERR_NONICKNAMEGIVEN */ ":No nickname given",
/* 432 ERR_ERRONEUSNICKNAME */ "%s :Nickname is unavailable: %s",
/* 433 ERR_NICKNAMEINUSE */ "%s :Nickname is already in use.",
/* 434 ERR_NORULES */ ":RULES File is missing",
/* 435 */ NULL, /* bahamut */
/* 436 ERR_NICKCOLLISION */ "%s :Nickname collision KILL",
/* 437 ERR_BANNICKCHANGE */ "%s :Cannot change nickname while banned on channel",
/* 438 ERR_NCHANGETOOFAST */ "%s :Nick change too fast. Please wait %d seconds",
/* 439 ERR_TARGETTOOFAST */ "%s :Message target change too fast. Please wait %ld seconds",
/* 440 ERR_SERVICESDOWN */ "%s :Services are currently down. Please try again later.",
/* 441 ERR_USERNOTINCHANNEL */ "%s %s :They aren't on that channel",
/* 442 ERR_NOTONCHANNEL */ "%s :You're not on that channel",
/* 443 ERR_USERONCHANNEL */ "%s %s :is already on channel",
/* 444 ERR_NOLOGIN */ "%s :User not logged in",
/* 445 ERR_SUMMONDISABLED */ ":SUMMON has been disabled",
/* 446 ERR_USERSDISABLED */ ":USERS has been disabled",
/* 447 ERR_NONICKCHANGE */ ":Can not change nickname while on %s (+N)",
/* 448 ERR_FORBIDDENCHANNEL */ "%s :Cannot join channel: %s",
/* 449 */ NULL, /* ircu */
/* 450 */ NULL,
/* 451 ERR_NOTREGISTERED */ ":You have not registered",
/* 452 */ NULL, /* Used */
/* 453 */ NULL, /* Used */
/* 454 */ NULL,
/* 455 ERR_HOSTILENAME */ ":Your username %s contained the invalid "
"character(s) %s and has been changed to %s. "
"Please use only the characters 0-9 a-z A-Z _ - "
"or . in your username. Your username is the part "
"before the @ in your email address.",
/* 456 */ NULL, /* hybrid */
/* 457 */ NULL, /* hybrid */
/* 458 */ NULL, /* hybrid */
/* 459 ERR_NOHIDING */ "%s :Cannot join channel (+H)",
/* 460 ERR_NOTFORHALFOPS */ ":Halfops cannot set mode %c",
/* 461 ERR_NEEDMOREPARAMS */ "%s :Not enough parameters",
/* 462 ERR_ALREADYREGISTRED */ ":You may not reregister",
/* 463 ERR_NOPERMFORHOST */ ":Your host isn't among the privileged",
/* 464 ERR_PASSWDMISMATCH */ ":Password Incorrect",
/* 465 ERR_YOUREBANNEDCREEP */ ":%s",
/* 466 */ NULL, /* rfc1459 */
/* 467 ERR_KEYSET */ "%s :Channel key already set",
/* 468 ERR_ONLYSERVERSCANCHANGE */ "%s :Only servers can change that mode",
/* 469 ERR_LINKSET */ "%s :Channel link already set",
/* 470 ERR_LINKCHANNEL */ "[Link] %s has become full, so you are automatically being transferred to the linked channel %s",
/* 471 ERR_CHANNELISFULL */ "%s :Cannot join channel (+l)",
/* 472 ERR_UNKNOWNMODE */ "%c :is unknown mode char to me",
/* 473 ERR_INVITEONLYCHAN */ "%s :Cannot join channel (+i)",
/* 474 ERR_BANNEDFROMCHAN */ "%s :Cannot join channel (+b)",
/* 475 ERR_BADCHANNELKEY */ "%s :Cannot join channel (+k)",
/* 476 ERR_BADCHANMASK */ "%s :Bad Channel Mask",
/* 477 ERR_NEEDREGGEDNICK */ "%s :You need a registered nick to join that channel.",
/* 478 ERR_BANLISTFULL */ "%s %s :Channel ban/ignore list is full",
/* 479 ERR_LINKFAIL */ "%s :Sorry, the channel has an invalid channel link set.",
/* 480 ERR_CANNOTKNOCK */ ":Cannot knock on %s (%s)",
/* 481 ERR_NOPRIVILEGES */ ":Permission Denied- You do not have the correct IRC operator privileges",
/* 482 ERR_CHANOPRIVSNEEDED */ "%s :You're not channel operator",
/* 483 ERR_CANTKILLSERVER */ ":You cant kill a server!",
/* 484 ERR_ATTACKDENY */ "%s :Cannot kick protected user %s.",
/* 485 ERR_KILLDENY */ ":Cannot kill protected user %s.",
/* 486 ERR_NONONREG */ ":You must identify to a registered nick to private message %s",
/* 487 ERR_NOTFORUSERS */ ":%s is a server only command",
/* 488 */ NULL,
/* 489 ERR_SECUREONLYCHAN */ "%s :Cannot join channel (Secure connection is required)",
/* 490 ERR_NOSWEAR */ ":%s does not accept private messages containing swearing.",
/* 491 ERR_NOOPERHOST */ ":No O-lines for your host",
/* 492 ERR_NOCTCP */ ":%s does not accept CTCPs",
/* 493 */ NULL, /* ircu */
/* 494 */ NULL, /* ircu */
/* 495 */ NULL, /* ircu */
/* 496 */ NULL, /* ircu */
/* 497 */ NULL, /* ircu */
/* 498 */ NULL, /* ircu */
/* 499 ERR_CHANOWNPRIVNEEDED */ "%s :You're not a channel owner",
/* 500 ERR_TOOMANYJOINS */ "%s :Too many join requests. Please wait a while and try again.",
/* 501 ERR_UMODEUNKNOWNFLAG */ ":Unknown MODE flag",
/* 502 ERR_USERSDONTMATCH */ ":Cant change mode for other users",
/* 503 */ NULL, /* austhex */
/* 504 */ NULL, /* Used */
/* 505 */ NULL,
/* 506 */ NULL,
/* 507 */ NULL,
/* 508 */ NULL,
/* 509 */ NULL,
/* 510 */ NULL,
/* 511 ERR_SILELISTFULL */ "%s :Your silence list is full",
/* 512 ERR_TOOMANYWATCH */ "%s :Maximum size for WATCH-list is 128 entries",
/* 513 ERR_NEEDPONG */ ":To connect, type /QUOTE PONG %lX",
/* 514 ERR_TOOMANYDCC */ "%s :Your dcc allow list is full. Maximum size is %d entries",
/* 515 */ NULL, /* ircu */
/* 516 */ NULL, /* ircu */
/* 517 ERR_DISABLED*/ "%s :%s", /* ircu */
/* 518 518 */ ":Cannot invite (+V) at channel %s",
/* 519 519 */ ":Cannot join channel %s (Admin only)",
/* 520 520 */ ":Cannot join channel %s (IRCops only)",
/* 521 ERR_LISTSYNTAX */ ":Bad list syntax, type /quote list ? or /raw list ?",
/* 522 ERR_WHOSYNTAX */ ":/WHO Syntax incorrect, use /who ? for help",
/* 523 ERR_WHOLIMEXCEED */ ":Error, /who limit of %d exceeded. Please narrow your search down and try again",
/* 524 ERR_OPERSPVERIFY */ ":Trying to join +s or +p channel as an oper. Please invite yourself first.",
/* 525 */ NULL, /* draft-brocklesby-irc-usercmdpfx */
/* 526 */ NULL, /* draft-brocklesby-irc-usercmdpfx */
/* 527 */ NULL,
/* 528 */ NULL,
/* 529 */ NULL,
/* 530 */ NULL,
/* 531 ERR_CANTSENDTOUSER */ "%s :%s",
/* 532 */ NULL,
/* 533 */ NULL,
/* 534 */ NULL,
/* 535 */ NULL,
/* 536 */ NULL,
/* 537 */ NULL,
/* 538 */ NULL,
/* 539 */ NULL,
/* 540 */ NULL,
/* 541 */ NULL,
/* 542 */ NULL,
/* 543 */ NULL,
/* 544 */ NULL,
/* 545 */ NULL,
/* 546 */ NULL,
/* 547 */ NULL,
/* 548 */ NULL,
/* 549 */ NULL,
/* 550 */ NULL, /* quakenet */
/* 551 */ NULL, /* quakenet */
/* 552 */ NULL, /* quakenet */
/* 553 */ NULL, /* quakenet */
/* 554 */ NULL,
/* 555 */ NULL,
/* 556 */ NULL,
/* 557 */ NULL,
/* 558 */ NULL,
/* 559 */ NULL,
/* 560 */ NULL,
/* 561 */ NULL,
/* 562 */ NULL,
/* 563 */ NULL,
/* 564 */ NULL,
/* 565 */ NULL,
/* 566 */ NULL,
/* 567 */ NULL,
/* 568 */ NULL,
/* 569 */ NULL,
/* 570 */ NULL,
/* 571 */ NULL,
/* 572 */ NULL,
/* 573 */ NULL,
/* 574 */ NULL,
/* 575 */ NULL,
/* 576 */ NULL,
/* 577 */ NULL,
/* 578 */ NULL,
/* 579 */ NULL,
/* 580 */ NULL,
/* 581 */ NULL,
/* 582 */ NULL,
/* 583 */ NULL,
/* 584 */ NULL,
/* 585 */ NULL,
/* 586 */ NULL,
/* 587 */ NULL,
/* 588 */ NULL,
/* 589 */ NULL,
/* 590 */ NULL,
/* 591 */ NULL,
/* 592 */ NULL,
/* 593 */ NULL,
/* 594 */ NULL,
/* 595 */ NULL,
/* 596 */ NULL,
/* 597 RPL_REAWAY */ "%s %s %s %d :%s",
/* 598 RPL_GONEAWAY */ "%s %s %s %d :%s",
/* 599 RPL_NOTAWAY */ "%s %s %s %d :is no longer away",
/* 600 RPL_LOGON */ "%s %s %s %d :logged online",
/* 601 RPL_LOGOFF */ "%s %s %s %d :logged offline",
/* 602 RPL_WATCHOFF */ "%s %s %s %d :stopped watching",
/* 603 RPL_WATCHSTAT */ ":You have %d and are on %d WATCH entries",
/* 604 RPL_NOWON */ "%s %s %s %ld :is online",
/* 605 RPL_NOWOFF */ "%s %s %s %ld :is offline",
/* 606 RPL_WATCHLIST */ ":%s",
/* 607 RPL_ENDOFWATCHLIST */ ":End of WATCH %c",
/* 608 RPL_CLEARWATCH */ ":Your WATCH list is now empty",
/* 609 RPL_NOWISAWAY */ "%s %s %s %ld :is away",
/* 610 RPL_MAPMORE */ ":%s%-*s --> *more*",
/* 611 */ NULL, /* ultimate */
/* 612 */ NULL, /* ultimate */
/* 613 */ NULL, /* ultimate */
/* 614 */ NULL,
/* 615 */ NULL, /* ptlink, ultimate */
/* 616 */ NULL, /* ultimate */
/* 617 RPL_DCCSTATUS */ ":%s has been %s your DCC allow list",
/* 618 RPL_DCCLIST */ ":%s",
/* 619 RPL_ENDOFDCCLIST */ ":End of DCCALLOW %s",
/* 620 RPL_DCCINFO */ ":%s",
/* 621 */ NULL, /* ultimate */
/* 622 */ NULL, /* ultimate */
/* 623 */ NULL, /* ultimate */
/* 624 */ NULL, /* ultimate */
/* 625 */ NULL, /* ultimate */
/* 626 */ NULL, /* ultimate */
/* 627 */ NULL,
/* 628 */ NULL,
/* 629 */ NULL,
/* 630 */ NULL, /* ultimate */
/* 631 */ NULL, /* ultimate */
/* 632 */ NULL,
/* 633 */ NULL,
/* 634 */ NULL,
/* 635 */ NULL,
/* 636 */ NULL,
/* 637 */ NULL,
/* 638 */ NULL,
/* 639 */ NULL,
/* 640 */ NULL,
/* 641 */ NULL,
/* 642 */ NULL,
/* 643 */ NULL,
/* 644 */ NULL,
/* 645 */ NULL,
/* 646 */ NULL,
/* 647 */ NULL,
/* 648 */ NULL,
/* 649 */ NULL,
/* 650 */ NULL,
/* 651 */ NULL,
/* 652 */ NULL,
/* 653 */ NULL,
/* 654 */ NULL,
/* 655 */ NULL,
/* 656 */ NULL,
/* 657 */ NULL,
/* 658 */ NULL,
/* 659 RPL_SPAMCMDFWD */ "%s :Command processed, but a copy has been sent to ircops for evaluation (anti-spam) purposes. [%s]",
/* 660 */ NULL, /* kineircd */
/* 661 */ NULL, /* kineircd */
/* 662 */ NULL, /* kineircd */
/* 663 */ NULL, /* kineircd */
/* 664 */ NULL, /* kineircd */
/* 665 */ NULL, /* kineircd */
/* 666 */ NULL, /* kineircd */
/* 667 */ NULL,
/* 668 */ NULL,
/* 669 */ NULL,
/* 670 RPL_STARTTLS */ ":STARTTLS successful, go ahead with TLS handshake", /* kineircd */
/* 671 RPL_WHOISSECURE */ "%s :%s", /* our variation on the kineircd numeric */
/* 672 */ NULL, /* ithildin */
/* 673 */ NULL, /* ithildin */
/* 674 */ NULL,
/* 675 */ NULL,
/* 676 */ NULL,
/* 677 */ NULL,
/* 678 */ NULL, /* kineircd */
/* 679 */ NULL, /* kineircd */
/* 680 */ NULL,
/* 681 */ NULL,
/* 682 */ NULL, /* kineircd */
/* 683 */ NULL,
/* 684 */ NULL,
/* 685 */ NULL,
/* 686 */ NULL,
/* 687 */ NULL, /* kineircd */
/* 688 */ NULL, /* kineircd */
/* 689 */ NULL, /* kineircd */
/* 690 */ NULL, /* kineircd */
/* 691 ERR_STARTTLS */ ":%s",
/* 692 */ NULL,
/* 693 */ NULL,
/* 694 */ NULL,
/* 695 */ NULL,
/* 696 */ NULL,
/* 697 */ NULL,
/* 698 */ NULL,
/* 699 */ NULL,
/* 700 */ NULL,
/* 701 */ NULL,
/* 702 */ NULL,
/* 703 */ NULL,
/* 704 */ NULL,
/* 705 */ NULL,
/* 706 */ NULL,
/* 707 */ NULL,
/* 708 */ NULL,
/* 709 */ NULL,
/* 710 */ NULL,
/* 711 */ NULL,
/* 712 */ NULL,
/* 713 */ NULL,
/* 714 */ NULL,
/* 715 */ NULL,
/* 716 */ NULL, /* ratbox */
/* 717 */ NULL, /* ratbox */
/* 718 */ NULL, /* ratbox */
/* 719 */ NULL,
/* 720 */ NULL,
/* 721 */ NULL,
/* 722 */ NULL,
/* 723 */ NULL,
/* 724 */ NULL,
/* 725 */ NULL,
/* 726 */ NULL,
/* 727 */ NULL,
/* 728 */ NULL,
/* 729 */ NULL,
/* 730 */ NULL,
/* 731 */ NULL,
/* 732 */ NULL,
/* 733 */ NULL,
/* 734 */ NULL,
/* 735 */ NULL,
/* 736 */ NULL,
/* 737 */ NULL,
/* 738 */ NULL,
/* 739 */ NULL,
/* 740 */ NULL,
/* 741 */ NULL,
/* 742 ERR_MLOCKRESTRICTED */ "%s %c %s :MODE cannot be set due to channel having an active MLOCK restriction policy",
/* 743 */ NULL,
/* 744 */ NULL,
/* 745 */ NULL,
/* 746 */ NULL,
/* 747 */ NULL,
/* 748 */ NULL,
/* 749 */ NULL,
/* 750 */ NULL,
/* 751 */ NULL,
/* 752 */ NULL,
/* 753 */ NULL,
/* 754 */ NULL,
/* 755 */ NULL,
/* 756 */ NULL,
/* 757 */ NULL,
/* 758 */ NULL,
/* 759 */ NULL,
/* 760 */ NULL,
/* 761 */ NULL,
/* 762 */ NULL,
/* 763 */ NULL,
/* 764 */ NULL,
/* 765 */ NULL,
/* 766 */ NULL,
/* 767 */ NULL,
/* 768 */ NULL,
/* 769 */ NULL,
/* 770 */ NULL,
/* 771 */ NULL, /* ithildin */
/* 772 */ NULL,
/* 773 */ NULL, /* ithildin */
/* 774 */ NULL, /* ithildin */
/* 775 */ NULL,
/* 776 */ NULL,
/* 777 */ NULL,
/* 778 */ NULL,
/* 779 */ NULL,
/* 780 */ NULL,
/* 781 */ NULL,
/* 782 */ NULL,
/* 783 */ NULL,
/* 784 */ NULL,
/* 785 */ NULL,
/* 786 */ NULL,
/* 787 */ NULL,
/* 788 */ NULL,
/* 789 */ NULL,
/* 790 */ NULL,
/* 791 */ NULL,
/* 792 */ NULL,
/* 793 */ NULL,
/* 794 */ NULL,
/* 795 */ NULL,
/* 796 */ NULL,
/* 797 */ NULL,
/* 798 */ NULL,
/* 799 */ NULL,
/* 800 */ NULL,
/* 801 */ NULL,
/* 802 */ NULL,
/* 803 */ NULL,
/* 804 */ NULL,
/* 805 */ NULL,
/* 806 */ NULL,
/* 807 */ NULL,
/* 808 */ NULL,
/* 809 */ NULL,
/* 810 */ NULL,
/* 811 */ NULL,
/* 812 */ NULL,
/* 813 */ NULL,
/* 814 */ NULL,
/* 815 */ NULL,
/* 816 */ NULL,
/* 817 */ NULL,
/* 818 */ NULL,
/* 819 */ NULL,
/* 820 */ NULL,
/* 821 */ NULL,
/* 822 */ NULL,
/* 823 */ NULL,
/* 824 */ NULL,
/* 825 */ NULL,
/* 826 */ NULL,
/* 827 */ NULL,
/* 828 */ NULL,
/* 829 */ NULL,
/* 830 */ NULL,
/* 831 */ NULL,
/* 832 */ NULL,
/* 833 */ NULL,
/* 834 */ NULL,
/* 835 */ NULL,
/* 836 */ NULL,
/* 837 */ NULL,
/* 838 */ NULL,
/* 839 */ NULL,
/* 840 */ NULL,
/* 841 */ NULL,
/* 842 */ NULL,
/* 843 */ NULL,
/* 844 */ NULL,
/* 845 */ NULL,
/* 846 */ NULL,
/* 847 */ NULL,
/* 848 */ NULL,
/* 849 */ NULL,
/* 850 */ NULL,
/* 851 */ NULL,
/* 852 */ NULL,
/* 853 */ NULL,
/* 854 */ NULL,
/* 855 */ NULL,
/* 856 */ NULL,
/* 857 */ NULL,
/* 858 */ NULL,
/* 859 */ NULL,
/* 860 */ NULL,
/* 861 */ NULL,
/* 862 */ NULL,
/* 863 */ NULL,
/* 864 */ NULL,
/* 865 */ NULL,
/* 866 */ NULL,
/* 867 */ NULL,
/* 868 */ NULL,
/* 869 */ NULL,
/* 870 */ NULL,
/* 871 */ NULL,
/* 872 */ NULL,
/* 873 */ NULL,
/* 874 */ NULL,
/* 875 */ NULL,
/* 876 */ NULL,
/* 877 */ NULL,
/* 878 */ NULL,
/* 879 */ NULL,
/* 880 */ NULL,
/* 881 */ NULL,
/* 882 */ NULL,
/* 883 */ NULL,
/* 884 */ NULL,
/* 885 */ NULL,
/* 886 */ NULL,
/* 887 */ NULL,
/* 888 */ NULL,
/* 889 */ NULL,
/* 890 */ NULL,
/* 891 */ NULL,
/* 892 */ NULL,
/* 893 */ NULL,
/* 894 */ NULL,
/* 895 */ NULL,
/* 896 */ NULL,
/* 897 */ NULL,
/* 898 */ NULL,
/* 899 */ NULL,
/* 900 RPL_LOGGEDIN */ "%s!%s@%s %s :You are now logged in as %s.",
/* 901 RPL_LOGGEDOUT */ "%s!%s@%s :You are now logged out.",
/* 902 ERR_NICKLOCKED */ ":You must use a nick assigned to you.",
/* 903 RPL_SASLSUCCESS */ ":SASL authentication successful",
/* 904 ERR_SASLFAIL */ ":SASL authentication failed",
/* 905 ERR_SASLTOOLONG */ ":SASL message too long",
/* 906 ERR_SASLABORTED */ ":SASL authentication aborted",
/* 907 ERR_SASLALREADY */ ":You have already completed SASL authentication",
/* 908 RPL_SASLMECHS */ "%s :are available SASL mechanisms",
/* 909 */ NULL,
/* 910 */ NULL,
/* 911 */ NULL,
/* 912 */ NULL,
/* 913 */ NULL,
/* 914 */ NULL,
/* 915 */ NULL,
/* 916 */ NULL,
/* 917 */ NULL,
/* 918 */ NULL,
/* 919 */ NULL,
/* 920 */ NULL,
/* 921 */ NULL,
/* 922 */ NULL,
/* 923 */ NULL,
/* 924 */ NULL,
/* 925 */ NULL,
/* 926 */ NULL,
/* 927 */ NULL,
/* 928 */ NULL,
/* 929 */ NULL,
/* 930 */ NULL,
/* 931 */ NULL,
/* 932 */ NULL,
/* 933 */ NULL,
/* 934 */ NULL,
/* 935 */ NULL,
/* 936 */ NULL,
/* 937 */ NULL,
/* 938 */ NULL,
/* 939 */ NULL,
/* 940 */ NULL,
/* 941 */ NULL,
/* 942 */ NULL,
/* 943 */ NULL,
/* 944 */ NULL,
/* 945 */ NULL,
/* 946 */ NULL,
/* 947 */ NULL,
/* 948 */ NULL,
/* 949 */ NULL,
/* 950 */ NULL,
/* 951 */ NULL,
/* 952 */ NULL,
/* 953 */ NULL,
/* 954 */ NULL,
/* 955 */ NULL,
/* 956 */ NULL,
/* 957 */ NULL,
/* 958 */ NULL,
/* 959 */ NULL,
/* 960 */ NULL,
/* 961 */ NULL,
/* 962 */ NULL,
/* 963 */ NULL,
/* 964 */ NULL,
/* 965 */ NULL,
/* 966 */ NULL,
/* 967 */ NULL,
/* 968 */ NULL,
/* 969 */ NULL,
/* 970 */ NULL,
/* 971 */ NULL,
/* 972 ERR_CANNOTDOCOMMAND */ "%s :%s",
/* 973 */ NULL, /* kineircd */
/* 974 ERR_CANNOTCHANGECHANMODE */ "%c :%s",
/* 975 */ NULL, /* kineircd */
/* 976 */ NULL, /* kineircd */
/* 977 */ NULL, /* kineircd */
/* 978 */ NULL, /* kineircd */
/* 979 */ NULL, /* kineircd */
/* 980 */ NULL, /* kineircd */
/* 981 */ NULL, /* kineircd */
/* 982 */ NULL, /* kineircd */
/* 983 */ NULL, /* kineircd */
/* 984 */ NULL,
/* 985 */ NULL,
/* 986 */ NULL,
/* 987 */ NULL,
/* 988 */ NULL,
/* 989 */ NULL,
/* 990 */ NULL,
/* 991 */ NULL,
/* 992 */ NULL,
/* 993 */ NULL,
/* 994 */ NULL,
/* 995 */ NULL,
/* 996 */ NULL,
/* 997 */ NULL,
/* 998 */ NULL,
/* 999 ERR_NUMERICERR */ "Numeric error!",
/* 1000 */ NULL,
};
char *getreply(int numeric)
{
if ((numeric < 0) || (numeric > 999) || !replies[numeric])
return replies[ERR_NUMERICERR];
else
return replies[numeric];
}