From a34959a619be41796b3de988c71717d1b313db2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Wed, 3 Feb 2021 18:30:32 +0100 Subject: [PATCH] irc: add info "irc_is_message_ignored" --- ChangeLog.adoc | 1 + doc/de/includes/autogen_api_infos.de.adoc | 2 + doc/en/includes/autogen_api_infos.en.adoc | 2 + doc/fr/includes/autogen_api_infos.fr.adoc | 2 + doc/it/includes/autogen_api_infos.it.adoc | 2 + doc/ja/includes/autogen_api_infos.ja.adoc | 2 + doc/pl/includes/autogen_api_infos.pl.adoc | 2 + po/cs.po | 8 +++- po/de.po | 8 +++- po/es.po | 8 +++- po/fr.po | 10 +++- po/hu.po | 8 +++- po/it.po | 8 +++- po/ja.po | 8 +++- po/pl.po | 8 +++- po/pt.po | 8 +++- po/pt_BR.po | 8 +++- po/ru.po | 8 +++- po/tr.po | 8 +++- po/weechat.pot | 8 +++- src/plugins/irc/irc-info.c | 46 ++++++++++++++++++ src/plugins/irc/irc-message.c | 52 +++++++++++++++++++++ src/plugins/irc/irc-message.h | 2 + src/plugins/irc/irc-protocol.c | 3 +- tests/unit/plugins/irc/test-irc-message.cpp | 41 ++++++++++++++++ 25 files changed, 248 insertions(+), 15 deletions(-) diff --git a/ChangeLog.adoc b/ChangeLog.adoc index 5bebb3580..e4e851f11 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -25,6 +25,7 @@ New features:: * core: add buffer local variable "completion_default_template" (evaluated) to override the value of option "weechat.completion.default_template" (issue #1600) * core: add option "recreate" in command /filter * core: add evaluation of conditions in evaluation of expressions with "eval_cond:" (issue #1582) + * irc: add info "irc_is_message_ignored" * irc: add server option "default_chantypes", used when the server does not send them in message 005 (issue #1610) * trigger: add variable "${tg_trigger_name}" in command trigger evaluated strings (issue #1580) diff --git a/doc/de/includes/autogen_api_infos.de.adoc b/doc/de/includes/autogen_api_infos.de.adoc index a074d0a97..c0f3936f6 100644 --- a/doc/de/includes/autogen_api_infos.de.adoc +++ b/doc/de/includes/autogen_api_infos.de.adoc @@ -20,6 +20,8 @@ | irc | irc_is_channel | 1, falls die Zeichenkette ein gültiger IRC-Channelname für den Server ist | Server,Channel (Server ist optional) +| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message) + | irc | irc_is_nick | 1, falls die Zeichenkette ein gültiger IRC Nickname ist | Server,Nickname (Server ist optional) | irc | irc_nick | aktuellen Nicknamen für den Server erhalten | Servername diff --git a/doc/en/includes/autogen_api_infos.en.adoc b/doc/en/includes/autogen_api_infos.en.adoc index 6d8015437..ca013c27c 100644 --- a/doc/en/includes/autogen_api_infos.en.adoc +++ b/doc/en/includes/autogen_api_infos.en.adoc @@ -20,6 +20,8 @@ | irc | irc_is_channel | 1 if string is a valid IRC channel name for server | server,channel (server is optional) +| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message) + | irc | irc_is_nick | 1 if string is a valid IRC nick name | server,nickname (server is optional) | irc | irc_nick | get current nick on a server | server name diff --git a/doc/fr/includes/autogen_api_infos.fr.adoc b/doc/fr/includes/autogen_api_infos.fr.adoc index 7ca361116..0ca565f1f 100644 --- a/doc/fr/includes/autogen_api_infos.fr.adoc +++ b/doc/fr/includes/autogen_api_infos.fr.adoc @@ -20,6 +20,8 @@ | irc | irc_is_channel | 1 si la chaîne est un nom de canal IRC valide pour le serveur | serveur,canal (le serveur est optionnel) +| irc | irc_is_message_ignored | 1 si le pseudo est ignoré (le message n'est pas affiché) | serveur,message (message est le message brut IRC) + | irc | irc_is_nick | 1 si la chaîne est un pseudo IRC valide | serveur,pseudo (le serveur est optionnel) | irc | irc_nick | retourne le pseudo utilisé actuellement sur un serveur | nom de serveur diff --git a/doc/it/includes/autogen_api_infos.it.adoc b/doc/it/includes/autogen_api_infos.it.adoc index 39c99079f..763351bcd 100644 --- a/doc/it/includes/autogen_api_infos.it.adoc +++ b/doc/it/includes/autogen_api_infos.it.adoc @@ -20,6 +20,8 @@ | irc | irc_is_channel | 1 se la stringa è il nome di un canale IRC valido per il server | server,canale (server è opzionale) +| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message) + | irc | irc_is_nick | 1 se la stringa è un nick IRC valido | server,nickname (server is optional) | irc | irc_nick | ottiene nick corrente su un server | nome server diff --git a/doc/ja/includes/autogen_api_infos.ja.adoc b/doc/ja/includes/autogen_api_infos.ja.adoc index 900f8d1f4..c428df33f 100644 --- a/doc/ja/includes/autogen_api_infos.ja.adoc +++ b/doc/ja/includes/autogen_api_infos.ja.adoc @@ -20,6 +20,8 @@ | irc | irc_is_channel | 文字列がサーバの有効な IRC チャンネル名なら 1 | サーバ、チャンネル (サーバは任意) +| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message) + | irc | irc_is_nick | 文字列が有効な IRC ニックネームなら 1 | server,nickname (server is optional) | irc | irc_nick | あるサーバの現在のニックネームを取得 | サーバ名 diff --git a/doc/pl/includes/autogen_api_infos.pl.adoc b/doc/pl/includes/autogen_api_infos.pl.adoc index b8e32f3fb..fc985142c 100644 --- a/doc/pl/includes/autogen_api_infos.pl.adoc +++ b/doc/pl/includes/autogen_api_infos.pl.adoc @@ -20,6 +20,8 @@ | irc | irc_is_channel | 1 jeśli ciąg jest poprawną nazwą kanału IRC dla serwera | serwer,kanał (serwer jest opcjonalny) +| irc | irc_is_message_ignored | 1 if the nick is ignored (message is not displayed) | server,message (message is the raw IRC message) + | irc | irc_is_nick | 1 jeśli ciąg jest poprawną nazwą użytkownika IRC | serwer,nick (serwer jest opcjonalny) | irc | irc_nick | pobiera aktualny nick z serwera | nazwa serwera diff --git a/po/cs.po b/po/cs.po index 323c7aae1..9e4ba43ad 100644 --- a/po/cs.po +++ b/po/cs.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Ondřej Súkup \n" "Language-Team: weechat-dev \n" @@ -8939,6 +8939,12 @@ msgstr "server,vlasnost" msgid "value of feature, if supported by server (from IRC message 005)" msgstr "hodnota funkce, pokud je podporována serverem (z IRC zprávy 005)" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + msgid "parse an IRC message" msgstr "rozdělit IRC zprávu" diff --git a/po/de.po b/po/de.po index 9cda43e47..8c2fa18c5 100644 --- a/po/de.po +++ b/po/de.po @@ -24,7 +24,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2021-01-31 10:32+0100\n" "Last-Translator: Nils Görs \n" "Language-Team: German \n" @@ -10802,6 +10802,12 @@ msgstr "" "Wert der Funktion, sofern es vom Server unterstützt wird (durch IRC Message " "005)" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + msgid "parse an IRC message" msgstr "Parse eine IRC Nachricht" diff --git a/po/es.po b/po/es.po index 5c42ded56..e83b1ddc4 100644 --- a/po/es.po +++ b/po/es.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Elián Hanisch \n" "Language-Team: weechat-dev \n" @@ -9240,6 +9240,12 @@ msgstr "" "valor de la característica, si es soportada por el servidor (desde el " "mensaje IRC 005)" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + msgid "parse an IRC message" msgstr "analiza un mensaje IRC" diff --git a/po/fr.po b/po/fr.po index f1821ff10..9590a7907 100644 --- a/po/fr.po +++ b/po/fr.po @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" -"PO-Revision-Date: 2021-01-30 09:54+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"PO-Revision-Date: 2021-02-03 18:29+0100\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" "Language: fr\n" @@ -10555,6 +10555,12 @@ msgid "value of feature, if supported by server (from IRC message 005)" msgstr "" "valeur de la fonctionnalité, si supportée par le serveur (du message IRC 005)" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "1 si le pseudo est ignoré (le message n'est pas affiché)" + +msgid "server,message (message is the raw IRC message)" +msgstr "serveur,message (message est le message brut IRC)" + msgid "parse an IRC message" msgstr "analyse un message IRC" diff --git a/po/hu.po b/po/hu.po index c992ad2fe..3f8d8cb72 100644 --- a/po/hu.po +++ b/po/hu.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -8328,6 +8328,12 @@ msgstr "cél: szerver neve" msgid "value of feature, if supported by server (from IRC message 005)" msgstr "" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + #, fuzzy msgid "parse an IRC message" msgstr "üzenet: küldendő üzenet" diff --git a/po/it.po b/po/it.po index 094483642..203d81ee2 100644 --- a/po/it.po +++ b/po/it.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Esteban I. Ruiz Moreno \n" "Language-Team: weechat-dev \n" @@ -9433,6 +9433,12 @@ msgid "value of feature, if supported by server (from IRC message 005)" msgstr "" "valore della caratteristica, se supportata dal servre (dal messaggio IRC 005)" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + msgid "parse an IRC message" msgstr "controlla un messaggio IRC" diff --git a/po/ja.po b/po/ja.po index 7c46eda53..59b771e4d 100644 --- a/po/ja.po +++ b/po/ja.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: AYANOKOUZI, Ryuunosuke \n" "Language-Team: Japanese \n" "Language-Team: Polish \n" @@ -10310,6 +10310,12 @@ msgstr "serwer,właściwość" msgid "value of feature, if supported by server (from IRC message 005)" msgstr "wartość opcji, jeśli jest wpierana przez serwer (z wiadomości IRC 005)" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + msgid "parse an IRC message" msgstr "przetwarza wiadomość IRC" diff --git a/po/pt.po b/po/pt.po index 9ba4cabf9..781769fc2 100644 --- a/po/pt.po +++ b/po/pt.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Vasco Almeida \n" "Language-Team: Portuguese <>\n" @@ -9889,6 +9889,12 @@ msgid "value of feature, if supported by server (from IRC message 005)" msgstr "" "valor da funcionalidade, se suportada pelo servidor (da mensagem de IRC 005)" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + msgid "parse an IRC message" msgstr "analisar um mensagem de IRC" diff --git a/po/pt_BR.po b/po/pt_BR.po index fb5419504..72d7107f0 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2020-04-18 11:34+0200\n" "Last-Translator: Eduardo Elias \n" "Language-Team: weechat-dev \n" @@ -8764,6 +8764,12 @@ msgstr "" "valor da funcionalidade, se suportada pelo servidor (da \"message 005\" do " "IRC)" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + msgid "parse an IRC message" msgstr "interpretar uma mensagem IRC" diff --git a/po/ru.po b/po/ru.po index 32b5fc6b8..16951dce5 100644 --- a/po/ru.po +++ b/po/ru.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Aleksey V Zapparov AKA ixti \n" "Language-Team: weechat-dev \n" @@ -8362,6 +8362,12 @@ msgstr "цель: название сервера" msgid "value of feature, if supported by server (from IRC message 005)" msgstr "" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + #, fuzzy msgid "parse an IRC message" msgstr "сообщение: отправляемое сообщение" diff --git a/po/tr.po b/po/tr.po index 290ee2467..9728cb712 100644 --- a/po/tr.po +++ b/po/tr.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2019-11-03 08:38+0100\n" "Last-Translator: Hasan Kiran \n" "Language-Team: weechat-dev \n" @@ -7563,6 +7563,12 @@ msgstr "" msgid "value of feature, if supported by server (from IRC message 005)" msgstr "" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + msgid "parse an IRC message" msgstr "" diff --git a/po/weechat.pot b/po/weechat.pot index 8955e25de..b2b558e61 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-01-30 09:32+0100\n" +"POT-Creation-Date: 2021-02-03 18:29+0100\n" "PO-Revision-Date: 2014-08-16 10:27+0200\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" @@ -7421,6 +7421,12 @@ msgstr "" msgid "value of feature, if supported by server (from IRC message 005)" msgstr "" +msgid "1 if the nick is ignored (message is not displayed)" +msgstr "" + +msgid "server,message (message is the raw IRC message)" +msgstr "" + msgid "parse an IRC message" msgstr "" diff --git a/src/plugins/irc/irc-info.c b/src/plugins/irc/irc-info.c index b0315034e..96974fcbc 100644 --- a/src/plugins/irc/irc-info.c +++ b/src/plugins/irc/irc-info.c @@ -400,6 +400,47 @@ irc_info_info_irc_server_isupport_value_cb (const void *pointer, void *data, return (isupport_value) ? strdup (isupport_value) : NULL; } +/* + * Returns IRC info "irc_is_message_ignored". + */ + +char * +irc_info_info_irc_is_message_ignored_cb (const void *pointer, void *data, + const char *info_name, + const char *arguments) +{ + char *pos_comma, *server; + const char *pos_message; + struct t_irc_server *ptr_server; + + /* make C compiler happy */ + (void) pointer; + (void) data; + (void) info_name; + + if (!arguments || !arguments[0]) + return NULL; + + ptr_server = NULL; + pos_message = arguments; + pos_comma = strchr (arguments, ','); + if (!pos_comma) + return NULL; + + pos_message = pos_comma + 1; + server = weechat_strndup (arguments, pos_comma - arguments); + if (server) + { + ptr_server = irc_server_search (server); + free (server); + } + if (!ptr_server) + return NULL; + + return (irc_message_ignored (ptr_server, pos_message)) ? + strdup ("1") : NULL; +} + /* * Returns IRC info with hashtable "irc_message_parse". */ @@ -1129,6 +1170,11 @@ irc_info_init () N_("value of feature, if supported by server (from IRC message 005)"), N_("server,feature"), &irc_info_info_irc_server_isupport_value_cb, NULL, NULL); + weechat_hook_info ( + "irc_is_message_ignored", + N_("1 if the nick is ignored (message is not displayed)"), + N_("server,message (message is the raw IRC message)"), + &irc_info_info_irc_is_channel_cb, NULL, NULL); /* info_hashtable hooks */ weechat_hook_info_hashtable ( diff --git a/src/plugins/irc/irc-message.c b/src/plugins/irc/irc-message.c index 5c27b40dd..36341defd 100644 --- a/src/plugins/irc/irc-message.c +++ b/src/plugins/irc/irc-message.c @@ -27,7 +27,9 @@ #include "../weechat-plugin.h" #include "irc.h" #include "irc-channel.h" +#include "irc-color.h" #include "irc-config.h" +#include "irc-ignore.h" #include "irc-server.h" @@ -538,6 +540,56 @@ irc_message_get_address_from_host (const char *host) return address; } +/* + * Checks if a raw message is ignored (nick ignored on this server/channel). + * + * Returns: + * 0: message not ignored (displayed) + * 1: message ignored (not displayed) + */ + +int +irc_message_ignored (struct t_irc_server *server, const char *message) +{ + char *nick, *host, *host_no_color, *channel; + struct t_irc_channel *ptr_channel; + int ignored; + + if (!server || !message) + return 0; + + /* parse raw message */ + irc_message_parse (server, message, + NULL, NULL, &nick, NULL, &host, + NULL, &channel, NULL, + NULL, NULL, NULL, + NULL, NULL); + + /* remove colors from host */ + host_no_color = (host) ? irc_color_decode (host, 0) : NULL; + + /* search channel */ + ptr_channel = (channel) ? irc_channel_search (server, channel) : NULL; + + /* check if message is ignored or not */ + ignored = irc_ignore_check ( + server, + (ptr_channel) ? ptr_channel->name : channel, + nick, + host_no_color); + + if (nick) + free (nick); + if (host) + free (host); + if (host_no_color) + free (host_no_color); + if (channel) + free (channel); + + return ignored; +} + /* * Replaces special IRC vars ($nick, $channel, $server) in a string. * diff --git a/src/plugins/irc/irc-message.h b/src/plugins/irc/irc-message.h index 69b75778d..5b118128b 100644 --- a/src/plugins/irc/irc-message.h +++ b/src/plugins/irc/irc-message.h @@ -38,6 +38,8 @@ extern char *irc_message_convert_charset (const char *message, const char *modifier_data); extern const char *irc_message_get_nick_from_host (const char *host); extern const char *irc_message_get_address_from_host (const char *host); +extern int irc_message_ignored (struct t_irc_server *server, + const char *message); extern char *irc_message_replace_vars (struct t_irc_server *server, const char *channel_name, const char *string); diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c index 9713a6a49..5be5796f4 100644 --- a/src/plugins/irc/irc-protocol.c +++ b/src/plugins/irc/irc-protocol.c @@ -6679,7 +6679,8 @@ irc_protocol_recv_command (struct t_irc_server *server, message_ignored = irc_ignore_check ( server, (ptr_channel) ? ptr_channel->name : msg_channel, - nick, host_no_color); + nick, + host_no_color); /* send signal with received command, even if command is ignored */ irc_server_send_signal (server, "irc_raw_in", msg_command, diff --git a/tests/unit/plugins/irc/test-irc-message.cpp b/tests/unit/plugins/irc/test-irc-message.cpp index 8abb8dc0a..c23c65b39 100644 --- a/tests/unit/plugins/irc/test-irc-message.cpp +++ b/tests/unit/plugins/irc/test-irc-message.cpp @@ -29,6 +29,7 @@ extern "C" #include "src/core/wee-hashtable.h" #include "src/core/wee-hook.h" #include "src/plugins/irc/irc-config.h" +#include "src/plugins/irc/irc-ignore.h" #include "src/plugins/irc/irc-message.h" #include "src/plugins/irc/irc-server.h" } @@ -647,6 +648,46 @@ TEST(IrcMessage, GetAddressFromHost) irc_message_get_address_from_host (NICK_256_WITH_SPACE)); } +/* + * Tests functions: + * irc_message_ignored + */ + +TEST(IrcMessage, Ignored) +{ + struct t_irc_server *server; + struct t_irc_ignore *ignore1, *ignore2; + + server = irc_server_alloc ("test_ignore"); + CHECK(server); + + ignore1 = irc_ignore_new ("^alice@host1$", "test_ignore", "#test1"); + ignore2 = irc_ignore_new ("^bob@host2$", "test_ignore", "#test2"); + + LONGS_EQUAL(0, irc_message_ignored (NULL, NULL)); + LONGS_EQUAL(0, irc_message_ignored (NULL, "")); + LONGS_EQUAL(0, irc_message_ignored (NULL, + ":alice@host1 PRIVMSG #test1 :hi!")); + + LONGS_EQUAL(1, irc_message_ignored (server, + ":alice@host1 PRIVMSG #test1 :hi!")); + LONGS_EQUAL(0, irc_message_ignored (server, + ":alice@host1 PRIVMSG #test :hi!")); + LONGS_EQUAL(0, irc_message_ignored (server, + ":alice@host2 PRIVMSG #test1 :hi!")); + + LONGS_EQUAL(1, irc_message_ignored (server, + ":bob@host2 PRIVMSG #test2 :hi!")); + LONGS_EQUAL(0, irc_message_ignored (server, + ":bob@host2 PRIVMSG #test :hi!")); + LONGS_EQUAL(0, irc_message_ignored (server, + ":bob2@host2 PRIVMSG #test2 :hi!")); + + irc_ignore_free (ignore1); + irc_ignore_free (ignore2); + irc_server_free (server); +} + /* * Tests functions: * irc_message_replace_vars