summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2006-05-13 21:04:27 +0000
committerSebastien Helleu <flashcode@flashtux.org>2006-05-13 21:04:27 +0000
commit01aa8472c0d7a6424dc40d8014844eb623563b52 (patch)
treec73964324749dc72d1db8e42ae094e12c3b924b2 /src
parentc1ce18e2f67a3cd64e21f6dc507d387abe837803 (diff)
downloadweechat-01aa8472c0d7a6424dc40d8014844eb623563b52.zip
Added charset encoding for some command arguments (like /me, /msg, /query, ..)
Diffstat (limited to 'src')
-rw-r--r--src/common/command.c79
-rw-r--r--src/common/command.h2
-rw-r--r--src/irc/irc-commands.c396
-rw-r--r--src/irc/irc.h2
4 files changed, 250 insertions, 229 deletions
diff --git a/src/common/command.c b/src/common/command.c
index 3c5644ab8..65165683d 100644
--- a/src/common/command.c
+++ b/src/common/command.c
@@ -52,7 +52,7 @@ t_weechat_command weechat_commands[] =
" command: command name (WeeChat or IRC command, many commands "
"can be separated by semicolons)\n"
"arguments: arguments for command"),
- "%- %A", 0, MAX_ARGS, NULL, weechat_cmd_alias },
+ "%- %A", 0, MAX_ARGS, 1, NULL, weechat_cmd_alias },
{ "buffer", N_("manage buffers"),
N_("[action [args] | number | [[server] [channel]]]"),
N_(" action: action to do:\n"
@@ -63,50 +63,50 @@ t_weechat_command weechat_commands[] =
"server\n"
"channel: jump to buffer by server and/or channel name\n"
" number: jump to buffer by number"),
- "move|close|list|notify", 0, MAX_ARGS, NULL, weechat_cmd_buffer },
+ "move|close|list|notify", 0, MAX_ARGS, 0, NULL, weechat_cmd_buffer },
{ "builtin", N_("launch WeeChat/IRC builtin command (do not look at plugins handlers or aliases)"),
N_("command"),
N_("command: command to execute (a '/' is automatically added if not found at beginning of command)\n"),
- "%w|%i", 0, MAX_ARGS, NULL, weechat_cmd_builtin },
+ "%w|%i", 0, MAX_ARGS, 1, NULL, weechat_cmd_builtin },
{ "charset", N_("change charset for server or channel"),
N_("[(decode_iso | decode_utf | encode) charset]"),
N_("decode_iso: charset used for decoding ISO\n"
"decode_utf: charset used for decoding UTF\n"
" encode: charset used for encoding messages\n"
" charset: charset to use (for example: ISO-8859-15, UTF-8,..)"),
- "decode_iso|decode_utf|encode", 0, 2, weechat_cmd_charset, NULL },
+ "decode_iso|decode_utf|encode", 0, 2, 0, weechat_cmd_charset, NULL },
{ "clear", N_("clear window(s)"),
N_("[-all]"),
N_("-all: clear all windows"),
- "-all", 0, 1, weechat_cmd_clear, NULL },
+ "-all", 0, 1, 0, weechat_cmd_clear, NULL },
{ "connect", N_("connect to a server"),
N_("[servername]"),
N_("servername: server name to connect"),
- "%S", 0, 1, weechat_cmd_connect, NULL },
+ "%S", 0, 1, 0, weechat_cmd_connect, NULL },
{ "disconnect", N_("disconnect from a server"),
N_("[servername]"),
N_("servername: server name to disconnect"),
- "%S", 0, 1, weechat_cmd_disconnect, NULL },
+ "%S", 0, 1, 0, weechat_cmd_disconnect, NULL },
{ "dcc", N_("starts DCC (file or chat) or close chat"),
N_("action [nickname [file]]"),
N_(" action: 'send' (file) or 'chat' or 'close' (chat)\n"
"nickname: nickname to send file or chat\n"
" file: filename (on local host)"),
- "chat|send|close %n %f", 1, MAX_ARGS, NULL, weechat_cmd_dcc },
+ "chat|send|close %n %f", 1, MAX_ARGS, 0, NULL, weechat_cmd_dcc },
{ "debug", N_("print debug messages"),
N_("dump | windows"),
N_(" dump: save memory dump in WeeChat log file (same dump is written when WeeChat crashes)\n"
"windows: display windows tree"),
- "dump|windows", 1, 1, weechat_cmd_debug, NULL },
+ "dump|windows", 1, 1, 0, weechat_cmd_debug, NULL },
{ "help", N_("display help about commands"),
N_("[command]"),
N_("command: name of a WeeChat or IRC command"),
- "%w|%i|%h", 0, 1, weechat_cmd_help, NULL },
+ "%w|%i|%h", 0, 1, 0, weechat_cmd_help, NULL },
{ "history", N_("show buffer command history"),
N_("[clear | value]"),
N_("clear: clear history\n"
"value: number of history entries to show"),
- "clear", 0, 1, weechat_cmd_history, NULL },
+ "clear", 0, 1, 0, weechat_cmd_history, NULL },
{ "ignore", N_("ignore IRC messages and/or hosts"),
N_("[mask [[type | command] [channel [server]]]]"),
N_(" mask: nick or host mask to ignore\n"
@@ -117,7 +117,7 @@ t_weechat_command weechat_commands[] =
"For each argument, '*' means all.\n"
"Without argument, /ignore command lists all defined ignore."),
"*|%n *|action|ctcp|dcc|pv|%I *|%c *|%s",
- 0, 4, weechat_cmd_ignore, NULL },
+ 0, 4, 0, weechat_cmd_ignore, NULL },
{ "key", N_("bind/unbind keys"),
N_("[key function/command] [unbind key] [functions] [reset -yes]"),
N_(" key: bind this key to an internal function or a command "
@@ -126,12 +126,12 @@ t_weechat_command weechat_commands[] =
"functions: list internal functions for key bindings\n"
" reset: restore bindings to the default values and delete ALL "
"personal bindings (use carefully!)"),
- "unbind|functions|reset %k", 0, MAX_ARGS, NULL, weechat_cmd_key },
+ "unbind|functions|reset %k", 0, MAX_ARGS, 0, NULL, weechat_cmd_key },
{ "plugin", N_("list/load/unload plugins"),
N_("[load filename] | [autoload] | [reload] | [unload]"),
N_("filename: WeeChat plugin (file) to load\n\n"
"Without argument, /plugin command lists all loaded plugins."),
- "load|autoload|reload|unload", 0, 2, weechat_cmd_plugin, NULL },
+ "load|autoload|reload|unload", 0, 2, 0, weechat_cmd_plugin, NULL },
{ "server", N_("list, add or remove servers"),
N_("[servername] | "
"[servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 "
@@ -149,10 +149,10 @@ t_weechat_command weechat_commands[] =
" nick3: second alternate nick for server\n"
" username: user name\n"
" realname: real name of user"),
- NULL, 0, MAX_ARGS, weechat_cmd_server, NULL },
+ NULL, 0, MAX_ARGS, 0, weechat_cmd_server, NULL },
{ "save", N_("save config to disk"),
N_("[file]"), N_("file: filename for writing config"),
- NULL, 0, 1, weechat_cmd_save, NULL },
+ NULL, 0, 1, 0, weechat_cmd_save, NULL },
{ "set", N_("set config options"),
N_("[option [ = value]]"),
N_("option: name of an option (if name is full "
@@ -160,16 +160,16 @@ t_weechat_command weechat_commands[] =
" value: value for option\n\n"
"Option may be: servername.server_xxx where \"servername\" is an "
"internal server name and \"xxx\" an option for this server."),
- "%o = %v", 0, MAX_ARGS, NULL, weechat_cmd_set },
+ "%o = %v", 0, MAX_ARGS, 0, NULL, weechat_cmd_set },
{ "setp", N_("set plugin config options"),
N_("[option [ = value]]"),
N_("option: name of a plugin option\n"
" value: value for option\n\n"
"Option is format: plugin.option, example: perl.myscript.item1"),
- "%O = %V", 0, MAX_ARGS, NULL, weechat_cmd_setp },
+ "%O = %V", 0, MAX_ARGS, 0, NULL, weechat_cmd_setp },
{ "unalias", N_("remove an alias"),
N_("alias_name"), N_("alias_name: name of alias to remove"),
- "%a", 1, 1, NULL, weechat_cmd_unalias },
+ "%a", 1, 1, 0, NULL, weechat_cmd_unalias },
{ "unignore", N_("unignore IRC messages and/or hosts"),
N_("[number | [mask [[type | command] [channel [server]]]]]"),
N_(" number: # of ignore to unignore (number is displayed by list of ignore)\n"
@@ -181,16 +181,16 @@ t_weechat_command weechat_commands[] =
"For each argument, '*' means all.\n"
"Without argument, /unignore command lists all defined ignore."),
"*|%n *|action|ctcp|dcc|pv|%I *|%c *|%s",
- 0, 4, weechat_cmd_unignore, NULL },
+ 0, 4, 0, weechat_cmd_unignore, NULL },
{ "upgrade", N_("upgrade WeeChat without disconnecting from servers"),
"",
N_("This command run again WeeChat binary, so it should have been compiled "
"or installed with a package manager before running this command."),
- NULL, 0, 0, weechat_cmd_upgrade, NULL },
+ NULL, 0, 0, 0, weechat_cmd_upgrade, NULL },
{ "uptime", N_("show WeeChat uptime"),
N_("[-o]"),
N_("-o: send uptime on current channel as an IRC message"),
- "-o", 0, 1, weechat_cmd_uptime, NULL },
+ "-o", 0, 1, 0, weechat_cmd_uptime, NULL },
{ "window", N_("manage windows"),
N_("[list | -1 | +1 | b# | up | down | left | right | splith [pct] "
"| splitv [pct] | resize pct | merge [all]]"),
@@ -210,8 +210,8 @@ t_weechat_command weechat_commands[] =
"size of new window, computed with current window as size reference. "
"For example 25 means create a new window with size = current_size / 4"),
"list|-1|+1|up|down|left|right|splith|splitv|resize|merge all",
- 0, 2, weechat_cmd_window, NULL },
- { NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL }
+ 0, 2, 0, weechat_cmd_window, NULL },
+ { NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL, NULL }
};
t_weechat_alias *weechat_alias = NULL;
@@ -672,8 +672,8 @@ int
exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string,
int only_builtin)
{
- int i, rc, argc, return_code, length1, length2;
- char *command, *pos, *ptr_args, **argv, *alias_command;
+ int i, rc, argc, argc2, return_code, length1, length2;
+ char *command, *pos, *ptr_args, *ptr_args2, **argv, **argv2, *alias_command;
char **commands, **ptr_cmd, **ptr_next_cmd;
t_weechat_alias *ptr_alias;
@@ -797,7 +797,6 @@ exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string
free_multi_command (commands);
}
}
-
free_exploded_string (argv);
free (command);
return 1;
@@ -842,12 +841,19 @@ exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string
}
else
{
+ ptr_args2 = (weechat_commands[i].charset_conversion && ptr_args) ?
+ channel_iconv_encode (server, channel, ptr_args) : NULL;
if (weechat_commands[i].cmd_function_args)
+ {
+ argv2 = explode_string ((ptr_args2) ? ptr_args2 : ptr_args,
+ " ", 0, &argc2);
return_code = (int) (weechat_commands[i].cmd_function_args)
- (server, channel, argc, argv);
+ (server, channel, argc2, argv2);
+ free_exploded_string (argv2);
+ }
else
return_code = (int) (weechat_commands[i].cmd_function_1arg)
- (server, channel, ptr_args);
+ (server, channel, (ptr_args2) ? ptr_args2 : ptr_args);
if (return_code < 0)
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
@@ -855,6 +861,8 @@ exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string
_("%s command \"%s\" failed\n"),
WEECHAT_ERROR, command + 1);
}
+ if (ptr_args2)
+ free (ptr_args2);
}
free_exploded_string (argv);
free (command);
@@ -920,12 +928,19 @@ exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string
free (command);
return 0;
}
+ ptr_args2 = (irc_commands[i].charset_conversion && ptr_args) ?
+ channel_iconv_encode (server, channel, ptr_args) : NULL;
if (irc_commands[i].cmd_function_args)
+ {
+ argv2 = explode_string ((ptr_args2) ? ptr_args2 : ptr_args,
+ " ", 0, &argc2);
return_code = (int) (irc_commands[i].cmd_function_args)
- (server, channel, argc, argv);
+ (server, channel, argc2, argv2);
+ free_exploded_string (argv2);
+ }
else
return_code = (int) (irc_commands[i].cmd_function_1arg)
- (server, channel, ptr_args);
+ (server, channel, (ptr_args2) ? ptr_args2 : ptr_args);
if (return_code < 0)
{
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
@@ -933,6 +948,8 @@ exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string
_("%s command \"%s\" failed\n"),
WEECHAT_ERROR, command + 1);
}
+ if (ptr_args2)
+ free (ptr_args2);
}
free_exploded_string (argv);
free (command);
diff --git a/src/common/command.h b/src/common/command.h
index a22b5bf2c..ae41d501c 100644
--- a/src/common/command.h
+++ b/src/common/command.h
@@ -38,6 +38,8 @@ struct t_weechat_command
char *completion_template; /* template for completion */
/* NULL=no completion, ""=default (nick) */
int min_arg, max_arg; /* min & max number of arguments */
+ int charset_conversion; /* = 1 if cmd args are converted before */
+ /* they're executed */
int (*cmd_function_args)(t_irc_server *, t_irc_channel *, int, char **);
/* function called when user enters cmd */
int (*cmd_function_1arg)(t_irc_server *, t_irc_channel *, char *);
diff --git a/src/irc/irc-commands.c b/src/irc/irc-commands.c
index d5efa868f..e10fb660b 100644
--- a/src/irc/irc-commands.c
+++ b/src/irc/irc-commands.c
@@ -34,105 +34,105 @@ t_irc_command irc_commands[] =
{ { "admin", N_("find information about the administrator of the server"),
N_("[target]"),
N_("target: server"),
- NULL, 0, 1, 1, NULL, irc_cmd_send_admin, NULL },
+ NULL, 0, 1, 0, 1, NULL, irc_cmd_send_admin, NULL },
{ "ame", N_("send a CTCP action to all channels of all connected servers"),
N_("message"),
N_("message: message to send"),
- "", 1, MAX_ARGS, 1, NULL, irc_cmd_send_ame, NULL },
+ "", 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_ame, NULL },
{ "amsg", N_("send message to all channels of all connected servers"),
N_("text"),
N_("text: text to send"),
- "", 1, MAX_ARGS, 1, NULL, irc_cmd_send_amsg, NULL },
+ "", 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_amsg, NULL },
{ "away", N_("toggle away status"),
N_("[-all] [message]"),
N_(" -all: toggle away status on all connected servers\n"
"message: message for away (if no message is given, away status is removed)"),
- "-all", 0, MAX_ARGS, 1, NULL, irc_cmd_send_away, NULL },
+ "-all", 0, MAX_ARGS, 1, 1, NULL, irc_cmd_send_away, NULL },
{ "ban", N_("bans nicks or hosts"),
N_("[channel] [nickname [nickname ...]]"),
N_(" channel: channel for ban\n"
"nickname: user or host to ban"),
- "%N", 0, MAX_ARGS, 1, NULL, irc_cmd_send_ban, NULL },
+ "%N", 0, MAX_ARGS, 0, 1, NULL, irc_cmd_send_ban, NULL },
{ "ctcp", N_("send a CTCP message (Client-To-Client Protocol)"),
N_("nickname type [arguments]"),
N_(" nickname: user to send CTCP to\n"
" type: CTCP type (examples: \"version\", \"ping\", ..)\n"
"arguments: arguments for CTCP"),
- "%n action|ping|version", 2, MAX_ARGS, 1, NULL, irc_cmd_send_ctcp, NULL },
+ "%n action|ping|version", 2, MAX_ARGS, 1, 1, NULL, irc_cmd_send_ctcp, NULL },
{ "cycle", N_("leave and rejoin a channel"),
N_("[channel[,channel]] [part_message]"),
N_(" channel: channel name for cycle\n"
"part_message: part message (displayed to other users)"),
- "%p", 0, MAX_ARGS, 1, NULL, irc_cmd_send_cycle, NULL },
+ "%p", 0, MAX_ARGS, 0, 1, NULL, irc_cmd_send_cycle, NULL },
{ "dehalfop", N_("removes half channel operator status from nickname(s)"),
N_("[nickname [nickname]]"), "",
- "", 0, MAX_ARGS, 1, irc_cmd_send_dehalfop, NULL, NULL },
+ "", 0, MAX_ARGS, 0, 1, irc_cmd_send_dehalfop, NULL, NULL },
{ "deop", N_("removes channel operator status from nickname(s)"),
N_("[nickname [nickname]]"), "",
- "", 0, MAX_ARGS, 1, irc_cmd_send_deop, NULL, NULL },
+ "", 0, MAX_ARGS, 0, 1, irc_cmd_send_deop, NULL, NULL },
{ "devoice", N_("removes voice from nickname(s)"),
N_("[nickname [nickname]]"), "",
- "", 0, MAX_ARGS, 1, irc_cmd_send_devoice, NULL, NULL },
+ "", 0, MAX_ARGS, 0, 1, irc_cmd_send_devoice, NULL, NULL },
{ "die", N_("shutdown the server"), "", "",
- NULL, 0, 0, 1, NULL, irc_cmd_send_die, NULL },
+ NULL, 0, 0, 0, 1, NULL, irc_cmd_send_die, NULL },
{ "error", N_("error received from IRC server"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_error },
{ "halfop", N_("gives half channel operator status to nickname(s)"),
N_("[nickname [nickname]]"), "",
- "", 0, MAX_ARGS, 1, irc_cmd_send_halfop, NULL, NULL },
+ "", 0, MAX_ARGS, 0, 1, irc_cmd_send_halfop, NULL, NULL },
{ "info", N_("get information describing the server"),
N_("[target]"),
N_("target: server name"),
- NULL, 0, 1, 1, NULL, irc_cmd_send_info, NULL },
+ NULL, 0, 1, 0, 1, NULL, irc_cmd_send_info, NULL },
{ "invite", N_("invite a nick on a channel"),
N_("nickname channel"),
N_("nickname: nick to invite\n"
" channel: channel to invite"),
- "%n %c", 1, 2, 1, irc_cmd_send_invite, NULL, irc_cmd_recv_invite },
+ "%n %c", 1, 2, 0, 1, irc_cmd_send_invite, NULL, irc_cmd_recv_invite },
{ "ison", N_("check if a nickname is currently on IRC"),
N_("nickname [nickname ...]"),
N_("nickname: nickname"),
- "", 1, MAX_ARGS, 1, NULL, irc_cmd_send_ison, NULL },
+ "", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_ison, NULL },
{ "join", N_("join a channel"),
N_("channel[,channel] [key[,key]]"),
N_("channel: channel name to join\n"
" key: key to join the channel"),
- NULL, 1, MAX_ARGS, 1, NULL, irc_cmd_send_join, irc_cmd_recv_join },
+ NULL, 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_join, irc_cmd_recv_join },
{ "kick", N_("forcibly remove a user from a channel"),
N_("[channel] nickname [comment]"),
N_(" channel: channel where user is\n"
"nickname: nickname to kick\n"
" comment: comment for kick"),
- "%n %-", 1, MAX_ARGS, 1, NULL, irc_cmd_send_kick, irc_cmd_recv_kick },
+ "%n %-", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_kick, irc_cmd_recv_kick },
{ "kickban", N_("kicks and bans a nick from a channel"),
N_("[channel] nickname [comment]"),
N_(" channel: channel where user is\n"
"nickname: nickname to kick and ban\n"
" comment: comment for kick"),
- "%n %-", 1, MAX_ARGS, 1, NULL, irc_cmd_send_kickban, NULL },
+ "%n %-", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_kickban, NULL },
{ "kill", N_("close client-server connection"),
N_("nickname comment"),
N_("nickname: nickname\n"
" comment: comment for kill"),
- "%n %-", 2, MAX_ARGS, 1, NULL, irc_cmd_send_kill, irc_cmd_recv_kill },
+ "%n %-", 2, MAX_ARGS, 0, 1, NULL, irc_cmd_send_kill, irc_cmd_recv_kill },
{ "links", N_("list all servernames which are known by the server answering the query"),
N_("[[server] server_mask]"),
N_(" server: this server should answer the query\n"
"server_mask: list of servers must match this mask"),
- NULL, 0, 2, 1, NULL, irc_cmd_send_links, NULL },
+ NULL, 0, 2, 0, 1, NULL, irc_cmd_send_links, NULL },
{ "list", N_("list channels and their topic"),
N_("[channel[,channel] [server]]"),
N_("channel: channel to list (a regexp is allowed)\nserver: server name"),
- NULL, 0, MAX_ARGS, 1, NULL, irc_cmd_send_list, NULL },
+ NULL, 0, MAX_ARGS, 0, 1, NULL, irc_cmd_send_list, NULL },
{ "lusers", N_("get statistics about the size of the IRC network"),
N_("[mask [target]]"),
N_(" mask: servers matching the mask only\n"
"target: server for forwarding request"),
- NULL, 0, 2, 1, NULL, irc_cmd_send_lusers, NULL },
+ NULL, 0, 2, 0, 1, NULL, irc_cmd_send_lusers, NULL },
{ "me", N_("send a CTCP action to the current channel"),
N_("message"),
N_("message: message to send"),
- "", 0, MAX_ARGS, 1, NULL, irc_cmd_send_me, NULL },
+ "", 0, MAX_ARGS, 1, 1, NULL, irc_cmd_send_me, NULL },
{ "mode", N_("change channel or user mode"),
N_("{ channel {[+|-]|o|p|s|i|t|n|b|v} [limit] [user] [ban mask] } | "
"{ nickname {[+|-]|i|w|s|o} }"),
@@ -156,436 +156,436 @@ t_irc_command irc_commands[] =
" s: mark a user for receive server notices\n"
" w: user receives wallops\n"
" o: operator flag"),
- "", 1, MAX_ARGS, 1, NULL, irc_cmd_send_mode, irc_cmd_recv_mode },
+ "", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_mode, irc_cmd_recv_mode },
{ "motd", N_("get the \"Message Of The Day\""),
N_("[target]"),
N_("target: server name"),
- NULL, 0, 1, 1, NULL, irc_cmd_send_motd, NULL },
+ NULL, 0, 1, 0, 1, NULL, irc_cmd_send_motd, NULL },
{ "msg", N_("send message to a nick or channel"),
N_("receiver[,receiver] text"),
N_("receiver: nick or channel (may be mask, '*' = current channel)\n"
"text: text to send"),
- "", 2, MAX_ARGS, 1, NULL, irc_cmd_send_msg, NULL },
+ "", 2, MAX_ARGS, 1, 1, NULL, irc_cmd_send_msg, NULL },
{ "names", N_("list nicknames on channels"),
N_("[channel[,channel]]"),
N_("channel: channel name"),
- NULL, 0, 1, 1, NULL, irc_cmd_send_names, NULL },
+ NULL, 0, 1, 0, 1, NULL, irc_cmd_send_names, NULL },
{ "nick", N_("change current nickname"),
N_("[-all] nickname"),
N_(" -all: set new nickname for all connected servers\n"
"nickname: new nickname"),
- "-all", 1, 2, 0, irc_cmd_send_nick, NULL, irc_cmd_recv_nick },
+ "-all", 1, 2, 0, 0, irc_cmd_send_nick, NULL, irc_cmd_recv_nick },
{ "notice", N_("send notice message to user"),
N_("nickname text"),
N_("nickname: user to send notice to\n"
" text: text to send"),
- "%n %-", 2, MAX_ARGS, 1, NULL, irc_cmd_send_notice, irc_cmd_recv_notice },
+ "%n %-", 2, MAX_ARGS, 1, 1, NULL, irc_cmd_send_notice, irc_cmd_recv_notice },
{ "op", N_("gives channel operator status to nickname(s)"),
N_("nickname [nickname]"), "",
- "", 1, MAX_ARGS, 1, irc_cmd_send_op, NULL, NULL },
+ "", 1, MAX_ARGS, 0, 1, irc_cmd_send_op, NULL, NULL },
{ "oper", N_("get operator privileges"),
N_("user password"),
N_("user/password: used to get privileges on current IRC server"),
- NULL, 2, 2, 1, NULL, irc_cmd_send_oper, NULL },
+ NULL, 2, 2, 0, 1, NULL, irc_cmd_send_oper, NULL },
{ "part", N_("leave a channel"),
N_("[channel[,channel]] [part_message]"),
N_(" channel: channel name to leave\n"
"part_message: part message (displayed to other users)"),
- "%p", 0, MAX_ARGS, 1, NULL, irc_cmd_send_part, irc_cmd_recv_part },
+ "%p", 0, MAX_ARGS, 0, 1, NULL, irc_cmd_send_part, irc_cmd_recv_part },
{ "ping", N_("ping server"),
N_("server1 [server2]"),
N_("server1: server to ping\nserver2: forward ping to this server"),
- NULL, 1, 2, 1, NULL, irc_cmd_send_ping, irc_cmd_recv_ping },
+ NULL, 1, 2, 0, 1, NULL, irc_cmd_send_ping, irc_cmd_recv_ping },
{ "pong", N_("answer to a ping message"),
N_("daemon [daemon2]"),
N_(" daemon: daemon who has responded to Ping message\n"
"daemon2: forward message to this daemon"),
- NULL, 1, 2, 1, NULL, irc_cmd_send_pong, irc_cmd_recv_pong },
+ NULL, 1, 2, 0, 1, NULL, irc_cmd_send_pong, irc_cmd_recv_pong },
{ "privmsg", N_("message received"), "", "",
- "", 0, 0, 1, NULL, NULL, irc_cmd_recv_privmsg },
+ "", 0, 0, 1, 1, NULL, NULL, irc_cmd_recv_privmsg },
{ "query", N_("send a private message to a nick"),
N_("nickname [text]"),
N_("nickname: nickname for private conversation\n"
" text: text to send"),
- "%n %-", 1, MAX_ARGS, 1, NULL, irc_cmd_send_query, NULL },
+ "%n %-", 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_query, NULL },
{ "quit", N_("close all connections and quit"),
N_("[quit_message]"),
N_("quit_message: quit message (displayed to other users)"),
- "%q", 0, MAX_ARGS, 0, NULL, irc_cmd_send_quit, irc_cmd_recv_quit },
+ "%q", 0, MAX_ARGS, 1, 0, NULL, irc_cmd_send_quit, irc_cmd_recv_quit },
{ "quote", N_("send raw data to server without parsing"),
N_("data"),
N_("data: raw data to send"),
- "", 1, MAX_ARGS, 1, NULL, irc_cmd_send_quote, NULL },
+ "", 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_quote, NULL },
{ "rehash", N_("tell the server to reload its config file"), "", "",
- NULL, 0, 0, 1, NULL, irc_cmd_send_rehash, NULL },
+ NULL, 0, 0, 0, 1, NULL, irc_cmd_send_rehash, NULL },
{ "restart", N_("tell the server to restart itself"), "", "",
- NULL, 0, 0, 1, NULL, irc_cmd_send_restart, NULL },
+ NULL, 0, 0, 0, 1, NULL, irc_cmd_send_restart, NULL },
{ "service", N_("register a new service"),
N_("nickname reserved distribution type reserved info"),
N_("distribution: visibility of service\n"
" type: reserved for future usage"),
- NULL, 6, 6, 1, NULL, irc_cmd_send_service, NULL },
+ NULL, 6, 6, 0, 1, NULL, irc_cmd_send_service, NULL },
{ "servlist", N_("list services currently connected to the network"),
N_("[mask [type]]"),
N_("mask: list only services matching this mask\n"
"type: list only services of this type"),
- NULL, 0, 2, 1, NULL, irc_cmd_send_servlist, NULL },
+ NULL, 0, 2, 0, 1, NULL, irc_cmd_send_servlist, NULL },
{ "squery", N_("deliver a message to a service"),
N_("service text"),
N_("service: name of service\ntext: text to send"),
- NULL, 2, 2, 1, NULL, irc_cmd_send_squery, NULL },
+ NULL, 2, 2, 1, 1, NULL, irc_cmd_send_squery, NULL },
{ "squit", N_("disconnect server links"),
N_("server comment"),
N_( "server: server name\n"
"comment: comment for quit"),
- NULL, 2, 2, 1, NULL, irc_cmd_send_squit, NULL },
+ NULL, 2, 2, 1, 1, NULL, irc_cmd_send_squit, NULL },
{ "stats", N_("query statistics about server"),
N_("[query [server]]"),
N_(" query: c/h/i/k/l/m/o/y/u (see RFC1459)\n"
"server: server name"),
- NULL, 0, 2, 1, NULL, irc_cmd_send_stats, NULL },
+ NULL, 0, 2, 0, 1, NULL, irc_cmd_send_stats, NULL },
{ "summon", N_("give users who are on a host running an IRC server a message "
"asking them to please join IRC"),
N_("user [target [channel]]"),
N_(" user: username\ntarget: server name\n"
"channel: channel name"),
- NULL, 1, 3, 1, NULL, irc_cmd_send_summon, NULL },
+ NULL, 1, 3, 0, 1, NULL, irc_cmd_send_summon, NULL },
{ "time", N_("query local time from server"),
N_("[target]"),
N_("target: query time from specified server"),
- NULL, 0, 1, 1, NULL, irc_cmd_send_time, NULL },
+ NULL, 0, 1, 0, 1, NULL, irc_cmd_send_time, NULL },
{ "topic", N_("get/set channel topic"),
N_("[channel] [topic]"),
N_("channel: channel name\ntopic: new topic for channel "
"(if topic is \"-delete\" then topic is deleted)"),
- "%t", 0, MAX_ARGS, 1, NULL, irc_cmd_send_topic, irc_cmd_recv_topic },
+ "%t", 0, MAX_ARGS, 1, 1, NULL, irc_cmd_send_topic, irc_cmd_recv_topic },
{ "trace", N_("find the route to specific server"),
N_("[target]"),
N_("target: server"),
- NULL, 0, 1, 1, NULL, irc_cmd_send_trace, NULL },
+ NULL, 0, 1, 0, 1, NULL, irc_cmd_send_trace, NULL },
{ "unban", N_("unbans nicks or hosts"),
N_("[channel] nickname [nickname ...]"),
N_(" channel: channel for unban\n"
"nickname: user or host to unban"),
- "", 1, MAX_ARGS, 1, NULL, irc_cmd_send_unban, NULL },
+ "", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_unban, NULL },
{ "userhost", N_("return a list of information about nicknames"),
N_("nickname [nickname ...]"),
N_("nickname: nickname"),
- "%n", 1, MAX_ARGS, 1, NULL, irc_cmd_send_userhost, NULL },
+ "%n", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_userhost, NULL },
{ "users", N_("list of users logged into the server"),
N_("[target]"),
N_("target: server"),
- NULL, 0, 1, 1, NULL, irc_cmd_send_users, NULL },
+ NULL, 0, 1, 0, 1, NULL, irc_cmd_send_users, NULL },
{ "version", N_("gives the version info of nick or server (current or specified)"),
N_("[server | nickname]"),
N_(" server: server name\n"
"nickname: nickname"),
- NULL, 0, 1, 1, NULL, irc_cmd_send_version, NULL },
+ NULL, 0, 1, 0, 1, NULL, irc_cmd_send_version, NULL },
{ "voice", N_("gives voice to nickname(s)"),
N_("[nickname [nickname]]"), "",
- "", 0, MAX_ARGS, 1, irc_cmd_send_voice, NULL, NULL },
+ "", 0, MAX_ARGS, 0, 1, irc_cmd_send_voice, NULL, NULL },
{ "wallops", N_("send a message to all currently connected users who have "
"set the 'w' user mode for themselves"),
N_("text"),
N_("text to send"),
- NULL, 1, MAX_ARGS, 1, NULL, irc_cmd_send_wallops, NULL },
+ NULL, 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_wallops, NULL },
{ "who", N_("generate a query which returns a list of information"),
N_("[mask [\"o\"]]"),
N_("mask: only information which match this mask\n"
" o: only operators are returned according to the mask supplied"),
- "%C", 0, 2, 1, NULL, irc_cmd_send_who, NULL },
+ "%C", 0, 2, 0, 1, NULL, irc_cmd_send_who, NULL },
{ "whois", N_("query information about user(s)"),
N_("[server] nickname[,nickname]"),
N_(" server: server name\n"
"nickname: nickname (may be a mask)"),
- "", 1, MAX_ARGS, 1, NULL, irc_cmd_send_whois, NULL },
+ "", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_whois, NULL },
{ "whowas", N_("ask for information about a nickname which no longer exists"),
N_("nickname [,nickname [,nickname ...]] [count [target]]"),
N_("nickname: nickname to search\n"
" count: number of replies to return (full search if negative number)\n"
" target: reply should match this mask"),
- "", 1, MAX_ARGS, 1, NULL, irc_cmd_send_whowas, NULL },
+ "", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_whowas, NULL },
{ "001", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "002", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "003", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "004", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_004 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_004 },
{ "005", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "008", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "020", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "042", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "212", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "219", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "221", N_("user mode string"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_221 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_221 },
{ "250", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "251", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "252", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "253", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "254", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "255", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "256", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "257", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "258", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "259", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "260", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "261", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "262", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "263", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "264", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "265", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "266", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "267", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "268", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "269", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "290", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "292", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "301", N_("away message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_301 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_301 },
{ "302", N_("userhost"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_302 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_302 },
{ "303", N_("ison"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_303 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_303 },
{ "305", N_("unaway"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_305 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_305 },
{ "306", N_("now away"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_306 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_306 },
{ "307", N_("whois (registered nick)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_307 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_307 },
{ "311", N_("whois (user)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_311 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_311 },
{ "312", N_("whois (server)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_312 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_312 },
{ "313", N_("whois (operator)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_313 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_313 },
{ "314", N_("whowas"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_314 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_314 },
{ "315", N_("end of /who list"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_315 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_315 },
{ "317", N_("whois (idle)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_317 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_317 },
{ "318", N_("whois (end)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_318 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_318 },
{ "319", N_("whois (channels)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_319 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_319 },
{ "320", N_("whois (identified user)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_320 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_320 },
{ "321", N_("/list start"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_321 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_321 },
{ "322", N_("channel (for /list)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_322 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_322 },
{ "323", N_("/list end"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_323 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_323 },
{ "324", N_("channel mode"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_324 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_324 },
{ "329", "???", "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_329 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_329 },
{ "331", N_("no topic for channel"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_331 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_331 },
{ "332", N_("topic of channel"),
N_("channel :topic"),
N_("channel: name of channel\n"
" topic: topic of the channel"),
- NULL, 2, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_332 },
+ NULL, 2, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_332 },
{ "333", N_("infos about topic (nick and date changed)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_333 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_333 },
{ "341", N_("inviting"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_341 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_341 },
{ "344", N_("channel reop"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_344 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_344 },
{ "345", N_("end of channel reop list"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_345 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_345 },
{ "348", N_("channel exception list"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_348 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_348 },
{ "349", N_("end of channel exception list"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_349 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_349 },
{ "351", N_("server version"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_351 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_351 },
{ "352", N_("who"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_352 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_352 },
{ "353", N_("list of nicks on channel"),
N_("channel :[[@|+]nick ...]"),
N_("channel: name of channel\n"
" nick: nick on the channel"),
- NULL, 2, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_353 },
+ NULL, 2, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_353 },
{ "364", N_("links"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "365", N_("end of /links list"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "366", N_("end of /names list"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_366 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_366 },
{ "367", N_("banlist"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_367 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_367 },
{ "368", N_("end of banlist"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_368 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_368 },
{ "369", N_("end of /whowas list"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "371", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "372", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "373", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "374", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "375", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "376", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "378", N_("connecting from"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_378 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_378 },
{ "381", N_("you are now an IRC operator"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "382", N_("rehashing"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "391", N_("server local time"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "401", N_("no such nick/channel"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "402", N_("no such server"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "403", N_("no such channel"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "404", N_("cannot send to channel"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "405", N_("too many channels"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "406", N_("was no such nick"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "407", N_("was no such nick"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "409", N_("no origin"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "410", N_("no services"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "411", N_("no recipient"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "412", N_("no text to send"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "413", N_("no toplevel"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "414", N_("wilcard in toplevel domain"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "421", N_("unknown command"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "422", N_("MOTD is missing"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "423", N_("no administrative info"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "424", N_("file error"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "431", N_("no nickname given"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "432", N_("erroneous nickname"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "433", N_("nickname already in use"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_433 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_433 },
{ "436", N_("nickname collision"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "437", N_("resource unavailable"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "438", N_("not authorized to change nickname"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_438 },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_438 },
{ "441", N_("user not in channel"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "442", N_("not on channel"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "443", N_("user already on channel"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "444", N_("user not logged in"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "445", N_("summon has been disabled"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "446", N_("users has been disabled"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "451", N_("you are not registered"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "461", N_("not enough parameters"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "462", N_("you may not register"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "463", N_("your host isn't among the privileged"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "464", N_("password incorrect"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "465", N_("you are banned from this server"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "467", N_("channel key already set"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "470", N_("forwarding to another channel"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "471", N_("channel is already full"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "472", N_("unknown mode char to me"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "473", N_("cannot join channel (invite only)"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "474", N_("cannot join channel (banned from channel)"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "475", N_("cannot join channel (bad channel key)"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "476", N_("bad channel mask"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "477", N_("channel doesn't support modes"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "481", N_("you're not an IRC operator"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "482", N_("you're not channel operator"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "483", N_("you can't kill a server!"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "484", N_("your connection is restricted!"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "485", N_("user is immune from kick/deop"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "487", N_("network split"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "491", N_("no O-lines for your host"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "501", N_("unknown mode flag"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "502", N_("can't change mode for other users"), "", "",
- NULL, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
+ NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "505", N_("a server message"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_msg },
{ "671", N_("whois (secure connection)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_671 },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_671 },
{ "973", N_("whois (secure connection)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_mode_reason },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_mode_reason },
{ "974", N_("whois (secure connection)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_mode_reason },
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_mode_reason },
{ "975", N_("whois (secure connection)"), "", "",
- NULL, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_mode_reason },
- { NULL, NULL, NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL }
+ NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_mode_reason },
+ { NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, NULL, NULL, NULL }
};
diff --git a/src/irc/irc.h b/src/irc/irc.h
index 59b9c541d..204d81b41 100644
--- a/src/irc/irc.h
+++ b/src/irc/irc.h
@@ -211,6 +211,8 @@ struct t_irc_command
char *completion_template; /* template for completion */
/* NULL=no completion, ""=default (nick) */
int min_arg, max_arg; /* min & max number of arguments */
+ int charset_conversion; /* = 1 if cmd args are converted before */
+ /* they're sent to server */
int needs_connection; /* = 1 if cmd needs server connection */
int (*cmd_function_args)(t_irc_server *, t_irc_channel *, int, char **);
/* function called when user enters cmd */