diff --git a/ChangeLog b/ChangeLog index 20f794b97..558d3c2f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ WeeChat ChangeLog ================= Sébastien Helleu -v0.4.2-dev, 2013-06-02 +v0.4.2-dev, 2013-06-05 This document lists all changes for each version. @@ -21,6 +21,8 @@ Version 0.4.2 (under dev!) "layout_window" * core: fix line alignment when option weechat.look.buffer_time_format is set to empty string +* irc: add support of special variables $nick/$channel/$server in commands + /allchan and /allserv * irc: add option irc.look.nick_color_hash: hash algorithm to find nick color (patch #8062) * irc: fix multiple nicks in command /query (separated by commas): open one diff --git a/po/cs.po b/po/cs.po index f9239125c..2247f0cd5 100644 --- a/po/cs.po +++ b/po/cs.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-05-20 16:54+0200\n" "Last-Translator: Jiri Golembiovsky \n" "Language-Team: weechat-dev \n" @@ -4521,12 +4521,14 @@ msgstr "vykonat příkaz na všech kanálech všech připojených serverů" msgid "[-current] [-exclude=[,...]] []" msgstr "[-current] [-exclude=[,...]] []" +#, fuzzy msgid "" " -current: execute command for channels of current server only\n" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -4557,17 +4559,21 @@ msgstr "vykonat příkaz na všech připojených serverech" msgid "[-exclude=[,...]] []" msgstr "[-exclude=[,...]] []" +#, fuzzy msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" " -exclude: vynechat některé servery (pro vynechání více serverů je dovoleno " "'*' na začátku nebo konci jména serveru)\n" diff --git a/po/de.po b/po/de.po index 14b844661..34ef2defd 100644 --- a/po/de.po +++ b/po/de.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-05-20 16:54+0200\n" "Last-Translator: Nils Görs \n" "Language-Team: German \n" @@ -5020,12 +5020,14 @@ msgstr "" msgid "[-current] [-exclude=[,...]] []" msgstr "[-current] [-exclude=[,...]] []" +#, fuzzy msgid "" " -current: execute command for channels of current server only\n" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -5060,17 +5062,21 @@ msgstr "führt einen Befehl aus, der zu allen verbundenen Server gesendet wird" msgid "[-exclude=[,...]] []" msgstr "[-exclude=[,...]] []" +#, fuzzy msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" " -exclude: dient zum Ausschluss ausgewählter Server ('*' wird zu Beginn oder " "am Ende des Servernamens akzeptiert, um mehrere Server auszuschließen)\n" diff --git a/po/es.po b/po/es.po index 4da2d99df..b27d8c448 100644 --- a/po/es.po +++ b/po/es.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-05-20 16:54+0200\n" "Last-Translator: Elián Hanisch \n" "Language-Team: weechat-dev \n" @@ -4720,12 +4720,14 @@ msgstr "" msgid "[-current] [-exclude=[,...]] []" msgstr "[-current] [-exclude=[,...]] []" +#, fuzzy msgid "" " -current: execute command for channels of current server only\n" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -4757,17 +4759,21 @@ msgstr "ejecuta un comando en todos los servidores conectados" msgid "[-exclude=[,...]] []" msgstr "[-exclude=[,...]] []" +#, fuzzy msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" " -exclude: excluye algunos servidores ('*' está permitido al principio o " "final del nombre del servidor, para excluir varios servidores)\n" diff --git a/po/fr.po b/po/fr.po index 3a4ebadb5..01d4632b7 100644 --- a/po/fr.po +++ b/po/fr.po @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" -"PO-Revision-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" +"PO-Revision-Date: 2013-06-05 10:12+0200\n" "Last-Translator: Sebastien Helleu \n" "Language-Team: weechat-dev \n" "Language: fr\n" @@ -4888,7 +4888,8 @@ msgid "" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -4904,7 +4905,8 @@ msgstr "" " -exclude: exclure certains canaux ('*' est autorisé au début ou à la fin " "du nom du canal, pour exclure plusieurs canaux)\n" " commande: commande à exécuter\n" -"paramètres: paramètres pour la commande\n" +"paramètres: paramètres pour la commande (les variables spéciales $nick, " +"$channel et $server sont remplacées par leur valeur)\n" "\n" "Exemples:\n" " exécuter '/me teste' sur tous les canaux:\n" @@ -4925,24 +4927,30 @@ msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" " -exclude: exclude certains serveurs ('*' est autorisé en début ou fin du " "nom du serveur, pour exclure plusieurs serveurs)\n" " commande: commande à exécuter\n" -"paramètres: paramètres pour la commande\n" +"paramètres: paramètres pour la commande (les variables spéciales $nick, " +"$channel et $server sont remplacées par leur valeur)\n" "\n" "Exemples:\n" " changer de pseudo sur tous les serveurs:\n" " /allserv nick newnick\n" " positionner l'absence sur tous les serveurs:\n" -" /allserv away Je suis absent" +" /allserv away Je suis absent\n" +" faire un whois sur mon pseudo sur tous les serveurs:\n" +" /allserv whois $nick" msgid "ban nicks or hosts" msgstr "bannir des pseudos ou hôtes" diff --git a/po/hu.po b/po/hu.po index e468ba940..6bfb8a67d 100644 --- a/po/hu.po +++ b/po/hu.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-05-20 16:54+0200\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -4124,7 +4124,8 @@ msgid "" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -4147,13 +4148,16 @@ msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" #, fuzzy diff --git a/po/it.po b/po/it.po index fab3dade4..c0ff77d6f 100644 --- a/po/it.po +++ b/po/it.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-05-20 16:54+0200\n" "Last-Translator: Marco Paolone \n" "Language-Team: weechat-dev \n" @@ -4795,12 +4795,14 @@ msgstr "esegue un comando su tutti i canali di tutti i server connessi" msgid "[-current] [-exclude=[,...]] []" msgstr "[-current] [-exclude=[,...]] []" +#, fuzzy msgid "" " -current: execute command for channels of current server only\n" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -4832,17 +4834,21 @@ msgstr "esegue un comando su tutti i server connessi" msgid "[-exclude=[,...]] []" msgstr "[-exclude=[,...]] []" +#, fuzzy msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" " -exclude: esclude alcuni server ('*' è consentito all'inizio o alla fine " "del nome server, per escludere più server)\n" diff --git a/po/ja.po b/po/ja.po index 0b4c119f8..1ea4ba2b2 100644 --- a/po/ja.po +++ b/po/ja.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-05-20 16:54+0200\n" "Last-Translator: AYANOKOUZI, Ryuunosuke \n" "Language-Team: Japanese \n" @@ -4703,12 +4703,14 @@ msgstr "全てのサーバ、全てのチャンネルに対してコマンドを msgid "[-current] [-exclude=[,...]] []" msgstr "[-current] [-exclude=[,...]] []" +#, fuzzy msgid "" " -current: execute command for channels of current server only\n" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -4740,17 +4742,21 @@ msgstr "全ての接続済みサーバでコマンドを実行" msgid "[-exclude=[,...]] []" msgstr "[-exclude=[,...]] []" +#, fuzzy msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" " -exclude: いくつかのサーバを除外 (複数のサーバを除外するには '*' をサーバ名" "の最初と最後につける)\n" diff --git a/po/pl.po b/po/pl.po index 240ff5df0..2023396f5 100644 --- a/po/pl.po +++ b/po/pl.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-05-20 16:54+0200\n" "Last-Translator: Krzysztof Korościk \n" "Language-Team: weechat-dev \n" @@ -4807,12 +4807,14 @@ msgstr "wykonuje komendę na wszystkich kanałach na połączonych serwerach" msgid "[-current] [-exclude=[,...]] []" msgstr "[-current] [-exclude=[,...]] []" +#, fuzzy msgid "" " -current: execute command for channels of current server only\n" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -4844,17 +4846,21 @@ msgstr "wykonuje komendę na wszystkich połączonych serwerach" msgid "[-exclude=[,...]] []" msgstr "[-exclude=[,...]] []" +#, fuzzy msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" " -exclude: wyklucza niektóre serwery ('*' jest dozwolone na początku lub " "końcu nazwy, w celu wykluczenia wielu serwerów)\n" diff --git a/po/pt_BR.po b/po/pt_BR.po index 383a03877..a860d9e21 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-05-20 16:55+0200\n" "Last-Translator: Sergio Durigan Junior \n" "Language-Team: weechat-dev \n" @@ -4551,7 +4551,8 @@ msgid "" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -4573,13 +4574,16 @@ msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" msgid "ban nicks or hosts" diff --git a/po/ru.po b/po/ru.po index 9fd1ad816..e7d6cb1c9 100644 --- a/po/ru.po +++ b/po/ru.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-05-20 16:55+0200\n" "Last-Translator: Aleksey V Zapparov AKA ixti \n" "Language-Team: weechat-dev \n" @@ -4160,7 +4160,8 @@ msgid "" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -4183,13 +4184,16 @@ msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" #, fuzzy diff --git a/po/weechat.pot b/po/weechat.pot index 9ff0ab1f8..75e2654c9 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.1-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-06-02 10:52+0200\n" +"POT-Creation-Date: 2013-06-05 10:12+0200\n" "PO-Revision-Date: 2013-02-14 18:20+0100\n" "Last-Translator: FULL NAME \n" "Language-Team: weechat-dev \n" @@ -3713,7 +3713,8 @@ msgid "" " -exclude: exclude some channels ('*' is allowed at beginning or end of " "channel name, to exclude many channels)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " execute '/me is testing' on all channels:\n" @@ -3735,13 +3736,16 @@ msgid "" " -exclude: exclude some servers ('*' is allowed at beginning or end of " "server name, to exclude many servers)\n" " command: command to execute\n" -"arguments: arguments for command\n" +"arguments: arguments for command (special variables $nick, $channel and " +"$server are replaced by their value)\n" "\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" -" /allserv away I'm away" +" /allserv away I'm away\n" +" do a whois on my nick on all servers:\n" +" /allserv whois $nick" msgstr "" msgid "ban nicks or hosts" diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 03af690ee..46dd7feee 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -39,6 +39,7 @@ #include "irc-config.h" #include "irc-ignore.h" #include "irc-input.h" +#include "irc-message.h" #include "irc-msgbuffer.h" #include "irc-nick.h" #include "irc-notify.h" @@ -114,6 +115,7 @@ irc_command_admin (void *data, struct t_gui_buffer *buffer, int argc, * Executes a command on all channels. * * If server is NULL, executes command on all channels of all connected servers. + * Special variables $server/$channel/$nick are replaced in command. */ void @@ -123,7 +125,7 @@ irc_command_exec_all_channels (struct t_irc_server *server, { struct t_irc_server *ptr_server, *next_server; struct t_irc_channel *ptr_channel, *next_channel; - char **channels, *str_command; + char **channels, *str_command, *cmd_vars_replaced; int num_channels, length, excluded, i; if (!command || !command[0]) @@ -175,7 +177,13 @@ irc_command_exec_all_channels (struct t_irc_server *server, } if (!excluded) { - weechat_command (ptr_channel->buffer, str_command); + cmd_vars_replaced = irc_message_replace_vars (ptr_server, + ptr_channel, + str_command); + weechat_command (ptr_channel->buffer, + (cmd_vars_replaced) ? cmd_vars_replaced : str_command); + if (cmd_vars_replaced) + free (cmd_vars_replaced); } } @@ -244,13 +252,15 @@ irc_command_allchan (void *data, struct t_gui_buffer *buffer, int argc, /* * Executes a command on all connected channels. + * + * Special variables $server/$channel/$nick are replaced in command. */ void irc_command_exec_all_servers (const char *exclude_servers, const char *command) { struct t_irc_server *ptr_server, *next_server; - char **servers, *str_command; + char **servers, *str_command, *cmd_vars_replaced; int num_servers, length, excluded, i; if (!command || !command[0]) @@ -293,7 +303,13 @@ irc_command_exec_all_servers (const char *exclude_servers, const char *command) } if (!excluded) { - weechat_command (ptr_server->buffer, str_command); + cmd_vars_replaced = irc_message_replace_vars (ptr_server, + NULL, + str_command); + weechat_command (ptr_server->buffer, + (cmd_vars_replaced) ? cmd_vars_replaced : str_command); + if (cmd_vars_replaced) + free (cmd_vars_replaced); } } @@ -5550,7 +5566,9 @@ irc_command_init () "allowed at beginning or end of channel name, to " "exclude many channels)\n" " command: command to execute\n" - "arguments: arguments for command\n\n" + "arguments: arguments for command (special variables " + "$nick, $channel and $server are replaced by their " + "value)\n\n" "Examples:\n" " execute '/me is testing' on all channels:\n" " /allchan me is testing\n" @@ -5568,12 +5586,16 @@ irc_command_init () "allowed at beginning or end of server name, to " "exclude many servers)\n" " command: command to execute\n" - "arguments: arguments for command\n\n" + "arguments: arguments for command (special variables " + "$nick, $channel and $server are replaced by their " + "value)\n\n" "Examples:\n" " change nick on all servers:\n" " /allserv nick newnick\n" " set away on all servers:\n" - " /allserv away I'm away"), + " /allserv away I'm away\n" + " do a whois on my nick on all servers:\n" + " /allserv whois $nick"), NULL, &irc_command_allserv, NULL); weechat_hook_command_run ("/away", &irc_command_run_away, NULL); weechat_hook_command ("ban",