diff --git a/ChangeLog b/ChangeLog index c652f8a53..48c99d365 100644 --- a/ChangeLog +++ b/ChangeLog @@ -61,6 +61,8 @@ Version 0.3.2 (under dev!) (bug #28741) * irc: add new option irc.look.part_closes_buffer to close buffer when /part is issued on channel (task #10295) +* irc: fix command /list: send channel and server name given as argument, and + use separate option "-re" to allow a regex * irc: fix PART message received on Undernet server (bug #28825) * irc: fix bug with /away -all: set or unset future away for disconnected servers (bug #29022) diff --git a/doc/en/autogen/user/irc_commands.txt b/doc/en/autogen/user/irc_commands.txt index 6b85f12f9..134c1b425 100644 --- a/doc/en/autogen/user/irc_commands.txt +++ b/doc/en/autogen/user/irc_commands.txt @@ -246,13 +246,22 @@ server_mask: list of servers must match this mask ........................................ -• *`/list`* `[channel[,channel] [server]]`:: +• *`/list`* `[channel[,channel] [server] [-re regexp]]`:: ........................................ list channels and their topic - channel: channel to list (a regexp is allowed) - server: server name + channel: channel to list + server: server name + regexp: regular expression used to filter results + + Examples: + list all channels on server (can be very slow on large networks): + /list + list channel #weechat: + /list #weechat + list all channels beginning with "#weechat" (can be very slow on large networks): + /list -re #weechat.* ........................................ • *`/lusers`* `[mask [target]]`:: diff --git a/doc/fr/autogen/user/irc_commands.txt b/doc/fr/autogen/user/irc_commands.txt index 349a49ec6..f0e1d994f 100644 --- a/doc/fr/autogen/user/irc_commands.txt +++ b/doc/fr/autogen/user/irc_commands.txt @@ -246,13 +246,22 @@ masque_serveur: liste des serveurs correspondant au masque ........................................ -• *`/list`* `[canal[,canal] [serveur]]`:: +• *`/list`* `[canal[,canal] [serveur] [-re regexp]]`:: ........................................ lister les canaux et leur titre - canal: canal à lister (une expression régulière est acceptée) + canal: canal à lister serveur: nom du serveur + regexp: expression régulière utilisée pour filtrer les résultats + + Exemples: + lister tous les canaux du serveur (peut être très lent pour les grands réseaux): + /list + lister le canal #weechat: + /list #weechat + lister tous les canaux commençant par "#weechat" (peut être très lent pour les grands réseaux): + /list -re #weechat.* ........................................ • *`/lusers`* `[masque [cible]]`:: diff --git a/doc/it/autogen/user/irc_commands.txt b/doc/it/autogen/user/irc_commands.txt index 79ac6d089..be518618f 100644 --- a/doc/it/autogen/user/irc_commands.txt +++ b/doc/it/autogen/user/irc_commands.txt @@ -246,13 +246,22 @@ mask_server: elenco dei server devono corrispondere a questa mask ........................................ -• *`/list`* `[canale[,canale] [server]`:: +• *`/list`* `[channel[,channel] [server] [-re regexp]]`:: ........................................ elenca i canali ed i loro argomenti - canale: canale da elencare (è consentita un'espressione regolare) - server: nome del server + channel: channel to list + server: server name + regexp: regular expression used to filter results + + Examples: + list all channels on server (can be very slow on large networks): + /list + list channel #weechat: + /list #weechat + list all channels beginning with "#weechat" (can be very slow on large networks): + /list -re #weechat.* ........................................ • *`/lusers`* `[mask [destinazione]]`:: diff --git a/po/cs.po b/po/cs.po index 7d0949304..80aec1f64 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-03-26 19:57+0100\n" +"POT-Creation-Date: 2010-03-29 18:13+0200\n" "PO-Revision-Date: 2010-03-23 10:19+0100\n" "Last-Translator: Jiri Golembiovsky \n" "Language-Team: weechat-dev \n" @@ -3506,15 +3506,24 @@ msgstr "" msgid "list channels and their topic" msgstr "vypsat kanály a jejich témata" -msgid "[channel[,channel] [server]]" +#, fuzzy +msgid "[channel[,channel] [server] [-re regexp]]" msgstr "[kanál,[,kanál] [server]]" msgid "" -"channel: channel to list (a regexp is allowed)\n" -"server: server name" +"channel: channel to list\n" +" server: server name\n" +" regexp: regular expression used to filter results\n" +"\n" +"Examples:\n" +" list all channels on server (can be very slow on large networks):\n" +" /list\n" +" list channel #weechat:\n" +" /list #weechat\n" +" list all channels beginning with \"#weechat\" (can be very slow on large " +"networks):\n" +" /list -re #weechat.*" msgstr "" -"kanál: kanál, který se má vypsat (regulární výraz je povolen)\n" -"server: jméno serveru" msgid "get statistics about the size of the IRC network" msgstr "získat statistiku o velikosti IRC sítě" @@ -6377,6 +6386,13 @@ msgstr "Argumenty" msgid "Pointer" msgstr "Ukazatel" +#~ msgid "" +#~ "channel: channel to list (a regexp is allowed)\n" +#~ "server: server name" +#~ msgstr "" +#~ "kanál: kanál, který se má vypsat (regulární výraz je povolen)\n" +#~ "server: jméno serveru" + #, fuzzy #~ msgid "No key added or redefined" #~ msgstr "Žádné klávesové zkratky nejsou definovány" diff --git a/po/de.po b/po/de.po index bee9f067e..fc7a5460a 100644 --- a/po/de.po +++ b/po/de.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-03-26 19:57+0100\n" +"POT-Creation-Date: 2010-03-29 18:13+0200\n" "PO-Revision-Date: 2010-03-23 15:44+0100\n" "Last-Translator: Nils G \n" "Language-Team: weechat-dev \n" @@ -3669,15 +3669,24 @@ msgstr "" msgid "list channels and their topic" msgstr "Channels mit ihren Topics auflisten" -msgid "[channel[,channel] [server]]" +#, fuzzy +msgid "[channel[,channel] [server] [-re regexp]]" msgstr "[Channel[,Channel] [Server]]" msgid "" -"channel: channel to list (a regexp is allowed)\n" -"server: server name" +"channel: channel to list\n" +" server: server name\n" +" regexp: regular expression used to filter results\n" +"\n" +"Examples:\n" +" list all channels on server (can be very slow on large networks):\n" +" /list\n" +" list channel #weechat:\n" +" /list #weechat\n" +" list all channels beginning with \"#weechat\" (can be very slow on large " +"networks):\n" +" /list -re #weechat.*" msgstr "" -"Channel: aufzulistender Channel (reguläre Ausdrücke sind möglich)\n" -"Server: Servername" msgid "get statistics about the size of the IRC network" msgstr "Statistik über die Größe dieses IRC-Netzwerks abfragen" @@ -6620,6 +6629,13 @@ msgstr "Argumente" msgid "Pointer" msgstr "Pointer" +#~ msgid "" +#~ "channel: channel to list (a regexp is allowed)\n" +#~ "server: server name" +#~ msgstr "" +#~ "Channel: aufzulistender Channel (reguläre Ausdrücke sind möglich)\n" +#~ "Server: Servername" + #, fuzzy #~ msgid "No key added or redefined" #~ msgstr "Keine Tastenbelegung definiert" diff --git a/po/es.po b/po/es.po index f230565d5..5315e6ac8 100644 --- a/po/es.po +++ b/po/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-03-26 19:57+0100\n" +"POT-Creation-Date: 2010-03-29 18:13+0200\n" "PO-Revision-Date: 2010-03-23 10:20+0100\n" "Last-Translator: Elián Hanisch \n" "Language-Team: weechat-dev \n" @@ -3535,15 +3535,24 @@ msgstr "" msgid "list channels and their topic" msgstr "lista canales y sus temas" -msgid "[channel[,channel] [server]]" +#, fuzzy +msgid "[channel[,channel] [server] [-re regexp]]" msgstr "[canal[,canal] [servidor]]" msgid "" -"channel: channel to list (a regexp is allowed)\n" -"server: server name" +"channel: channel to list\n" +" server: server name\n" +" regexp: regular expression used to filter results\n" +"\n" +"Examples:\n" +" list all channels on server (can be very slow on large networks):\n" +" /list\n" +" list channel #weechat:\n" +" /list #weechat\n" +" list all channels beginning with \"#weechat\" (can be very slow on large " +"networks):\n" +" /list -re #weechat.*" msgstr "" -" canal: canal a listar (se permite una expresión regular)\n" -"servidor: nombre del servidor" msgid "get statistics about the size of the IRC network" msgstr "obtener estadísticas sobre el tamaño de la red IRC" @@ -6459,6 +6468,13 @@ msgstr "[argumentos]" msgid "Pointer" msgstr "entero" +#~ msgid "" +#~ "channel: channel to list (a regexp is allowed)\n" +#~ "server: server name" +#~ msgstr "" +#~ " canal: canal a listar (se permite una expresión regular)\n" +#~ "servidor: nombre del servidor" + #, fuzzy #~ msgid "No key added or redefined" #~ msgstr "Ningún atajo definido" diff --git a/po/fr.po b/po/fr.po index b618be1d9..cfe609d48 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-03-26 19:57+0100\n" -"PO-Revision-Date: 2010-03-26 19:58+0100\n" +"POT-Creation-Date: 2010-03-29 18:13+0200\n" +"PO-Revision-Date: 2010-03-29 18:16+0200\n" "Last-Translator: FlashCode \n" "Language-Team: weechat-dev \n" "MIME-Version: 1.0\n" @@ -3636,15 +3636,36 @@ msgstr "" msgid "list channels and their topic" msgstr "lister les canaux et leur titre" -msgid "[channel[,channel] [server]]" -msgstr "[canal[,canal] [serveur]]" +msgid "[channel[,channel] [server] [-re regexp]]" +msgstr "[canal[,canal] [serveur] [-re regexp]]" msgid "" -"channel: channel to list (a regexp is allowed)\n" -"server: server name" +"channel: channel to list\n" +" server: server name\n" +" regexp: regular expression used to filter results\n" +"\n" +"Examples:\n" +" list all channels on server (can be very slow on large networks):\n" +" /list\n" +" list channel #weechat:\n" +" /list #weechat\n" +" list all channels beginning with \"#weechat\" (can be very slow on large " +"networks):\n" +" /list -re #weechat.*" msgstr "" -"canal: canal à lister (une expression régulière est acceptée)\n" -"serveur: nom du serveur" +" canal: canal à lister\n" +"serveur: nom du serveur\n" +" regexp: expression régulière utilisée pour filtrer les résultats\n" +"\n" +"Exemples:\n" +" lister tous les canaux du serveur (peut être très lent pour les grands " +"réseaux):\n" +" /list\n" +" lister le canal #weechat:\n" +" /list #weechat\n" +" lister tous les canaux commençant par \"#weechat\" (peut être très lent " +"pour les grands réseaux):\n" +" /list -re #weechat.*" msgid "get statistics about the size of the IRC network" msgstr "obtenir des statistiques sur la taille du réseau IRC" @@ -6564,5 +6585,12 @@ msgstr "Paramètres" msgid "Pointer" msgstr "Pointeur" +#~ msgid "" +#~ "channel: channel to list (a regexp is allowed)\n" +#~ "server: server name" +#~ msgstr "" +#~ "canal: canal à lister (une expression régulière est acceptée)\n" +#~ "serveur: nom du serveur" + #~ msgid "No key added or redefined" #~ msgstr "Pas de touche ajoutée ou redéfinie" diff --git a/po/hu.po b/po/hu.po index 2d1b0e2ed..a8659a1ae 100644 --- a/po/hu.po +++ b/po/hu.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-03-26 19:57+0100\n" +"POT-Creation-Date: 2010-03-29 18:13+0200\n" "PO-Revision-Date: 2010-03-23 10:20+0100\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -3350,15 +3350,24 @@ msgstr "" msgid "list channels and their topic" msgstr "szobák listája témájukkal együtt" -msgid "[channel[,channel] [server]]" +#, fuzzy +msgid "[channel[,channel] [server] [-re regexp]]" msgstr "[szoba[,szoba] [szerver]]" msgid "" -"channel: channel to list (a regexp is allowed)\n" -"server: server name" +"channel: channel to list\n" +" server: server name\n" +" regexp: regular expression used to filter results\n" +"\n" +"Examples:\n" +" list all channels on server (can be very slow on large networks):\n" +" /list\n" +" list channel #weechat:\n" +" /list #weechat\n" +" list all channels beginning with \"#weechat\" (can be very slow on large " +"networks):\n" +" /list -re #weechat.*" msgstr "" -" szoba: listázandó szoba (regexp engedélyezett)\n" -"szerver: szerver neve" msgid "get statistics about the size of the IRC network" msgstr "statisztika gyűjtése az IRC hálózat méretéről" @@ -6246,6 +6255,13 @@ msgstr "fogadó típusa [paraméterek]" msgid "Pointer" msgstr "perc" +#~ msgid "" +#~ "channel: channel to list (a regexp is allowed)\n" +#~ "server: server name" +#~ msgstr "" +#~ " szoba: listázandó szoba (regexp engedélyezett)\n" +#~ "szerver: szerver neve" + #, fuzzy #~ msgid "No key added or redefined" #~ msgstr "Nincs aliasz definiálva.\n" diff --git a/po/it.po b/po/it.po index 57daa68ea..63ce0a1c1 100644 --- a/po/it.po +++ b/po/it.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Weechat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-03-26 19:57+0100\n" +"POT-Creation-Date: 2010-03-29 18:13+0200\n" "PO-Revision-Date: 2010-03-24 14:20+0100\n" "Last-Translator: Marco Paolone \n" "Language-Team: weechat-dev \n" @@ -3595,15 +3595,24 @@ msgstr "" msgid "list channels and their topic" msgstr "elenca i canali ed i loro argomenti" -msgid "[channel[,channel] [server]]" +#, fuzzy +msgid "[channel[,channel] [server] [-re regexp]]" msgstr "[canale[,canale] [server]" msgid "" -"channel: channel to list (a regexp is allowed)\n" -"server: server name" +"channel: channel to list\n" +" server: server name\n" +" regexp: regular expression used to filter results\n" +"\n" +"Examples:\n" +" list all channels on server (can be very slow on large networks):\n" +" /list\n" +" list channel #weechat:\n" +" /list #weechat\n" +" list all channels beginning with \"#weechat\" (can be very slow on large " +"networks):\n" +" /list -re #weechat.*" msgstr "" -"canale: canale da elencare (è consentita un'espressione regolare)\n" -"server: nome del server" msgid "get statistics about the size of the IRC network" msgstr "ottiene statistiche sulla dimensione del network IRC" @@ -6502,6 +6511,13 @@ msgstr "Argomenti" msgid "Pointer" msgstr "Puntatore" +#~ msgid "" +#~ "channel: channel to list (a regexp is allowed)\n" +#~ "server: server name" +#~ msgstr "" +#~ "canale: canale da elencare (è consentita un'espressione regolare)\n" +#~ "server: nome del server" + #, fuzzy #~ msgid "No key added or redefined" #~ msgstr "Nessuna combinazione tasti definita" diff --git a/po/pl.po b/po/pl.po index 10dc2324d..409e8368d 100644 --- a/po/pl.po +++ b/po/pl.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-03-26 19:57+0100\n" +"POT-Creation-Date: 2010-03-29 18:13+0200\n" "PO-Revision-Date: 2010-03-23 10:20+0100\n" "Last-Translator: Krzysztof Koroscik \n" "Language-Team: Polish\n" @@ -3541,15 +3541,24 @@ msgstr "" msgid "list channels and their topic" msgstr "wyświetla kanały i ich tematy" -msgid "[channel[,channel] [server]]" +#, fuzzy +msgid "[channel[,channel] [server] [-re regexp]]" msgstr "[kanał[,kanał] [serwer]]" msgid "" -"channel: channel to list (a regexp is allowed)\n" -"server: server name" +"channel: channel to list\n" +" server: server name\n" +" regexp: regular expression used to filter results\n" +"\n" +"Examples:\n" +" list all channels on server (can be very slow on large networks):\n" +" /list\n" +" list channel #weechat:\n" +" /list #weechat\n" +" list all channels beginning with \"#weechat\" (can be very slow on large " +"networks):\n" +" /list -re #weechat.*" msgstr "" -"kanał: kanał do wyświetlenia (dozwolone wyrażenie regularne)\n" -"serwer: nazwa serwera" msgid "get statistics about the size of the IRC network" msgstr "pobiera statystyki o wielkości sieci IRC" @@ -6422,6 +6431,13 @@ msgstr "[argumenty]" msgid "Pointer" msgstr "liczba" +#~ msgid "" +#~ "channel: channel to list (a regexp is allowed)\n" +#~ "server: server name" +#~ msgstr "" +#~ "kanał: kanał do wyświetlenia (dozwolone wyrażenie regularne)\n" +#~ "serwer: nazwa serwera" + #, fuzzy #~ msgid "No key added or redefined" #~ msgstr "Nie zdefiniowano powiązań klawiszy" diff --git a/po/ru.po b/po/ru.po index 95ad1d7e6..44b5238dd 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-03-26 19:57+0100\n" +"POT-Creation-Date: 2010-03-29 18:13+0200\n" "PO-Revision-Date: 2010-03-23 10:20+0100\n" "Last-Translator: Pavel Shevchuk \n" "Language-Team: weechat-dev \n" @@ -3359,15 +3359,24 @@ msgstr "" msgid "list channels and their topic" msgstr "перечислить каналы и их темы" -msgid "[channel[,channel] [server]]" +#, fuzzy +msgid "[channel[,channel] [server] [-re regexp]]" msgstr "[канал[,канал] [сервер]]" msgid "" -"channel: channel to list (a regexp is allowed)\n" -"server: server name" +"channel: channel to list\n" +" server: server name\n" +" regexp: regular expression used to filter results\n" +"\n" +"Examples:\n" +" list all channels on server (can be very slow on large networks):\n" +" /list\n" +" list channel #weechat:\n" +" /list #weechat\n" +" list all channels beginning with \"#weechat\" (can be very slow on large " +"networks):\n" +" /list -re #weechat.*" msgstr "" -" канал: перечисляемый канал (возможно регулярное выражение)\n" -"сервер: название сервера" msgid "get statistics about the size of the IRC network" msgstr "получить статистику о размерах сети IRC" @@ -6244,6 +6253,13 @@ msgstr "адресат тип [аргументы]" msgid "Pointer" msgstr "минута" +#~ msgid "" +#~ "channel: channel to list (a regexp is allowed)\n" +#~ "server: server name" +#~ msgstr "" +#~ " канал: перечисляемый канал (возможно регулярное выражение)\n" +#~ "сервер: название сервера" + #, fuzzy #~ msgid "No key added or redefined" #~ msgstr "Сокращения не заданы.\n" diff --git a/po/weechat.pot b/po/weechat.pot index 7f1f15659..0960fb9a0 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-03-26 19:57+0100\n" +"POT-Creation-Date: 2010-03-29 18:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2925,12 +2925,22 @@ msgstr "" msgid "list channels and their topic" msgstr "" -msgid "[channel[,channel] [server]]" +msgid "[channel[,channel] [server] [-re regexp]]" msgstr "" msgid "" -"channel: channel to list (a regexp is allowed)\n" -"server: server name" +"channel: channel to list\n" +" server: server name\n" +" regexp: regular expression used to filter results\n" +"\n" +"Examples:\n" +" list all channels on server (can be very slow on large networks):\n" +" /list\n" +" list channel #weechat:\n" +" /list #weechat\n" +" list all channels beginning with \"#weechat\" (can be very slow on large " +"networks):\n" +" /list -re #weechat.*" msgstr "" msgid "get statistics about the size of the IRC network" diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 76645b00e..4f5fa1ea2 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -1995,15 +1995,14 @@ int irc_command_list (void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { - char buf[512]; - int ret; + char buf[512], *ptr_channel_name, *ptr_server_name, *ptr_regex; + int i, ret; IRC_BUFFER_GET_SERVER(buffer); IRC_COMMAND_CHECK_SERVER("list", 1); /* make C compiler happy */ (void) data; - (void) argv; if (ptr_server->cmd_list_regexp) { @@ -2014,35 +2013,66 @@ irc_command_list (void *data, struct t_gui_buffer *buffer, int argc, if (argc > 1) { - ptr_server->cmd_list_regexp = malloc (sizeof (*ptr_server->cmd_list_regexp)); - if (ptr_server->cmd_list_regexp) + ptr_channel_name = NULL; + ptr_server_name = NULL; + ptr_regex = NULL; + for (i = 1; i < argc; i++) { - if ((ret = regcomp (ptr_server->cmd_list_regexp, - argv_eol[1], - REG_NOSUB | REG_ICASE)) != 0) + if (weechat_strcasecmp (argv[i], "-re") == 0) { - regerror (ret, ptr_server->cmd_list_regexp, - buf, sizeof(buf)); - weechat_printf (ptr_server->buffer, - _("%s%s: \"%s\" is not a valid regular " - "expression (%s)"), - weechat_prefix ("error"), IRC_PLUGIN_NAME, - argv_eol, buf); - return WEECHAT_RC_OK; + if (i < argc - 1) + { + ptr_regex = argv_eol[i + 1]; + i++; + } } else { - irc_server_sendf (ptr_server, IRC_SERVER_OUTQUEUE_PRIO_HIGH, - "LIST"); + if (!ptr_channel_name) + ptr_channel_name = argv[i]; + else if (!ptr_server_name) + ptr_server_name = argv[i]; } } + if (!ptr_channel_name && !ptr_server_name && !ptr_regex) + { + irc_server_sendf (ptr_server, IRC_SERVER_OUTQUEUE_PRIO_HIGH, "LIST"); + } else { - weechat_printf (ptr_server->buffer, - _("%s%s: not enough memory for regular " - "expression"), - weechat_prefix ("error"), IRC_PLUGIN_NAME); - return WEECHAT_RC_OK; + if (ptr_regex) + { + ptr_server->cmd_list_regexp = malloc (sizeof (*ptr_server->cmd_list_regexp)); + if (ptr_server->cmd_list_regexp) + { + if ((ret = regcomp (ptr_server->cmd_list_regexp, ptr_regex, + REG_NOSUB | REG_ICASE)) != 0) + { + regerror (ret, ptr_server->cmd_list_regexp, + buf, sizeof(buf)); + weechat_printf (ptr_server->buffer, + _("%s%s: \"%s\" is not a valid regular " + "expression (%s)"), + weechat_prefix ("error"), IRC_PLUGIN_NAME, + argv_eol[1], buf); + return WEECHAT_RC_OK; + } + } + else + { + weechat_printf (ptr_server->buffer, + _("%s%s: not enough memory for regular " + "expression"), + weechat_prefix ("error"), IRC_PLUGIN_NAME); + return WEECHAT_RC_OK; + } + } + irc_server_sendf (ptr_server, IRC_SERVER_OUTQUEUE_PRIO_HIGH, + "LIST%s%s%s%s", + (ptr_channel_name) ? " " : "", + (ptr_channel_name) ? ptr_channel_name : "", + (ptr_server_name) ? " " : "", + (ptr_server_name) ? ptr_server_name : ""); } } else @@ -4374,9 +4404,20 @@ irc_command_init () NULL, &irc_command_links, NULL); weechat_hook_command ("list", N_("list channels and their topic"), - N_("[channel[,channel] [server]]"), - N_("channel: channel to list (a regexp is allowed)\n" - "server: server name"), + N_("[channel[,channel] [server] [-re regexp]]"), + N_("channel: channel to list\n" + " server: server name\n" + " regexp: regular expression used to filter " + "results\n\n" + "Examples:\n" + " list all channels on server (can be very slow " + "on large networks):\n" + " /list\n" + " list channel #weechat:\n" + " /list #weechat\n" + " list all channels beginning with \"#weechat\" " + "(can be very slow on large networks):\n" + " /list -re #weechat.*"), NULL, &irc_command_list, NULL); weechat_hook_command ("lusers", N_("get statistics about the size of the IRC "