hirc

[archived] IRC client
git clone https://hhvn.uk/hirc
git clone git://hhvn.uk/hirc
Log | Files | Refs

config.h (43404B)


      1 /*
      2  * src/data/config.h from hirc
      3  *
      4  * Copyright (c) 2021-2022 hhvn <dev@hhvn.uk>
      5  *
      6  * Permission to use, copy, modify, and distribute this software for any
      7  * purpose with or without fee is hereby granted, provided that the above
      8  * copyright notice and this permission notice appear in all copies.
      9  *
     10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     17  *
     18  */
     19 
     20 struct Config config[] = {
     21 	{"log.dir", 1, Val_string,
     22 		.str = "~/.local/hirc",
     23 		.strhandle = NULL,
     24 		.description = {
     25 		"Directory for hirc to log to.",
     26 		"Can contain ~ to refer to $HOME", NULL}},
     27 	{"log.toggle", 1, Val_bool,
     28 		.num = 1,
     29 		.numhandle = NULL,
     30 		.description = {
     31 		"Simple: to log, or not to log", NULL}},
     32 	{"def.nick", 1, Val_string,
     33 		.str = NULL,
     34 		.strhandle = NULL,
     35 		.description = {
     36 		"Default nickname", NULL}},
     37 	{"def.user", 1, Val_string,
     38 		.str = NULL,
     39 		.strhandle = NULL,
     40 		.description = {
     41 		"Default username (nick!..here..@host), ",
     42 		"may be replaced by identd response", NULL}},
     43 	{"def.real", 1, Val_string,
     44 		.str = NULL,
     45 		.strhandle = NULL,
     46 		.description = {
     47 		"Default \"realname\", seen in /whois", NULL}},
     48 	{"def.quitmessage", 1, Val_string,
     49 		.str = "quit",
     50 		.strhandle = NULL,
     51 		.description = {
     52 		"Message to send on /quit", NULL}},
     53 	{"def.partmessage", 1, Val_string,
     54 		.str = "part",
     55 		.strhandle = NULL,
     56 		.description = {
     57 		"Message to send on /part", NULL}},
     58 	{"def.killmessage", 1, Val_string,
     59 		.str = "no reason",
     60 		.strhandle = NULL,
     61 		.description = {
     62 		"Message to send on /kill", NULL}},
     63 	{"def.chantypes", 1, Val_string,
     64 		.str = "#&!+",
     65 		.strhandle = NULL,
     66 		.description = {
     67 		"You most likely don't want to touch this.",
     68 		"If a server does not supply this in RPL_ISUPPORT,",
     69 		"hirc assumes it will use these channel types.", NULL}},
     70 	{"def.prefixes", 1, Val_string,
     71 		.str = "(ov)@+",
     72 		.strhandle = NULL,
     73 		.description = {
     74 		"You most likely don't want to touch this.",
     75 		"If a server doesn't supply this in the nonstandard",
     76 		"RPL_ISUPPORT, it likely won't support nonstandard",
     77 		"prefixes.", NULL}},
     78 	{"def.modes", 1, Val_signed,
     79 		.num = 1,
     80 		.numhandle = NULL,
     81 		.description = {
     82 		"You most likely don't want to touch this.",
     83 		"If a server doesn't send MODES=... in RPL_ISUPPORT,",
     84 		"use this number instead.", NULL}},
     85 	{"reconnect.interval", 1, Val_nzunsigned,
     86 		.num = 10,
     87 		.numhandle = NULL,
     88 		.description = {
     89 		"Starting reconnect interval in seconds.",
     90 		"In reality, for each attempt this will be multipled",
     91 		"by the number of failed attemps until it reaches",
     92 		"reconnect.maxinterval", NULL}},
     93 	{"reconnect.maxinterval", 1, Val_nzunsigned,
     94 		.num = 600,
     95 		.numhandle = NULL,
     96 		.description = {
     97 		"Maximum reconnect interval in seconds.",
     98 		"See reconnect.interval", NULL}},
     99 	{"regex.extended", 1, Val_bool,
    100 		.num = 0,
    101 		.numhandle = NULL,
    102 		.description = {
    103 		"Use POSIX extended regex at all times.", NULL}},
    104 	{"regex.icase", 1, Val_bool,
    105 		.num = 0,
    106 		.numhandle = NULL,
    107 		.description = {
    108 		"Use case insensitive regex at all times.", NULL}},
    109 	{"nickcolour.self", 1, Val_colour,
    110 		.num = 90,
    111 		.numhandle = config_nickcolour_self,
    112 		.description = {
    113 		"Colour to use for onself.",
    114 		"Must be 0, 99 or anywhere between. 99 is no colours.", NULL}},
    115 	{"nickcolour.range", 1, Val_colourpair,
    116 		.pair = {28, 63},
    117 		.pairhandle = config_nickcolour_range,
    118 		.description = {
    119 		"Range of (mirc extended) colours used to colour nicks",
    120 		"Must be 0, 99 or anywhere between. 99 is no colour",
    121 		"Giving a single value or two identical values will",
    122 		"use that colour only", NULL}},
    123 	{"nicklist.hidden", 1, Val_bool,
    124 		.num = 0,
    125 		.numhandle = config_window_hide,
    126 		.description = {
    127 		"Hide nicklist from view.", NULL}},
    128 	{"nicklist.location", 1, Val_location,
    129 		.num = Location_right,
    130 		.numhandle = config_window_location,
    131 		.description = {
    132 		"Location of nicklist.",
    133 		"Accepted values: left, right.", NULL}},
    134 	{"nicklist.width", 1, Val_nzunsigned,
    135 		.num = 15,
    136 		.numhandle = config_window_width,
    137 		.description = {
    138 		"Number of columns nicklist will take up.", NULL}},
    139 	{"buflist.hidden", 1, Val_bool,
    140 		.num = 0,
    141 		.numhandle = config_window_hide,
    142 		.description = {
    143 		"Hide buflist from view.", NULL}},
    144 	{"buflist.location", 1, Val_location,
    145 		.num = Location_left,
    146 		.numhandle = config_window_location,
    147 		.description = {
    148 		"Location of buflist.",
    149 		"Accepted values: left, right.", NULL}},
    150 	{"buflist.width", 1, Val_nzunsigned,
    151 		.num = 25,
    152 		.numhandle = config_window_width,
    153 		.description = {
    154 		"Number of columns buflist will take up.", NULL}},
    155 	{"misc.topiccolour", 1, Val_colourpair,
    156 		.pair = {99, 89},
    157 		.pairhandle = NULL,
    158 		.description = {
    159 		"Foreground and background colour of topic bar in main window", NULL}},
    160 	{"misc.pingtime", 1, Val_nzunsigned,
    161 		.num = 200,
    162 		.numhandle = NULL,
    163 		.description = {
    164 		"Wait this many seconds since last received message",
    165 		"from server to send PING. If ping.wait seconds",
    166 		"elapses since sending a PING, hirc will consider",
    167 		"the server disconnected.", NULL}},
    168 	{"misc.bell", 1, Val_bool,
    169 		.num = 1,
    170 		.numhandle = config_redrawl,
    171 		.description = {
    172 		"Send an audible bell on highlights or messages.",
    173 		"Often triggers some other form of action in graphical environments.", NULL}},
    174 	{"motd.removedash", 1, Val_bool,
    175 		.num = 1,
    176 		.numhandle = config_redrawl,
    177 		.description = {
    178 		"Remove dash characters often prepended to RPL_MOTD replies.",
    179 		"This setting only affects messages recieved after it is set.", NULL}},
    180 	{"completion.hchar", 1, Val_string,
    181 		.str = ",",
    182 		.strhandle = NULL,
    183 		.description = {
    184 		"Character to place after hilightning a nick",
    185 		"(eg, \",\" -> \"hhvn, hi!\"", NULL}},
    186 	{"divider.toggle", 1, Val_bool,
    187 		.num = 1,
    188 		.numhandle = config_redrawl,
    189 		.description = {
    190 		"Turn divider on/off", NULL}},
    191 	{"divider.margin", 1, Val_nzunsigned,
    192 		.num = 15,
    193 		.numhandle = config_redrawl,
    194 		.description = {
    195 		"Number of columns on the left of the divider", NULL}},
    196 	{"divider.string", 1, Val_string,
    197 		.str = " ",
    198 		.strhandle = config_redraws,
    199 		.description = {
    200 		"String to be used as divider", NULL}},
    201 	{"rdate.short", 1, Val_bool,
    202 		.num = 0,
    203 		.numhandle = config_redrawl,
    204 		.description = {
    205 		"Show short units of time (eg, 1d 2h) vs",
    206 		"long (eg, 1 day 2 hours) units for %{rdate:...}"}},
    207 	{"rdate.averages", 1, Val_bool,
    208 		.num = 1,
    209 		.numhandle = config_redrawl,
    210 		.description = {
    211 		"Months and years are calculated with averages.",
    212 		"Disabling this setting will only use absolute units."}}, /* heh, not intentional */
    213 	{"rdate.verbose", 1, Val_bool,
    214 		.num = 0,
    215 		.numhandle = config_redrawl,
    216 		.description = {
    217 		"Show all units for %{rdate:...}"}},
    218 	{"timestamp.toggle", 1, Val_bool,
    219 		.num = 1,
    220 		.numhandle = config_redrawl,
    221 		.description = {
    222 		"Turn on/off timestamps", NULL}},
    223 	{"format.ui.timestamp", 1, Val_string,
    224 		.str = "%{c:92}%{time:%H:%M:%S,${time}}%{o} ",
    225 		.strhandle = config_formats,
    226 		.description = {
    227 		"Format of timestamps",
    228 		"Only shown if timestamp.toggle is on.",
    229 		"This format is special as it is included in others.", NULL}},
    230 	{"format.ui.topic", 1, Val_string,
    231 		.str = "%{c:99,89}${topic}",
    232 		.strhandle = config_formats,
    233 		.description = {
    234 		"Format of topic at top of main window", NULL}},
    235 	{"format.ui.error", 1, Val_string,
    236 		.str = "%{c:28}%{b}${4} %{b}(${3} at ${1}:${2})",
    237 		.strhandle = config_formats,
    238 		.description = {
    239 		"Format of SELF_ERROR messages", NULL}},
    240 	{"format.ui.misc", 1, Val_string,
    241 		.str = "${1}",
    242 		.strhandle = config_formats,
    243 		.description = {
    244 		"Format of SELF_UI messages", NULL}},
    245 	{"format.ui.connectlost", 1, Val_string,
    246 		.str = "Connection to ${1} (${2}:${3}) lost: ${4}",
    247 		.strhandle = config_formats,
    248 		.description = {
    249 		"Format of SELF_CONNECTLOST messages", NULL}},
    250 	{"format.ui.connecting", 1, Val_string,
    251 		.str = "Connecting to ${1}:${2}",
    252 		.strhandle = config_formats,
    253 		.description = {
    254 		"Format of SELF_CONNECTING messages", NULL}},
    255 	{"format.ui.connected", 1, Val_string,
    256 		.str = "Connection to ${1} established",
    257 		.strhandle = config_formats,
    258 		.description = {
    259 		"Format of SELF_CONNECTED messages", NULL}},
    260 	{"format.ui.lookupfail", 1, Val_string,
    261 		.str = "Failed to lookup ${2}: ${4}",
    262 		.strhandle = config_formats,
    263 		.description = {
    264 		"Format of SELF_LOOKUPFAIL messages", NULL}},
    265 	{"format.ui.connectfail", 1, Val_string,
    266 		.str = "Failed to connect to ${2}:${3}: ${4}",
    267 		.strhandle = config_formats,
    268 		.description = {
    269 		"Format of SELF_CONNECTFAIL messages", NULL}},
    270 #ifndef TLS
    271 	{"format.ui.tls.notcompiled", 1, Val_string,
    272 		.str = "TLS not compiled into hirc",
    273 		.strhandle = config_formats,
    274 		.description = {
    275 		"Format of SELF_TLSNOTCOMPILED messages", NULL}},
    276 #else
    277 	{"format.ui.tls.version", 1, Val_string,
    278 		.str = "Protocol: %{b}${2}%{b} (%{b}${3}%{b} bits, %{b}${4}%{b})",
    279 		.strhandle = config_formats,
    280 		.description = {
    281 		"TLS version and crypto information.", NULL}},
    282 	{"format.ui.tls.sni", 1, Val_string,
    283 		.str = "SNI name: %{b}${2}%{b}",
    284 		.strhandle = config_formats,
    285 		.description = {
    286 		"TLS server name indication.", NULL}},
    287 	{"format.ui.tls.issuer", 1, Val_string,
    288 		.str = "Cert issuer: %{b}${2}%{b}",
    289 		.strhandle = config_formats,
    290 		.description = {
    291 		"TLS certificate issuer.", NULL}},
    292 	{"format.ui.tls.subject", 1, Val_string,
    293 		.str = "Cert subject: %{b}${2}%{b}",
    294 		.strhandle = config_formats,
    295 		.description = {
    296 		"TLS certificate subject.", NULL}},
    297 #endif /* TLS */
    298 	{"format.ui.keybind", 1, Val_string,
    299 		.str = " ${1}: ${2}",
    300 		.strhandle = config_formats,
    301 		.description = {
    302 		"Format of /bind output", NULL}},
    303 	{"format.ui.keybind.start", 1, Val_string,
    304 		.str = "Keybindings:",
    305 		.strhandle = config_formats,
    306 		.description = {
    307 		"Format of header of /bind output", NULL}},
    308 	{"format.ui.keybind.end", 1, Val_string,
    309 		.str = "",
    310 		.strhandle = config_formats,
    311 		.description = {
    312 		"Format of footer of /bind output", NULL}},
    313 	{"format.ui.autocmds", 1, Val_string,
    314 		.str = " ${2}",
    315 		.strhandle = config_formats,
    316 		.description = {
    317 		"Format of /server -auto output", NULL}},
    318 	{"format.ui.autocmds.start", 1, Val_string,
    319 		.str = "Autocmds for ${1}:",
    320 		.strhandle = config_formats,
    321 		.description = {
    322 		"Format of header of /server -auto output", NULL}},
    323 	{"format.ui.autocmds.end", 1, Val_string,
    324 		.str = "",
    325 		.strhandle = config_formats,
    326 		.description = {
    327 		"Format of footer of /server -auto output", NULL}},
    328 	{"format.ui.logrestore", 1, Val_string,
    329 		.str = "%{c:93}---%{=}%{c:93}Restored log up until %{b}%{time:%c,${1}}%{b} ---",
    330 		.strhandle = config_formats,
    331 		.description = {
    332 		"Format of log restore footer.", NULL}},
    333 	{"format.ui.unread", 1, Val_string,
    334 		.str = "%{c:93}---%{=}%{c:93}%{b}${1}%{b} unread (%{b}${2}%{b} ignored) ---",
    335 		.strhandle = config_formats,
    336 		.description = {
    337 		"Format of unread message indicator.", NULL}},
    338 	{"format.ui.newday", 1, Val_string,
    339 		.str = "%{c:93}---%{=}%{c:93}%{b}%{time:%A %d %B %Y,${1}}%{b} ---",
    340 		.strhandle = config_formats,
    341 		.description = {
    342 		"Format of indicator placed between messages on different days.", NULL}},
    343 	{"format.ui.ignores.start", 1, Val_string,
    344 		.str = "Ignoring:",
    345 		.strhandle = config_formats,
    346 		.description = {
    347 		"Format of ignore list header.", NULL}},
    348 	{"format.ui.ignores", 1, Val_string,
    349 		.str = " %{pad:-3,${1}} (server: ${2}, noact: ${3}, format: ${4}, regex: ${5}) ${6}",
    350 		.strhandle = config_formats,
    351 		.description = {
    352 		"Format of ignore list messages.", NULL}},
    353 	{"format.ui.ignores.end", 1, Val_string,
    354 		.str = "",
    355 		.strhandle = config_formats,
    356 		.description = {
    357 		"Format of ignore list footer.", NULL}},
    358 	{"format.ui.ignores.added", 1, Val_string,
    359 		.str = "Ignore added: ${5} (server: ${1}, noact: ${2}, format: ${3}, regex: ${4})",
    360 		.strhandle = config_formats,
    361 		.description = {
    362 		"Format of new ignores.", NULL}},
    363 	{"format.ui.grep.start", 1, Val_string,
    364 		.str = "%{b}%{c:94}Results of ${1}:",
    365 		.strhandle = config_formats,
    366 		.description = {
    367 		"Format of start of /grep output", NULL}},
    368 	{"format.ui.grep.end", 1, Val_string,
    369 		.str = "",
    370 		.strhandle = config_formats,
    371 		.description = {
    372 		"Format of end of /grep output", NULL}},
    373 	{"format.ui.alias", 1, Val_string,
    374 		.str = " ${1}: ${2}",
    375 		.strhandle = config_formats,
    376 		.description = {
    377 		"Format of /alias output", NULL}},
    378 	{"format.ui.alias.start", 1, Val_string,
    379 		.str = "Aliases:",
    380 		.strhandle = config_formats,
    381 		.description = {
    382 		"Format of header of /alias output", NULL}},
    383 	{"format.ui.alias.end", 1, Val_string,
    384 		.str = "",
    385 		.strhandle = config_formats,
    386 		.description = {
    387 		"Format of footer of /alias output", NULL}},
    388 	{"format.ui.help", 1, Val_string,
    389 		.str = " ${1}",
    390 		.strhandle = config_formats,
    391 		.description = {
    392 		"Format of /alias output", NULL}},
    393 	{"format.ui.help.start", 1, Val_string,
    394 		.str = "${1} help:",
    395 		.strhandle = config_formats,
    396 		.description = {
    397 		"Format of header of /alias output", NULL}},
    398 	{"format.ui.help.end", 1, Val_string,
    399 		.str = "",
    400 		.strhandle = config_formats,
    401 		.description = {
    402 		"Format of footer of /alias output", NULL}},
    403 	{"format.ui.buflist.old", 1, Val_string,
    404 		.str = "%{c:91}",
    405 		.strhandle = config_formats,
    406 		.description = {
    407 		"Indicator for disconnected servers or parted channels", NULL}},
    408 	{"format.ui.buflist.activity.none", 1, Val_string,
    409 		.str = "",
    410 		.strhandle = config_formats,
    411 		.description = {
    412 		"Indicator for buffer with activity of level `none`", NULL}},
    413 	{"format.ui.buflist.activity.status", 1, Val_string,
    414 		.str = "%{c:95}",
    415 		.strhandle = config_formats,
    416 		.description = {
    417 		"Indicator for buffer with activity of level `status`", NULL}},
    418 	{"format.ui.buflist.activity.error", 1, Val_string,
    419 		.str = "%{c:28}",
    420 		.strhandle = config_formats,
    421 		.description = {
    422 		"Indicator for buffer with activity of level `error`", NULL}},
    423 	{"format.ui.buflist.activity.message", 1, Val_string,
    424 		.str = "%{c:45}",
    425 		.strhandle = config_formats,
    426 		.description = {
    427 		"Indicator for buffer with activity of level `message`", NULL}},
    428 	{"format.ui.buflist.activity.hilight", 1, Val_string,
    429 		.str = "%{c:45}%{r}",
    430 		.strhandle = config_formats,
    431 		.description = {
    432 		"Indicator for buffer with activity of level `hilight`", NULL}},
    433 	{"format.ui.buflist.more", 1, Val_string,
    434 		.str = "%{c:92}...",
    435 		.strhandle = config_formats,
    436 		.description = {
    437 		"Shown if there are more nicks that must be scrolled to see.", NULL}},
    438 	{"format.ui.nicklist.more", 1, Val_string,
    439 		.str = "%{c:92}...",
    440 		.strhandle = config_formats,
    441 		.description = {
    442 		"Shown if there are more nicks that must be scrolled to see.", NULL}},
    443 	{"format.ui.separator.vertical", 1, Val_string,
    444 		.str = "│",
    445 		.strhandle = config_formats,
    446 		.description = {
    447 		"Used for vertical line seperating windows", NULL}},
    448 	{"format.ui.separator.split.left", 1, Val_string,
    449 		.str = "├",
    450 		.strhandle = config_formats,
    451 		.description = {
    452 		"Joins left vertical separator to input seperator", NULL}},
    453 	{"format.ui.separator.split.right", 1, Val_string,
    454 		.str = "┤",
    455 		.strhandle = config_formats,
    456 		.description = {
    457 		"Joins right vertical separator to input seperator", NULL}},
    458 	{"format.ui.separator.horizontal", 1, Val_string,
    459 		.str = "─",
    460 		.strhandle = config_formats,
    461 		.description = {
    462 		"Used for horizontal line separating input and main window", NULL}},
    463 	{"format.privmsg", 1, Val_string,
    464 		.str = "%{nick:${nick}}${priv}${nick}%{o}%{=}${2}",
    465 		.strhandle = config_formats,
    466 		.description = {
    467 		"Format of messages", NULL}},
    468 	{"format.action", 1, Val_string,
    469 		.str = "%{nick:${nick}}*%{b}${nick}%{b}%{=}${2}",
    470 		.strhandle = config_formats,
    471 		.description = {
    472 		"Format of actions", NULL}},
    473 	{"format.ctcp.request", 1, Val_string,
    474 		.str = "%{nick:${nick}}${nick}%{o} %{c:94}%{b}q%{o}%{=}${2}",
    475 		.strhandle = config_formats,
    476 		.description = {
    477 		"Format of CTCP requests", NULL}},
    478 	{"format.ctcp.answer", 1, Val_string,
    479 		.str = "%{nick:${nick}}${nick}%{o} %{c:94}%{b}a%{o}%{=}${2}",
    480 		.strhandle = config_formats,
    481 		.description = {
    482 		"Format of CTCP answers", NULL}},
    483 	{"format.notice", 1, Val_string,
    484 		.str = "%{nick:${nick}}-${priv}${nick}-%{o}%{=}${2}",
    485 		.strhandle = config_formats,
    486 		.description = {
    487 		"Format of notices", NULL}},
    488 	{"format.nick",	1, Val_string,
    489 		.str = "%{nick:${nick}}${nick}%{o}%{=}is now known as %{nick:${1}}${1}",
    490 		.strhandle = config_formats,
    491 		.description = {
    492 		"Format of NICK messages", NULL}},
    493 	{"format.join", 1, Val_string,
    494 		.str = "%{b}%{c:44}+%{o}%{=}%{nick:${nick}}${nick}%{o} (${ident}@${host})",
    495 		.strhandle = config_formats,
    496 		.description = {
    497 		"Format of JOIN messages", NULL}},
    498 	{"format.quit", 1, Val_string,
    499 		.str = "%{b}%{c:40}<%{o}%{=}%{nick:${nick}}${nick}%{o} (${ident}@${host}): ${1}",
    500 		.strhandle = config_formats,
    501 		.description = {
    502 		"Format of QUIT messages", NULL}},
    503 	{"format.part", 1, Val_string,
    504 		.str = "%{b}%{c:40}-%{o}%{=}%{nick:${nick}}${nick}%{o} (${ident}@${host}): ${2}",
    505 		.strhandle = config_formats,
    506 		.description = {
    507 		"Format of PART messages", NULL}},
    508 	{"format.kick", 1, Val_string,
    509 		.str = "%{b}%{c:40}!%{o}%{=}%{nick:${2}}${2}${o} by %{nick:${nick}}${nick}%{o} (${ident}@${host}): ${3}",
    510 		.strhandle = config_formats,
    511 		.description = {
    512 		"Format of PART messages", NULL}},
    513 	{"format.mode.nick.self", 1, Val_string,
    514 		.str = "${1} set %{c:94}${2-}%{o}",
    515 		.strhandle = config_formats,
    516 		.description = {
    517 		"Format of modes being set on self by server/self", NULL}},
    518 	{"format.mode.nick", 1, Val_string,
    519 		.str = "${1} set %{c:94}${2-}%{o} by ${nick} (${ident}@${host})",
    520 		.strhandle = config_formats,
    521 		.description = {
    522 		"Format of modes being on nicks", NULL}},
    523 	{"format.mode.channel", 1, Val_string,
    524 		.str = "mode%{=}%{c:94}${2-}%{o} by %{nick:${nick}}${nick}",
    525 		.strhandle = config_formats,
    526 		.description = {
    527 		"Format of modes being set on channels", NULL}},
    528 	{"format.topic", 1, Val_string,
    529 		.str = "topic%{=}${2}\\nset by %{nick:${nick}}${nick}%{o} now",
    530 		.strhandle = config_formats,
    531 		.description = {
    532 		"Format of topic being set", NULL}},
    533 	{"format.invite", 1, Val_string,
    534 		.str = "%{nick:${nick}}${nick}%{o} invited you to ${2}",
    535 		.strhandle = config_formats,
    536 		.description = {
    537 		"Format of an invitation being received.", NULL}},
    538 	{"format.pong", 1, Val_string,
    539 		.str = "PONG from %{nick:${nick}}${nick}%{o}: ${2}",
    540 		.strhandle = config_formats,
    541 		.description = {
    542 		"Format of replies to /ping", NULL}},
    543 	{"format.error", 1, Val_string,
    544 		.str = "%{c:28}ERROR:%{o} ${1}",
    545 		.strhandle = config_formats,
    546 		.description = {
    547 		"Format of generic ERROR messages.",
    548 		"Most commonly seen when being /kill'd.", NULL}},
    549 	/* Generic numerics (bit boring) */
    550 	{"format.rpl.welcome", 1, Val_string,
    551 		.str = "${2-}",
    552 		.strhandle = config_formats,
    553 		.description = {
    554 		"Format of RPL_WELCOME (001) numeric", NULL}},
    555 	{"format.rpl.yourhost", 1, Val_string,
    556 		.str = "${2-}",
    557 		.strhandle = config_formats,
    558 		.description = {
    559 		"Format of RPL_YOURHOST (002) numeric", NULL}},
    560 	{"format.rpl.created", 1, Val_string,
    561 		.str = "${2-}",
    562 		.strhandle = config_formats,
    563 		.description = {
    564 		"Format of RPL_CREATED (003) numeric", NULL}},
    565 	{"format.rpl.myinfo", 1, Val_string,
    566 		.str = "${2-}",
    567 		.strhandle = config_formats,
    568 		.description = {
    569 		"Format of RPL_MYINFO (004) numeric", NULL}},
    570 	{"format.rpl.isupport", 1, Val_string,
    571 		.str = "${2-}",
    572 		.strhandle = config_formats,
    573 		.description = {
    574 		"Format of RPL_MYSUPPORT (005) numeric", NULL}},
    575 	{"format.rpl.map", 1, Val_string,
    576 		.str = "${2-}",
    577 		.strhandle = config_formats,
    578 		.description = {
    579 		"Format of RPL_MAP (006) numeric", NULL}},
    580 	{"format.rpl.mapend", 1, Val_string,
    581 		.str = "",
    582 		.strhandle = config_formats,
    583 		.description = {
    584 		"Format of RPL_MAPEND (007) numeric", NULL}},
    585 	/* START: misc/rpl-conf-gen.awk */
    586 	{"format.rpl.tracelink", 1, Val_string,
    587 		.str = "${2-}",
    588 		.strhandle = config_formats,
    589 		.description = {
    590 		"Format of RPL_TRACELINK (200) numeric", NULL}},
    591 	{"format.rpl.traceconnecting", 1, Val_string,
    592 		.str = "${2-}",
    593 		.strhandle = config_formats,
    594 		.description = {
    595 		"Format of RPL_TRACECONNECTING (201) numeric", NULL}},
    596 	{"format.rpl.tracehandshake", 1, Val_string,
    597 		.str = "${2-}",
    598 		.strhandle = config_formats,
    599 		.description = {
    600 		"Format of RPL_TRACEHANDSHAKE (202) numeric", NULL}},
    601 	{"format.rpl.traceunknown", 1, Val_string,
    602 		.str = "${2-}",
    603 		.strhandle = config_formats,
    604 		.description = {
    605 		"Format of RPL_TRACEUNKNOWN (203) numeric", NULL}},
    606 	{"format.rpl.traceoperator", 1, Val_string,
    607 		.str = "${2-}",
    608 		.strhandle = config_formats,
    609 		.description = {
    610 		"Format of RPL_TRACEOPERATOR (204) numeric", NULL}},
    611 	{"format.rpl.traceuser", 1, Val_string,
    612 		.str = "${2-}",
    613 		.strhandle = config_formats,
    614 		.description = {
    615 		"Format of RPL_TRACEUSER (205) numeric", NULL}},
    616 	{"format.rpl.traceserver", 1, Val_string,
    617 		.str = "${2-}",
    618 		.strhandle = config_formats,
    619 		.description = {
    620 		"Format of RPL_TRACESERVER (206) numeric", NULL}},
    621 	{"format.rpl.tracenewtype", 1, Val_string,
    622 		.str = "${2-}",
    623 		.strhandle = config_formats,
    624 		.description = {
    625 		"Format of RPL_TRACENEWTYPE (208) numeric", NULL}},
    626 	{"format.rpl.traceclass", 1, Val_string,
    627 		.str = "${2-}",
    628 		.strhandle = config_formats,
    629 		.description = {
    630 		"Format of RPL_TRACECLASS (209) numeric", NULL}},
    631 	{"format.rpl.statslinkinfo", 1, Val_string,
    632 		.str = "${2-}",
    633 		.strhandle = config_formats,
    634 		.description = {
    635 		"Format of RPL_STATSLINKINFO (211) numeric", NULL}},
    636 	{"format.rpl.statscommands", 1, Val_string,
    637 		.str = "${2-}",
    638 		.strhandle = config_formats,
    639 		.description = {
    640 		"Format of RPL_STATSCOMMANDS (212) numeric", NULL}},
    641 	{"format.rpl.statscline", 1, Val_string,
    642 		.str = "${2-}",
    643 		.strhandle = config_formats,
    644 		.description = {
    645 		"Format of RPL_STATSCLINE (213) numeric", NULL}},
    646 	{"format.rpl.statsnline", 1, Val_string,
    647 		.str = "${2-}",
    648 		.strhandle = config_formats,
    649 		.description = {
    650 		"Format of RPL_STATSNLINE (214) numeric", NULL}},
    651 	{"format.rpl.statsiline", 1, Val_string,
    652 		.str = "${2-}",
    653 		.strhandle = config_formats,
    654 		.description = {
    655 		"Format of RPL_STATSILINE (215) numeric", NULL}},
    656 	{"format.rpl.statskline", 1, Val_string,
    657 		.str = "${2-}",
    658 		.strhandle = config_formats,
    659 		.description = {
    660 		"Format of RPL_STATSKLINE (216) numeric", NULL}},
    661 	{"format.rpl.statsyline", 1, Val_string,
    662 		.str = "${2-}",
    663 		.strhandle = config_formats,
    664 		.description = {
    665 		"Format of RPL_STATSYLINE (218) numeric", NULL}},
    666 	{"format.rpl.endofstats", 1, Val_string,
    667 		.str = "${2-}",
    668 		.strhandle = config_formats,
    669 		.description = {
    670 		"Format of RPL_ENDOFSTATS (219) numeric", NULL}},
    671 	{"format.rpl.umodeis", 1, Val_string,
    672 		.str = "${2-}",
    673 		.strhandle = config_formats,
    674 		.description = {
    675 		"Format of RPL_UMODEIS (221) numeric", NULL}},
    676 	{"format.rpl.serviceinfo", 1, Val_string,
    677 		.str = "${2-}",
    678 		.strhandle = config_formats,
    679 		.description = {
    680 		"Format of RPL_SERVICEINFO (231) numeric", NULL}},
    681 	{"format.rpl.service", 1, Val_string,
    682 		.str = "${2-}",
    683 		.strhandle = config_formats,
    684 		.description = {
    685 		"Format of RPL_SERVICE (233) numeric", NULL}},
    686 	{"format.rpl.servlistend", 1, Val_string,
    687 		.str = "${2-}",
    688 		.strhandle = config_formats,
    689 		.description = {
    690 		"Format of RPL_SERVLISTEND (235) numeric", NULL}},
    691 	{"format.rpl.statslline", 1, Val_string,
    692 		.str = "${2-}",
    693 		.strhandle = config_formats,
    694 		.description = {
    695 		"Format of RPL_STATSLLINE (241) numeric", NULL}},
    696 	{"format.rpl.statsuptime", 1, Val_string,
    697 		.str = "${2-}",
    698 		.strhandle = config_formats,
    699 		.description = {
    700 		"Format of RPL_STATSUPTIME (242) numeric", NULL}},
    701 	{"format.rpl.statsoline", 1, Val_string,
    702 		.str = "${2-}",
    703 		.strhandle = config_formats,
    704 		.description = {
    705 		"Format of RPL_STATSOLINE (243) numeric", NULL}},
    706 	{"format.rpl.statshline", 1, Val_string,
    707 		.str = "${2-}",
    708 		.strhandle = config_formats,
    709 		.description = {
    710 		"Format of RPL_STATSHLINE (244) numeric", NULL}},
    711 	{"format.rpl.luserclient", 1, Val_string,
    712 		.str = "${2-}",
    713 		.strhandle = config_formats,
    714 		.description = {
    715 		"Format of RPL_LUSERCLIENT (251) numeric", NULL}},
    716 	{"format.rpl.luserop", 1, Val_string,
    717 		.str = "There are ${2} opers online",
    718 		.strhandle = config_formats,
    719 		.description = {
    720 		"Format of RPL_LUSEROP (252) numeric", NULL}},
    721 	{"format.rpl.luserunknown", 1, Val_string,
    722 		.str = "There are ${2} unknown connections",
    723 		.strhandle = config_formats,
    724 		.description = {
    725 		"Format of RPL_LUSERUNKNOWN (253) numeric", NULL}},
    726 	{"format.rpl.luserchannels", 1, Val_string,
    727 		.str = "There are ${2} channels formed",
    728 		.strhandle = config_formats,
    729 		.description = {
    730 		"Format of RPL_LUSERCHANNELS (254) numeric", NULL}},
    731 	{"format.rpl.luserme", 1, Val_string,
    732 		.str = "There are %{split:3, ,${2}} clients and %{split:6, ,${2}} servers connected to this server",
    733 		.strhandle = config_formats,
    734 		.description = {
    735 		"Format of RPL_LUSERME (255) numeric", NULL}},
    736 	{"format.rpl.adminme", 1, Val_string,
    737 		.str = "${2-}",
    738 		.strhandle = config_formats,
    739 		.description = {
    740 		"Format of RPL_ADMINME (256) numeric", NULL}},
    741 	{"format.rpl.adminloc1", 1, Val_string,
    742 		.str = "${2-}",
    743 		.strhandle = config_formats,
    744 		.description = {
    745 		"Format of RPL_ADMINLOC1 (257) numeric", NULL}},
    746 	{"format.rpl.adminloc2", 1, Val_string,
    747 		.str = "${2-}",
    748 		.strhandle = config_formats,
    749 		.description = {
    750 		"Format of RPL_ADMINLOC2 (258) numeric", NULL}},
    751 	{"format.rpl.adminemail", 1, Val_string,
    752 		.str = "${2-}",
    753 		.strhandle = config_formats,
    754 		.description = {
    755 		"Format of RPL_ADMINEMAIL (259) numeric", NULL}},
    756 	{"format.rpl.tracelog", 1, Val_string,
    757 		.str = "${2-}",
    758 		.strhandle = config_formats,
    759 		.description = {
    760 		"Format of RPL_TRACELOG (261) numeric", NULL}},
    761 	{"format.rpl.none", 1, Val_string,
    762 		.str = "${2-}",
    763 		.strhandle = config_formats,
    764 		.description = {
    765 		"Format of RPL_NONE (300) numeric", NULL}},
    766 	{"format.rpl.away", 1, Val_string,
    767 		.str = "away%{=}%{nick:${2}}${2}%{o}: ${3}",
    768 		.strhandle = config_formats,
    769 		.description = {
    770 		"Format of RPL_AWAY (301) numeric", NULL}},
    771 	{"format.rpl.userhost", 1, Val_string,
    772 		.str = "${2-}",
    773 		.strhandle = config_formats,
    774 		.description = {
    775 		"Format of RPL_USERHOST (302) numeric", NULL}},
    776 	{"format.rpl.ison", 1, Val_string,
    777 		.str = "${2-}",
    778 		.strhandle = config_formats,
    779 		.description = {
    780 		"Format of RPL_ISON (303) numeric", NULL}},
    781 	{"format.rpl.unaway", 1, Val_string,
    782 		.str = "%{c:40}<--%{o}%{=}No longer %{b}away%{b}",
    783 		.strhandle = config_formats,
    784 		.description = {
    785 		"Format of RPL_UNAWAY (305) numeric", NULL}},
    786 	{"format.rpl.nowaway", 1, Val_string,
    787 		.str = "%{c:32}-->%{o}%{=}Set %{b}away%{b}",
    788 		.strhandle = config_formats,
    789 		.description = {
    790 		"Format of RPL_NOWAWAY (306) numeric", NULL}},
    791 	{"format.rpl.whoisuser", 1, Val_string,
    792 		.str = "%{b}${2}!${3}@${4}%{b} (${6}):",
    793 		.strhandle = config_formats,
    794 		.description = {
    795 		"Format of RPL_WHOISUSER (311) numeric", NULL}},
    796 	{"format.rpl.whoisserver", 1, Val_string,
    797 		.str = " %{b}server  %{b}: ${3} (${4})",
    798 		.strhandle = config_formats,
    799 		.description = {
    800 		"Format of RPL_WHOISSERVER (312) numeric", NULL}},
    801 	{"format.rpl.whoisoperator", 1, Val_string,
    802 		.str = " %{b}oper    %{b}: ${3}",
    803 		.strhandle = config_formats,
    804 		.description = {
    805 		"Format of RPL_WHOISOPERATOR (313) numeric", NULL}},
    806 	{"format.rpl.whowasuser", 1, Val_string,
    807 		.str = "%{b}${2}!${3}@${4}%{b} (${6}) was on:",
    808 		.strhandle = config_formats,
    809 		.description = {
    810 		"Format of RPL_WHOWASUSER (314) numeric", NULL}},
    811 	{"format.rpl.endofwho", 1, Val_string,
    812 		.str = "End of WHO results for ${2}",
    813 		.strhandle = config_formats,
    814 		.description = {
    815 		"Format of RPL_ENDOFWHO (315) numeric", NULL}},
    816 	{"format.rpl.whoisidle", 1, Val_string,
    817 		.str = " %{b}signon  %{b}: %{time:%c,${4}}, idle: %{rdate:${3}}",
    818 		.strhandle = config_formats,
    819 		.description = {
    820 		"Format of RPL_WHOISIDLE (317) numeric", NULL}},
    821 	{"format.rpl.endofwhois", 1, Val_string,
    822 		.str = "",
    823 		.strhandle = config_formats,
    824 		.description = {
    825 		"Format of RPL_ENDOFWHOIS (318) numeric", NULL}},
    826 	{"format.rpl.whoischannels", 1, Val_string,
    827 		.str = " %{b}channels%{b}: ${3}",
    828 		.strhandle = config_formats,
    829 		.description = {
    830 		"Format of RPL_WHOISCHANNELS (319) numeric", NULL}},
    831 	{"format.rpl.liststart", 1, Val_string,
    832 		.str = "%{pad:-15,Channel} %{pad:-5,Nicks} Topic",
    833 		.strhandle = config_formats,
    834 		.description = {
    835 		"Format of RPL_LISTSTART (321) numeric", NULL}},
    836 	{"format.rpl.list", 1, Val_string,
    837 		.str = "%{pad:-15,${2}} %{pad:-5,${3}} ${4}",
    838 		.strhandle = config_formats,
    839 		.description = {
    840 		"Format of RPL_LIST (322) numeric", NULL}},
    841 	{"format.rpl.listend", 1, Val_string,
    842 		.str = "",
    843 		.strhandle = config_formats,
    844 		.description = {
    845 		"Format of RPL_LISTEND (323) numeric", NULL}},
    846 	{"format.rpl.channelmodeis", 1, Val_string,
    847 		.str = "mode%{=}%{c:94}${3-}%{o}",
    848 		.strhandle = config_formats,
    849 		.description = {
    850 		"Format of RPL_CHANNELMODEIS (324) numeric", NULL}},
    851 	{"format.rpl.notopic", 1, Val_string,
    852 		.str = "topic%{=}no topic set",
    853 		.strhandle = config_formats,
    854 		.description = {
    855 		"Format of RPL_NOTOPIC (331) numeric", NULL}},
    856 	{"format.rpl.topic", 1, Val_string,
    857 		.str = "topic%{=}${3}",
    858 		.strhandle = config_formats,
    859 		.description = {
    860 		"Format of RPL_TOPIC (332) numeric", NULL}},
    861 	{"format.rpl.inviting", 1, Val_string,
    862 		.str = "invite%{=}${2}",
    863 		.strhandle = config_formats,
    864 		.description = {
    865 		"Format of RPL_INVITING (341) numeric", NULL}},
    866 	{"format.rpl.summoning", 1, Val_string,
    867 		.str = "${2-}",
    868 		.strhandle = config_formats,
    869 		.description = {
    870 		"Format of RPL_SUMMONING (342) numeric", NULL}},
    871 	{"format.rpl.version", 1, Val_string,
    872 		.str = "${2-}",
    873 		.strhandle = config_formats,
    874 		.description = {
    875 		"Format of RPL_VERSION (351) numeric", NULL}},
    876 	{"format.rpl.whoreply", 1, Val_string,
    877 		.str = "%{b}${6}!${3}@${4}%{b} (%{split:2, ,${8}}): ${7} %{split:1, ,${8}}",
    878 		.strhandle = config_formats,
    879 		.description = {
    880 		"Format of RPL_WHOREPLY (352) numeric", NULL}},
    881 	{"format.rpl.namreply", 1, Val_string,
    882 		.str = "names%{=}${4-}",
    883 		.strhandle = config_formats,
    884 		.description = {
    885 		"Format of RPL_NAMREPLY (353) numeric", NULL}},
    886 	{"format.rpl.closing", 1, Val_string,
    887 		.str = "${2-}",
    888 		.strhandle = config_formats,
    889 		.description = {
    890 		"Format of RPL_CLOSING (362) numeric", NULL}},
    891 	{"format.rpl.links", 1, Val_string,
    892 		.str = "${2-}",
    893 		.strhandle = config_formats,
    894 		.description = {
    895 		"Format of RPL_LINKS (364) numeric", NULL}},
    896 	{"format.rpl.endoflinks", 1, Val_string,
    897 		.str = "${2-}",
    898 		.strhandle = config_formats,
    899 		.description = {
    900 		"Format of RPL_ENDOFLINKS (365) numeric", NULL}},
    901 	{"format.rpl.endofnames", 1, Val_string,
    902 		.str = "${2-}",
    903 		.strhandle = config_formats,
    904 		.description = {
    905 		"Format of RPL_ENDOFNAMES (366) numeric", NULL}},
    906 	{"format.rpl.banlist", 1, Val_string,
    907 		.str = "${2-}",
    908 		.strhandle = config_formats,
    909 		.description = {
    910 		"Format of RPL_BANLIST (367) numeric", NULL}},
    911 	{"format.rpl.endofbanlist", 1, Val_string,
    912 		.str = "${2-}",
    913 		.strhandle = config_formats,
    914 		.description = {
    915 		"Format of RPL_ENDOFBANLIST (368) numeric", NULL}},
    916 	{"format.rpl.endofwhowas", 1, Val_string,
    917 		.str = "",
    918 		.strhandle = config_formats,
    919 		.description = {
    920 		"Format of RPL_ENDOFWHOWAS (369) numeric", NULL}},
    921 	{"format.rpl.info", 1, Val_string,
    922 		.str = "${2-}",
    923 		.strhandle = config_formats,
    924 		.description = {
    925 		"Format of RPL_INFO (371) numeric", NULL}},
    926 	{"format.rpl.motd", 1, Val_string,
    927 		.str = "${2-}",
    928 		.strhandle = config_formats,
    929 		.description = {
    930 		"Format of RPL_MOTD (372) numeric", NULL}},
    931 	{"format.rpl.infostart", 1, Val_string,
    932 		.str = "${2-}",
    933 		.strhandle = config_formats,
    934 		.description = {
    935 		"Format of RPL_INFOSTART (373) numeric", NULL}},
    936 	{"format.rpl.endofinfo", 1, Val_string,
    937 		.str = "${2-}",
    938 		.strhandle = config_formats,
    939 		.description = {
    940 		"Format of RPL_ENDOFINFO (374) numeric", NULL}},
    941 	{"format.rpl.motdstart", 1, Val_string,
    942 		.str = "${2-}",
    943 		.strhandle = config_formats,
    944 		.description = {
    945 		"Format of RPL_MOTDSTART (375) numeric", NULL}},
    946 	{"format.rpl.endofmotd", 1, Val_string,
    947 		.str = "${2-}",
    948 		.strhandle = config_formats,
    949 		.description = {
    950 		"Format of RPL_ENDOFMOTD (376) numeric", NULL}},
    951 	{"format.rpl.youreoper", 1, Val_string,
    952 		.str = "${2-}",
    953 		.strhandle = config_formats,
    954 		.description = {
    955 		"Format of RPL_YOUREOPER (381) numeric", NULL}},
    956 	{"format.rpl.rehashing", 1, Val_string,
    957 		.str = "${2-}",
    958 		.strhandle = config_formats,
    959 		.description = {
    960 		"Format of RPL_REHASHING (382) numeric", NULL}},
    961 	{"format.rpl.time", 1, Val_string,
    962 		.str = "${2-}",
    963 		.strhandle = config_formats,
    964 		.description = {
    965 		"Format of RPL_TIME (391) numeric", NULL}},
    966 	{"format.rpl.usersstart", 1, Val_string,
    967 		.str = "${2-}",
    968 		.strhandle = config_formats,
    969 		.description = {
    970 		"Format of RPL_USERSSTART (392) numeric", NULL}},
    971 	{"format.rpl.users", 1, Val_string,
    972 		.str = "${2-}",
    973 		.strhandle = config_formats,
    974 		.description = {
    975 		"Format of RPL_USERS (393) numeric", NULL}},
    976 	{"format.rpl.endofusers", 1, Val_string,
    977 		.str = "${2-}",
    978 		.strhandle = config_formats,
    979 		.description = {
    980 		"Format of RPL_ENDOFUSERS (394) numeric", NULL}},
    981 	{"format.rpl.nousers", 1, Val_string,
    982 		.str = "${2-}",
    983 		.strhandle = config_formats,
    984 		.description = {
    985 		"Format of RPL_NOUSERS (395) numeric", NULL}},
    986 	{"format.err.nosuchnick", 1, Val_string,
    987 		.str = "No such nick: ${2}",
    988 		.strhandle = config_formats,
    989 		.description = {
    990 		"Format of ERR_NOSUCHNICK (401) numeric", NULL}},
    991 	{"format.err.nosuchserver", 1, Val_string,
    992 		.str = "No such server: ${2}",
    993 		.strhandle = config_formats,
    994 		.description = {
    995 		"Format of ERR_NOSUCHSERVER (402) numeric", NULL}},
    996 	{"format.err.nosuchchannel", 1, Val_string,
    997 		.str = "No such channel: ${2}",
    998 		.strhandle = config_formats,
    999 		.description = {
   1000 		"Format of ERR_NOSUCHCHANNEL (403) numeric", NULL}},
   1001 	{"format.err.cannotsendtochan", 1, Val_string,
   1002 		.str = "${2-}",
   1003 		.strhandle = config_formats,
   1004 		.description = {
   1005 		"Format of ERR_CANNOTSENDTOCHAN (404) numeric", NULL}},
   1006 	{"format.err.toomanychannels", 1, Val_string,
   1007 		.str = "${2-}",
   1008 		.strhandle = config_formats,
   1009 		.description = {
   1010 		"Format of ERR_TOOMANYCHANNELS (405) numeric", NULL}},
   1011 	{"format.err.wasnosuchnick", 1, Val_string,
   1012 		.str = "${2-}",
   1013 		.strhandle = config_formats,
   1014 		.description = {
   1015 		"Format of ERR_WASNOSUCHNICK (406) numeric", NULL}},
   1016 	{"format.err.toomanytargets", 1, Val_string,
   1017 		.str = "${2-}",
   1018 		.strhandle = config_formats,
   1019 		.description = {
   1020 		"Format of ERR_TOOMANYTARGETS (407) numeric", NULL}},
   1021 	{"format.err.noorigin", 1, Val_string,
   1022 		.str = "${2-}",
   1023 		.strhandle = config_formats,
   1024 		.description = {
   1025 		"Format of ERR_NOORIGIN (409) numeric", NULL}},
   1026 	{"format.err.norecipient", 1, Val_string,
   1027 		.str = "${2-}",
   1028 		.strhandle = config_formats,
   1029 		.description = {
   1030 		"Format of ERR_NORECIPIENT (411) numeric", NULL}},
   1031 	{"format.err.notexttosend", 1, Val_string,
   1032 		.str = "${2-}",
   1033 		.strhandle = config_formats,
   1034 		.description = {
   1035 		"Format of ERR_NOTEXTTOSEND (412) numeric", NULL}},
   1036 	{"format.err.notoplevel", 1, Val_string,
   1037 		.str = "${2-}",
   1038 		.strhandle = config_formats,
   1039 		.description = {
   1040 		"Format of ERR_NOTOPLEVEL (413) numeric", NULL}},
   1041 	{"format.err.wildtoplevel", 1, Val_string,
   1042 		.str = "${2-}",
   1043 		.strhandle = config_formats,
   1044 		.description = {
   1045 		"Format of ERR_WILDTOPLEVEL (414) numeric", NULL}},
   1046 	{"format.err.unknowncommand", 1, Val_string,
   1047 		.str = "${2-}",
   1048 		.strhandle = config_formats,
   1049 		.description = {
   1050 		"Format of ERR_UNKNOWNCOMMAND (421) numeric", NULL}},
   1051 	{"format.err.nomotd", 1, Val_string,
   1052 		.str = "${2-}",
   1053 		.strhandle = config_formats,
   1054 		.description = {
   1055 		"Format of ERR_NOMOTD (422) numeric", NULL}},
   1056 	{"format.err.noadmininfo", 1, Val_string,
   1057 		.str = "${2-}",
   1058 		.strhandle = config_formats,
   1059 		.description = {
   1060 		"Format of ERR_NOADMININFO (423) numeric", NULL}},
   1061 	{"format.err.fileerror", 1, Val_string,
   1062 		.str = "${2-}",
   1063 		.strhandle = config_formats,
   1064 		.description = {
   1065 		"Format of ERR_FILEERROR (424) numeric", NULL}},
   1066 	{"format.err.nonicknamegiven", 1, Val_string,
   1067 		.str = "${2-}",
   1068 		.strhandle = config_formats,
   1069 		.description = {
   1070 		"Format of ERR_NONICKNAMEGIVEN (431) numeric", NULL}},
   1071 	{"format.err.erroneusnickname", 1, Val_string,
   1072 		.str = "Erroneous nickname: ${2}",
   1073 		.strhandle = config_formats,
   1074 		.description = {
   1075 		"Format of ERR_ERRONEUSNICKNAME (432) numeric", NULL}},
   1076 	{"format.err.nicknameinuse", 1, Val_string,
   1077 		.str = "Nickname already in use: ${2}",
   1078 		.strhandle = config_formats,
   1079 		.description = {
   1080 		"Format of ERR_NICKNAMEINUSE (433) numeric", NULL}},
   1081 	{"format.err.nickcollision", 1, Val_string,
   1082 		.str = "${2-}",
   1083 		.strhandle = config_formats,
   1084 		.description = {
   1085 		"Format of ERR_NICKCOLLISION (436) numeric", NULL}},
   1086 	{"format.err.usernotinchannel", 1, Val_string,
   1087 		.str = "${2-}",
   1088 		.strhandle = config_formats,
   1089 		.description = {
   1090 		"Format of ERR_USERNOTINCHANNEL (441) numeric", NULL}},
   1091 	{"format.err.notonchannel", 1, Val_string,
   1092 		.str = "${2-}",
   1093 		.strhandle = config_formats,
   1094 		.description = {
   1095 		"Format of ERR_NOTONCHANNEL (442) numeric", NULL}},
   1096 	{"format.err.useronchannel", 1, Val_string,
   1097 		.str = "${2-}",
   1098 		.strhandle = config_formats,
   1099 		.description = {
   1100 		"Format of ERR_USERONCHANNEL (443) numeric", NULL}},
   1101 	{"format.err.nologin", 1, Val_string,
   1102 		.str = "${2-}",
   1103 		.strhandle = config_formats,
   1104 		.description = {
   1105 		"Format of ERR_NOLOGIN (444) numeric", NULL}},
   1106 	{"format.err.summondisabled", 1, Val_string,
   1107 		.str = "${2-}",
   1108 		.strhandle = config_formats,
   1109 		.description = {
   1110 		"Format of ERR_SUMMONDISABLED (445) numeric", NULL}},
   1111 	{"format.err.usersdisabled", 1, Val_string,
   1112 		.str = "${2-}",
   1113 		.strhandle = config_formats,
   1114 		.description = {
   1115 		"Format of ERR_USERSDISABLED (446) numeric", NULL}},
   1116 	{"format.err.notregistered", 1, Val_string,
   1117 		.str = "${2-}",
   1118 		.strhandle = config_formats,
   1119 		.description = {
   1120 		"Format of ERR_NOTREGISTERED (451) numeric", NULL}},
   1121 	{"format.err.needmoreparams", 1, Val_string,
   1122 		.str = "${2-}",
   1123 		.strhandle = config_formats,
   1124 		.description = {
   1125 		"Format of ERR_NEEDMOREPARAMS (461) numeric", NULL}},
   1126 	{"format.err.alreadyregistred", 1, Val_string,
   1127 		.str = "${2-}",
   1128 		.strhandle = config_formats,
   1129 		.description = {
   1130 		"Format of ERR_ALREADYREGISTRED (462) numeric", NULL}},
   1131 	{"format.err.nopermforhost", 1, Val_string,
   1132 		.str = "${2-}",
   1133 		.strhandle = config_formats,
   1134 		.description = {
   1135 		"Format of ERR_NOPERMFORHOST (463) numeric", NULL}},
   1136 	{"format.err.passwdmismatch", 1, Val_string,
   1137 		.str = "${2-}",
   1138 		.strhandle = config_formats,
   1139 		.description = {
   1140 		"Format of ERR_PASSWDMISMATCH (464) numeric", NULL}},
   1141 	{"format.err.yourebannedcreep", 1, Val_string,
   1142 		.str = "${2-}",
   1143 		.strhandle = config_formats,
   1144 		.description = {
   1145 		"Format of ERR_YOUREBANNEDCREEP (465) numeric", NULL}},
   1146 	{"format.err.youwillbebanned", 1, Val_string,
   1147 		.str = "${2-}",
   1148 		.strhandle = config_formats,
   1149 		.description = {
   1150 		"Format of ERR_YOUWILLBEBANNED (466) numeric", NULL}},
   1151 	{"format.err.keyset", 1, Val_string,
   1152 		.str = "${2-}",
   1153 		.strhandle = config_formats,
   1154 		.description = {
   1155 		"Format of ERR_KEYSET (467) numeric", NULL}},
   1156 	{"format.err.channelisfull", 1, Val_string,
   1157 		.str = "${2-}",
   1158 		.strhandle = config_formats,
   1159 		.description = {
   1160 		"Format of ERR_CHANNELISFULL (471) numeric", NULL}},
   1161 	{"format.err.unknownmode", 1, Val_string,
   1162 		.str = "${2-}",
   1163 		.strhandle = config_formats,
   1164 		.description = {
   1165 		"Format of ERR_UNKNOWNMODE (472) numeric", NULL}},
   1166 	{"format.err.inviteonlychan", 1, Val_string,
   1167 		.str = "${2-}",
   1168 		.strhandle = config_formats,
   1169 		.description = {
   1170 		"Format of ERR_INVITEONLYCHAN (473) numeric", NULL}},
   1171 	{"format.err.bannedfromchan", 1, Val_string,
   1172 		.str = "${2-}",
   1173 		.strhandle = config_formats,
   1174 		.description = {
   1175 		"Format of ERR_BANNEDFROMCHAN (474) numeric", NULL}},
   1176 	{"format.err.badchannelkey", 1, Val_string,
   1177 		.str = "${2-}",
   1178 		.strhandle = config_formats,
   1179 		.description = {
   1180 		"Format of ERR_BADCHANNELKEY (475) numeric", NULL}},
   1181 	{"format.err.noprivileges", 1, Val_string,
   1182 		.str = "${2-}",
   1183 		.strhandle = config_formats,
   1184 		.description = {
   1185 		"Format of ERR_NOPRIVILEGES (481) numeric", NULL}},
   1186 	{"format.err.chanoprivsneeded", 1, Val_string,
   1187 		.str = "${2-}",
   1188 		.strhandle = config_formats,
   1189 		.description = {
   1190 		"Format of ERR_CHANOPRIVSNEEDED (482) numeric", NULL}},
   1191 	{"format.err.cantkillserver", 1, Val_string,
   1192 		.str = "${2-}",
   1193 		.strhandle = config_formats,
   1194 		.description = {
   1195 		"Format of ERR_CANTKILLSERVER (483) numeric", NULL}},
   1196 	{"format.err.nooperhost", 1, Val_string,
   1197 		.str = "${2-}",
   1198 		.strhandle = config_formats,
   1199 		.description = {
   1200 		"Format of ERR_NOOPERHOST (491) numeric", NULL}},
   1201 	{"format.err.noservicehost", 1, Val_string,
   1202 		.str = "${2-}",
   1203 		.strhandle = config_formats,
   1204 		.description = {
   1205 		"Format of ERR_NOSERVICEHOST (492) numeric", NULL}},
   1206 	{"format.err.umodeunknownflag", 1, Val_string,
   1207 		.str = "${2-}",
   1208 		.strhandle = config_formats,
   1209 		.description = {
   1210 		"Format of ERR_UMODEUNKNOWNFLAG (501) numeric", NULL}},
   1211 	{"format.err.usersdontmatch", 1, Val_string,
   1212 		.str = "${2-}",
   1213 		.strhandle = config_formats,
   1214 		.description = {
   1215 		"Format of ERR_USERSDONTMATCH (502) numeric", NULL}},
   1216 	/* END: misc/rpl-conf-gen.awk */
   1217 	/* Modern numerics */
   1218 	{"format.rpl.localusers", 1, Val_string,
   1219 		.str = "There are ${2} current local users, record of ${3}",
   1220 		.strhandle = config_formats,
   1221 		.description = {
   1222 		"Format of RPLS_LOCALUSERS (265) numeric", NULL}},
   1223 	{"format.rpl.globalusers", 1, Val_string,
   1224 		.str = "There are ${2} current global users, record of ${3}",
   1225 		.strhandle = config_formats,
   1226 		.description = {
   1227 		"Format of RPL_GLOBALUSERS (266) numeric", NULL}},
   1228 	{"format.rpl.whoisspecial", 1, Val_string,
   1229 		.str = " %{b}info    %{b}: ${3}",
   1230 		.strhandle = config_formats,
   1231 		.description = {
   1232 		"Format of RPL_WHOISSPECIAL (320) numeric", NULL}},
   1233 	{"format.rpl.whoisaccount", 1, Val_string,
   1234 		.str = " %{b}account %{b}: ${3}",
   1235 		.strhandle = config_formats,
   1236 		.description = {
   1237 		"Format of RPL_WHOISACCOUNT (330) numeric", NULL}},
   1238 	{"format.rpl.topicwhotime", 1, Val_string,
   1239 		.str = "set by %{nick:${3}}${3}%{o} at %{time:%Y-%m-%d %H:%M:%S,${4}}",
   1240 		.strhandle = config_formats,
   1241 		.description = {
   1242 		"Format of RPL_TOPICWHOTIME (333) numeric", NULL}},
   1243 	{"format.rpl.whoisactually", 1, Val_string,
   1244 		.str = " %{b}actually%{b}: ${3-}",
   1245 		.strhandle = config_formats,
   1246 		.description = {
   1247 		"Format of RPL_WHOISACTUALLY (338) numeric", NULL}},
   1248 	{"format.rpl.whoishost", 1, Val_string,
   1249 		.str = " %{b}info    %{b}: ${3}",
   1250 		.strhandle = config_formats,
   1251 		.description = {
   1252 		"Format of RPL_WHOISHOST (378) numeric", NULL}},
   1253 	{"format.rpl.whoismodes", 1, Val_string,
   1254 		.str = " %{b}modes   %{b}: ${3}",
   1255 		.strhandle = config_formats,
   1256 		.description = {
   1257 		"Format of RPL_WHOISMODES (379) numeric", NULL}},
   1258 	{"format.rpl.whoissecure", 1, Val_string,
   1259 		.str = " %{b}secure  %{b}: ${3}",
   1260 		.strhandle = config_formats,
   1261 		.description = {
   1262 		"Format of RPL_WHOISSECURE (671) numeric", NULL}},
   1263 	/* Default formats */
   1264 	{"format.rpl.other", 1, Val_string,
   1265 		.str = "${cmd} ${2-}",
   1266 		.strhandle = config_formats,
   1267 		.description = {
   1268 		"Format of numerics without formats", NULL}},
   1269 	{"format.other", 1, Val_string,
   1270 		.str = "${raw}",
   1271 		.strhandle = config_formats,
   1272 		.description = {
   1273 		"Format of other messages without formats", NULL}},
   1274 	{NULL},
   1275 };