1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-12 14:14:48 +02:00

irc: add support of capability "batch" (closes #1292)

This commit is contained in:
Sébastien Helleu
2023-05-03 21:49:35 +02:00
parent bd5e8dc33b
commit f6b69c9098
47 changed files with 1494 additions and 239 deletions
+1
View File
@@ -39,6 +39,7 @@ New features::
* api: add optional argument with version in info "version_number"
* alias: use lower case for default aliases, rename all aliases to lower case on upgrade (issue #1872)
* irc: rename "ssl" options to "tls", connect with TLS and port 6697 by default
* irc: add support of capability "batch" (issue #1292)
* irc: add command `/rules` (issue #1864)
* irc: add command `/knock` (issue #7)
* irc: add server option "registered_mode", add fields "authentication_method" and "sasl_mechanism_used" in server (issue #1625)
+13
View File
@@ -3469,6 +3469,7 @@ WeeChat unterstützt folgende https://ircv3.net/irc/[IRCv3 extensions ^↗^,win
* <<irc_ircv3_account_notify,account-notify>>
* <<irc_ircv3_account_tag,account-tag>>
* <<irc_ircv3_away_notify,away-notify>>
* <<irc_ircv3_batch,batch>>
* <<irc_ircv3_cap_notify,cap-notify>>
* <<irc_ircv3_chghost,chghost>>
* <<irc_ircv3_extended_join,extended-join>>
@@ -3552,6 +3553,18 @@ einer bestimmten Farbe in der Nickliste dargestellt. Siehe folgende Optionen:
* <<option_irc.server_default.away_check_max_nicks,irc.server_default.away_check_max_nicks>>
* <<option_weechat.look.item_away_message,weechat.look.item_away_message>>
// TRANSLATION MISSING
[[irc_ircv3_batch]]
===== batch
Specification: https://ircv3.net/specs/extensions/batch[batch ^↗^,window=_blank]
This capability allows the server to send batched events (grouping of several
messages that are related).
For now, WeeChat only stores messages received in a batch and processes as usual
later, when the batch ends.
[[irc_ircv3_cap_notify]]
===== cap-notify
+2
View File
@@ -274,6 +274,7 @@ WeeChat "core" is located in following directories:
|    irc/ | IRC (Internet Relay Chat) plugin.
|       irc.c | Main IRC functions.
|       irc-bar-item.c | IRC bar items.
|       irc-batch.c | IRC batched events.
|       irc-buffer.c | IRC buffers.
|       irc-channel.c | IRC channels.
|       irc-color.c | IRC colors.
@@ -435,6 +436,7 @@ WeeChat "core" is located in following directories:
|          test-gui-nick.cpp | Tests: nicks.
|       plugins/ | Root of unit tests for plugins.
|          irc/ | Root of unit tests for IRC plugin.
|             test-irc-batch.cpp | Tests: IRC batched events.
|             test-irc-buffer.cpp | Tests: IRC buffers.
|             test-irc-channel.cpp | Tests: IRC channels.
|             test-irc-color.cpp | Tests: IRC colors.
+6
View File
@@ -12337,6 +12337,12 @@ List of modifiers used by WeeChat and plugins:
|===
| Modifier | Min WeeChat | Modifier data | String | Output
| [[hook_modifier_irc_batch]] irc_batch | 4.0.0
| Server name + "," + batch type + "," + batch parameters
| Content of multiple messages, separated by a newline char ("\n").
| New content of messages (number can be different), an empty string discards
all messages in the batch.
| [[hook_modifier_irc_in_xxx]] irc_in_xxx ^(1)^ |
| Server name
| Content of message received from IRC server (before charset decoding). +
+12
View File
@@ -3405,6 +3405,7 @@ WeeChat supports the following https://ircv3.net/irc/[IRCv3 extensions ^↗^,wi
* <<irc_ircv3_account_notify,account-notify>>
* <<irc_ircv3_account_tag,account-tag>>
* <<irc_ircv3_away_notify,away-notify>>
* <<irc_ircv3_batch,batch>>
* <<irc_ircv3_cap_notify,cap-notify>>
* <<irc_ircv3_chghost,chghost>>
* <<irc_ircv3_extended_join,extended-join>>
@@ -3489,6 +3490,17 @@ with a specific color in the nicklist, using the following options:
* <<option_irc.server_default.away_check_max_nicks,irc.server_default.away_check_max_nicks>>
* <<option_weechat.look.item_away_message,weechat.look.item_away_message>>
[[irc_ircv3_batch]]
===== batch
Specification: https://ircv3.net/specs/extensions/batch[batch ^↗^,window=_blank]
This capability allows the server to send batched events (grouping of several
messages that are related).
For now, WeeChat only stores messages received in a batch and processes as usual
later, when the batch ends.
[[irc_ircv3_cap_notify]]
===== cap-notify
+2
View File
@@ -276,6 +276,7 @@ Le cœur de WeeChat est situé dans les répertoires suivants :
|    irc/ | Extension IRC (Internet Relay Chat).
|       irc.c | Fonctions principales IRC.
|       irc-bar-item.c | Objets de barre IRC.
|       irc-batch.c | Évènements batch IRC.
|       irc-buffer.c | Tampons IRC.
|       irc-channel.c | Canaux IRC.
|       irc-color.c | Couleurs IRC.
@@ -437,6 +438,7 @@ Le cœur de WeeChat est situé dans les répertoires suivants :
|          test-gui-nick.cpp | Tests : pseudos.
|       plugins/ | Racine des tests unitaires pour les extensions.
|          irc/ | Racine des tests unitaires pour l'extension IRC.
|             test-irc-batch.cpp | Tests : évènements batch IRC.
|             test-irc-buffer.cpp | Tests : tampons IRC.
|             test-irc-channel.cpp | Tests : canaux IRC.
|             test-irc-color.cpp | Tests : couleurs IRC.
+6
View File
@@ -12600,6 +12600,12 @@ Liste des modificateurs utilisés par WeeChat et les extensions :
|===
| Modificateur | WeeChat mini | Données du modificateur | Chaîne | Sortie
| [[hook_modifier_irc_batch]] irc_batch | 4.0.0
| Nom de serveur + "," + type de batch + "," + paramètres du batch
| Contenu de plusieurs messages, séparés par un caractère de retour chariot ("\n").
| Nouveau contenu des messages (le nombre peut être différent), une chaîne vide
annule tous les messages du batch.
| [[hook_modifier_irc_in_xxx]] irc_in_xxx ^(1)^ |
| Nom de serveur
| Contenu du message reçu du serveur IRC (avant décodage du jeu de caractères). +
+12
View File
@@ -3510,6 +3510,7 @@ WeeChat supporte les https://ircv3.net/irc/[extensions IRCv3 ^↗^,window=_blan
* <<irc_ircv3_account_notify,account-notify>>
* <<irc_ircv3_account_tag,account-tag>>
* <<irc_ircv3_away_notify,away-notify>>
* <<irc_ircv3_batch,batch>>
* <<irc_ircv3_cap_notify,cap-notify>>
* <<irc_ircv3_chghost,chghost>>
* <<irc_ircv3_extended_join,extended-join>>
@@ -3595,6 +3596,17 @@ les options suivantes :
* <<option_irc.server_default.away_check_max_nicks,irc.server_default.away_check_max_nicks>>
* <<option_weechat.look.item_away_message,weechat.look.item_away_message>>
[[irc_ircv3_batch]]
===== batch
Spécification : https://ircv3.net/specs/extensions/batch[batch ^↗^,window=_blank]
Cette capacité autorise le serveur à envoyer des évènements "batch" (regroupement
de plusieurs messages qui sont liés).
Pour l'instant, WeeChat stocke seulement ces messages reçus dans un "batch"
et les traite plus tard comme d'habitude, lorsque le "batch" prend fin.
[[irc_ircv3_cap_notify]]
===== cap-notify
+7
View File
@@ -12878,6 +12878,13 @@ List of modifiers used by WeeChat and plugins:
// TRANSLATION MISSING
| Modificatore | Min WeeChat | Dati modificatore | Stringa | Output
// TRANSLATION MISSING
| [[hook_modifier_irc_batch]] irc_batch | 4.0.0
| Server name + "," + batch type + "," + batch parameters
| Content of multiple messages, separated by a newline char ("\n").
| New content of messages (number can be different), an empty string discards
all messages in the batch.
// TRANSLATION MISSING
| [[hook_modifier_irc_in_xxx]] irc_in_xxx ^(1)^ |
| Nome server
+12
View File
@@ -3695,6 +3695,7 @@ WeeChat supports the following https://ircv3.net/irc/[IRCv3 extensions ^↗^,wi
* <<irc_ircv3_account_notify,account-notify>>
* <<irc_ircv3_account_tag,account-tag>>
* <<irc_ircv3_away_notify,away-notify>>
* <<irc_ircv3_batch,batch>>
* <<irc_ircv3_cap_notify,cap-notify>>
* <<irc_ircv3_chghost,chghost>>
* <<irc_ircv3_extended_join,extended-join>>
@@ -3779,6 +3780,17 @@ with a specific color in the nicklist, using the following options:
* <<option_irc.server_default.away_check_max_nicks,irc.server_default.away_check_max_nicks>>
* <<option_weechat.look.item_away_message,weechat.look.item_away_message>>
[[irc_ircv3_batch]]
===== batch
Specification: https://ircv3.net/specs/extensions/batch[batch ^↗^,window=_blank]
This capability allows the server to send batched events (grouping of several
messages that are related).
For now, WeeChat only stores messages received in a batch and processes as usual
later, when the batch ends.
[[irc_ircv3_cap_notify]]
===== cap-notify
+4
View File
@@ -287,6 +287,8 @@ WeeChat "core" は以下のディレクトリに配置されています:
|    irc/ | IRC (Internet Relay Chat) プラグイン
|       irc.c | IRC の主要関数
|       irc-bar-item.c | IRC バー要素
// TRANSLATION MISSING
|       irc-batch.c | IRC batched events.
|       irc-buffer.c | IRC バッファ
|       irc-channel.c | IRC チャンネル
|       irc-color.c | IRC 色
@@ -474,6 +476,8 @@ WeeChat "core" は以下のディレクトリに配置されています:
|       plugins/ | プラグインの単体テストを収める最上位ディレクトリ
|          irc/ | IRC プラグインの単体テストを収める最上位ディレクトリ
// TRANSLATION MISSING
|             test-irc-batch.cpp | Tests: IRC batched events.
// TRANSLATION MISSING
|             test-irc-buffer.cpp | Tests: IRC buffers.
// TRANSLATION MISSING
|             test-irc-channel.cpp | Tests: IRC channels.
+7
View File
@@ -12464,6 +12464,13 @@ WeeChat とプラグインが使う修飾子のリスト:
// TRANSLATION MISSING
| 修飾子 | Min WeeChat | 修飾子データ | 文字列 | 出力
// TRANSLATION MISSING
| [[hook_modifier_irc_batch]] irc_batch | 4.0.0
| Server name + "," + batch type + "," + batch parameters
| Content of multiple messages, separated by a newline char ("\n").
| New content of messages (number can be different), an empty string discards
all messages in the batch.
// TRANSLATION MISSING
| [[hook_modifier_irc_in_xxx]] irc_in_xxx ^(1)^ |
| サーバ名
+13
View File
@@ -3562,6 +3562,7 @@ WeeChat supports the following https://ircv3.net/irc/[IRCv3 extensions ^↗^,wi
* <<irc_ircv3_account_tag,account-tag>>
* <<irc_ircv3_away_notify,away-notify>>
* <<irc_ircv3_cap_notify,cap-notify>>
* <<irc_ircv3_batch,batch>>
* <<irc_ircv3_chghost,chghost>>
* <<irc_ircv3_extended_join,extended-join>>
* <<irc_ircv3_invite_notify,invite-notify>>
@@ -3645,6 +3646,18 @@ with a specific color in the nicklist, using the following options:
* <<option_irc.server_default.away_check_max_nicks,irc.server_default.away_check_max_nicks>>
* <<option_weechat.look.item_away_message,weechat.look.item_away_message>>
// TRANSLATION MISSING
[[irc_ircv3_batch]]
===== batch
Specification: https://ircv3.net/specs/extensions/batch[batch ^↗^,window=_blank]
This capability allows the server to send batched events (grouping of several
messages that are related).
For now, WeeChat only stores messages received in a batch and processes as usual
later, when the batch ends.
[[irc_ircv3_cap_notify]]
===== cap-notify
+13
View File
@@ -3449,6 +3449,7 @@ WeeChat wspiera następujące https://ircv3.net/irc/[rozszerzenia IRCv3 ^↗^,w
* <<irc_ircv3_account_notify,account-notify>>
* <<irc_ircv3_account_tag,account-tag>>
* <<irc_ircv3_away_notify,away-notify>>
* <<irc_ircv3_batch,batch>>
* <<irc_ircv3_cap_notify,cap-notify>>
* <<irc_ircv3_chghost,chghost>>
* <<irc_ircv3_extended_join,extended-join>>
@@ -3533,6 +3534,18 @@ konkretnym kolorze na liście nicków, za pomocą następujących opcji:
* <<option_irc.server_default.away_check_max_nicks,irc.server_default.away_check_max_nicks>>
* <<option_weechat.look.item_away_message,weechat.look.item_away_message>>
// TRANSLATION MISSING
[[irc_ircv3_batch]]
===== batch
Specification: https://ircv3.net/specs/extensions/batch[batch ^↗^,window=_blank]
This capability allows the server to send batched events (grouping of several
messages that are related).
For now, WeeChat only stores messages received in a batch and processes as usual
later, when the batch ends.
[[irc_ircv3_cap_notify]]
===== cap-notify
+4
View File
@@ -276,6 +276,8 @@ WeeChat „језгро” се налази у следећим директо
|    irc/ | IRC (Internet Relay Chat) додатак.
|       irc.c | Основне IRC функције.
|       irc-bar-item.c | IRC ставке траке.
// TRANSLATION MISSING
|       irc-batch.c | IRC batched events.
|       irc-buffer.c | IRC бафери.
|       irc-channel.c | IRC канали.
|       irc-color.c | IRC боје.
@@ -437,6 +439,8 @@ WeeChat „језгро” се налази у следећим директо
|          test-gui-nick.cpp | Тестови: надимци.
|       plugins/ | Корен unit тестова додатака.
|          irc/ | Корен unit тестова IRC додатка.
// TRANSLATION MISSING
|             test-irc-batch.cpp | Tests: IRC batched events.
|             test-irc-buffer.cpp | Тестови: IRC бафери.
|             test-irc-channel.cpp | Тестови: IRC канали.
|             test-irc-color.cpp | Тестови: IRC боје.
+7
View File
@@ -11931,6 +11931,13 @@ struct t_hook *weechat_hook_modifier (const char *modifier,
|===
| Модификатор | Мин WeeChat | Подаци модификатора | Стринг | Излаз
// TRANSLATION MISSING
| [[hook_modifier_irc_batch]] irc_batch | 4.0.0
| Server name + "," + batch type + "," + batch parameters
| Content of multiple messages, separated by a newline char ("\n").
| New content of messages (number can be different), an empty string discards
all messages in the batch.
| [[hook_modifier_irc_in_xxx]] irc_in_xxx ^(1)^ |
| Име сервера
| Садржај поруке примљене са IRC сервера (пре декодирања скупа карактера). +
+13
View File
@@ -3199,6 +3199,7 @@ WeeChat подржава следећа https://ircv3.net/irc/[IRCv3 проши
* <<irc_ircv3_account_notify,account-notify>>
* <<irc_ircv3_account_tag,account-tag>>
* <<irc_ircv3_away_notify,away-notify>>
* <<irc_ircv3_batch,batch>>
* <<irc_ircv3_cap_notify,cap-notify>>
* <<irc_ircv3_chghost,chghost>>
* <<irc_ircv3_extended_join,extended-join>>
@@ -3281,6 +3282,18 @@ WeeChat парсира ову ознаку у чува је у поруци, а
* <<option_irc.server_default.away_check_max_nicks,irc.server_default.away_check_max_nicks>>
* <<option_weechat.look.item_away_message,weechat.look.item_away_message>>
// TRANSLATION MISSING
[[irc_ircv3_batch]]
===== batch
Specification: https://ircv3.net/specs/extensions/batch[batch ^↗^,window=_blank]
This capability allows the server to send batched events (grouping of several
messages that are related).
For now, WeeChat only stores messages received in a batch and processes as usual
later, when the batch ends.
[[irc_ircv3_cap_notify]]
===== cap-notify
+9 -4
View File
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -7318,9 +7318,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -9719,6 +9719,11 @@ msgstr ""
msgid "irc server"
msgstr "irc server"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "irc kanál"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: nejste připojen k serveru"
+38 -4
View File
@@ -26,7 +26,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 22:01+0200\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German - Germany <weechatter@arcor.de>\n"
@@ -9185,6 +9185,35 @@ msgstr "Aushandlung der Clientfähigkeit"
msgid "ls || list || req|ack [<capability> [<capability>...]] || end"
msgstr "ls || list || req|ack [<capability> [<capability>...]] || end"
#, fuzzy
#| msgid ""
#| " ls: list the capabilities supported by the server\n"
#| " list: list the capabilities currently enabled\n"
#| " req: request a new capability or remove a capability (if starting with "
#| "\"-\", for example: \"-multi-prefix\")\n"
#| " ack: acknowledge capabilities which require client-side "
#| "acknowledgement\n"
#| " end: end the capability negotiation\n"
#| "\n"
#| "Without argument, \"ls\" and \"list\" are sent.\n"
#| "\n"
#| "Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
#| "notify, chghost, extended-join, invite-notify, message-tags, multi-"
#| "prefix, server-time, setname, userhost-in-names.\n"
#| "\n"
#| "The capabilities to automatically enable on servers can be set in option "
#| "irc.server_default.capabilities (or by server in option irc.server.xxx."
#| "capabilities).\n"
#| "\n"
#| "Examples:\n"
#| " display supported and enabled capabilities:\n"
#| " /cap\n"
#| " request capabilities multi-prefix and away-notify:\n"
#| " /cap req multi-prefix away-notify\n"
#| " request capability extended-join, remove capability multi-prefix:\n"
#| " /cap req extended-join -multi-prefix\n"
#| " remove capability away-notify:\n"
#| " /cap req -away-notify"
msgid ""
" ls: list the capabilities supported by the server\n"
" list: list the capabilities currently enabled\n"
@@ -9195,9 +9224,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -12038,6 +12067,11 @@ msgstr "IRC Weiterleitung"
msgid "irc server"
msgstr "IRC-Server"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "IRC-Kanal"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: Es besteht keine Verbindung zum Server"
+9 -4
View File
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: Santiago Forero <santiago@forero.xyz>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -7957,9 +7957,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -10450,6 +10450,11 @@ msgstr "redirección irc"
msgid "irc server"
msgstr "servidor irc"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "canal irc"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: no estas conectado a ningún servidor"
+11 -8
View File
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"PO-Revision-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-03 22:11+0200\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: fr\n"
@@ -9024,9 +9024,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -9052,9 +9052,9 @@ msgstr ""
"\n"
"Sans paramètre, \"ls\" et \"list\" sont envoyés.\n"
"\n"
"Les capacités supportées par WeeChat sont : account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Les capacités supportées par WeeChat sont : account-notify, away-notify, "
"batch, cap-notify, chghost, extended-join, invite-notify, message-tags, "
"multi-prefix, server-time, setname, userhost-in-names.\n"
"\n"
"Les capacités à activer automatiquement sur les serveurs peuvent être "
"définies dans l'option irc.server_default.capabilities (ou par serveur dans "
@@ -11793,6 +11793,9 @@ msgstr "redirection irc"
msgid "irc server"
msgstr "serveur irc"
msgid "irc batch"
msgstr "batch irc"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s : vous n'êtes pas connecté au serveur"
+8 -4
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6768,9 +6768,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -9179,6 +9179,10 @@ msgstr ""
msgid "irc server"
msgstr "szerver"
#, fuzzy
msgid "irc batch"
msgstr "%d szoba"
#, fuzzy, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s nincs csatlakozva szerverhez!\n"
+9 -4
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -7657,9 +7657,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -10181,6 +10181,11 @@ msgstr "redirezione irc"
msgid "irc server"
msgstr "server irc"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "canale irc"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: non connesso al server"
+9 -4
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/weechat/tree/master/"
@@ -8674,9 +8674,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -11360,6 +11360,11 @@ msgstr "irc リダイレクト"
msgid "irc server"
msgstr "irc サーバ"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "irc チャンネル"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: サーバに接続していません"
+38 -4
View File
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
@@ -9485,6 +9485,35 @@ msgstr "negocjacja możliwości klienta"
msgid "ls || list || req|ack [<capability> [<capability>...]] || end"
msgstr "ls || list || req|ack [<opcja> [<opcja>...]] || end"
#, fuzzy
#| msgid ""
#| " ls: list the capabilities supported by the server\n"
#| " list: list the capabilities currently enabled\n"
#| " req: request a new capability or remove a capability (if starting with "
#| "\"-\", for example: \"-multi-prefix\")\n"
#| " ack: acknowledge capabilities which require client-side "
#| "acknowledgement\n"
#| " end: end the capability negotiation\n"
#| "\n"
#| "Without argument, \"ls\" and \"list\" are sent.\n"
#| "\n"
#| "Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
#| "notify, chghost, extended-join, invite-notify, message-tags, multi-"
#| "prefix, server-time, setname, userhost-in-names.\n"
#| "\n"
#| "The capabilities to automatically enable on servers can be set in option "
#| "irc.server_default.capabilities (or by server in option irc.server.xxx."
#| "capabilities).\n"
#| "\n"
#| "Examples:\n"
#| " display supported and enabled capabilities:\n"
#| " /cap\n"
#| " request capabilities multi-prefix and away-notify:\n"
#| " /cap req multi-prefix away-notify\n"
#| " request capability extended-join, remove capability multi-prefix:\n"
#| " /cap req extended-join -multi-prefix\n"
#| " remove capability away-notify:\n"
#| " /cap req -away-notify"
msgid ""
" ls: list the capabilities supported by the server\n"
" list: list the capabilities currently enabled\n"
@@ -9495,9 +9524,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -12330,6 +12359,11 @@ msgstr "przekierowanie irc"
msgid "irc server"
msgstr "serwer irc"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "kanał irc"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: nie jesteś połączony z serwerem"
+9 -4
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
"Language-Team: Portuguese <>\n"
@@ -8422,9 +8422,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -11140,6 +11140,11 @@ msgstr "redireção de irc"
msgid "irc server"
msgstr "servidor de irc"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "canal de irc"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: não está conectado ao servidor"
+9 -4
View File
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -7495,9 +7495,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -9713,6 +9713,11 @@ msgstr ""
msgid "irc server"
msgstr "servidor irc"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "canal irc"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: você não está conectado ao servidor"
+8 -4
View File
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6810,9 +6810,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -9216,6 +9216,10 @@ msgstr ""
msgid "irc server"
msgstr "сервер"
#, fuzzy
msgid "irc batch"
msgstr "%d канал"
#, fuzzy, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s вы не подключены к серверу\n"
+58 -23
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-02 10:48+0400\n"
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -123,8 +123,8 @@ msgstr ""
" -P, --plugins <додаци> приликом покретања се учитавају само ови додаци\n"
" (погледајте /help weechat.plugin.autoload)\n"
" -r, --run-command <ком> покреће команд(у/е) након покретања;\n"
" можете да раздвојите више команди са тачка "
"запета и оне се израчунавају,\n"
" можете да раздвојите више команди са тачка запета "
"и оне се израчунавају,\n"
" ова опција може да се зада више пута\n"
" -s, --no-script приликом учитавања се не учитавају никакве "
"скрипте\n"
@@ -1109,9 +1109,8 @@ msgid ""
msgstr ""
"list|listfull|listitems || add <име> <тип>[,<услови>] <позиција> <величина> "
"<граничник> <ставка1>[,<ставка2>...] || default [input|title|status|"
"nicklist] || rename <име> <ново_име> || del <име>|-all || set <име> "
"<опција> <вредност> || hide|show|toggle <име> || scroll <име> <прозор> "
"<скрол_вредн>"
"nicklist] || rename <име> <ново_име> || del <име>|-all || set <име> <опција> "
"<вредност> || hide|show|toggle <име> || scroll <име> <прозор> <скрол_вредн>"
msgid ""
" list: list all bars\n"
@@ -1906,8 +1905,8 @@ msgstr ""
" ${buffer[my_pointer].full_name}: пуно име бафера са овим именом "
"показивача (може да се користи у окидачима)\n"
" hdata[показивач].var1.method(): када је var1 is a хеш табела, могу да се "
"позивају методе „keys()”, „values()”, „keys_sorted()”, „keys_values()” "
"и „keys_values_sorted()”\n"
"позивају методе „keys()”, „values()”, „keys_sorted()”, „keys_values()” и "
"„keys_values_sorted()”\n"
"У вези имена hdata и променљивих, молим вас да погледате „Референтни "
"приручник API додатака”, функцију „weechat_hdata_get”.\n"
"\n"
@@ -4032,8 +4031,8 @@ msgstr ""
"формат времена за сваку линију која се приказује у баферима (погледајте man "
"strftime за спецификаторе датума/времена) (напомена: садржај се израчунава, "
"тако да са форматом можете да користите и боје „${color:xxx}”, погледајте /"
"help eval); на пример, време употребом скале сивих: „${color:252}%H${color:"
"243}%M${color:237}%S”"
"help eval); на пример, време употребом скале сивих: "
"„${color:252}%H${color:243}%M${color:237}%S”"
#. TRANSLATORS: string "${color:xxx}" must NOT be translated
msgid ""
@@ -6035,8 +6034,8 @@ msgid ""
"%sBuffer property \"%s\" can not be disabled if buffer contains lines "
"(buffer: %s)"
msgstr ""
"%sОсобина бафера „%s” не може да се искључи ако бафер садржи линије "
"(бафер: %s)"
"%sОсобина бафера „%s” не може да се искључи ако бафер садржи линије (бафер: "
"%s)"
#, c-format
msgid "%sIt is only possible to merge buffers with formatted content"
@@ -6086,8 +6085,8 @@ msgid ""
"%sInvalid key for mouse context \"%s\": it must start with \"@area\" (see /"
"help key)"
msgstr ""
"%sНеважећи тастер у контексту миша „%s”: мора да почне са „@area” "
"(погледајте /help key)"
"%sНеважећи тастер у контексту миша „%s”: мора да почне са "
"„@area” (погледајте /help key)"
#, c-format
msgid "New key binding (context \"%s\"): %s%s => %s%s"
@@ -6095,7 +6094,8 @@ msgstr "Ново везивање тастера (контекст „%s”): %s
#, c-format
msgid "%sUnable to bind key \"%s\" in context \"%s\" (see /help key)"
msgstr "%sНије успело повезивање пречице „%s” у контексту „%s” (погледајте /help key)"
msgstr ""
"%sНије успело повезивање пречице „%s” у контексту „%s” (погледајте /help key)"
#, c-format
msgid ""
@@ -8776,6 +8776,35 @@ msgstr "преговарање могућности клијента"
msgid "ls || list || req|ack [<capability> [<capability>...]] || end"
msgstr "ls || list || req|ack [<могућност> [<могућност>...]] || end"
#, fuzzy
#| msgid ""
#| " ls: list the capabilities supported by the server\n"
#| " list: list the capabilities currently enabled\n"
#| " req: request a new capability or remove a capability (if starting with "
#| "\"-\", for example: \"-multi-prefix\")\n"
#| " ack: acknowledge capabilities which require client-side "
#| "acknowledgement\n"
#| " end: end the capability negotiation\n"
#| "\n"
#| "Without argument, \"ls\" and \"list\" are sent.\n"
#| "\n"
#| "Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
#| "notify, chghost, extended-join, invite-notify, message-tags, multi-"
#| "prefix, server-time, setname, userhost-in-names.\n"
#| "\n"
#| "The capabilities to automatically enable on servers can be set in option "
#| "irc.server_default.capabilities (or by server in option irc.server.xxx."
#| "capabilities).\n"
#| "\n"
#| "Examples:\n"
#| " display supported and enabled capabilities:\n"
#| " /cap\n"
#| " request capabilities multi-prefix and away-notify:\n"
#| " /cap req multi-prefix away-notify\n"
#| " request capability extended-join, remove capability multi-prefix:\n"
#| " /cap req extended-join -multi-prefix\n"
#| " remove capability away-notify:\n"
#| " /cap req -away-notify"
msgid ""
" ls: list the capabilities supported by the server\n"
" list: list the capabilities currently enabled\n"
@@ -8786,9 +8815,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -10159,8 +10188,8 @@ msgid ""
"%s%s: warning: the command name \"%s\" must be lower case, the option \"irc."
"msgbuffer.%s\" will not work"
msgstr ""
"%s%s: упозорење: име команде „%s” мора бити исписано малим словима, опција "
"irc.msgbuffer.%s” неће функционисати"
"%s%s: упозорење: име команде „%s” мора бити исписано малим словима, опција "
"irc.msgbuffer.%s” неће функционисати"
msgid "buffer used to display message received from IRC server"
msgstr "бафер који се користи за приказ поруке која се прими од IRC сервера"
@@ -10174,8 +10203,8 @@ msgid ""
"%s%s: warning: the CTCP name \"%s\" must be lower case, the option \"irc."
"ctcp.%s\" will not work"
msgstr ""
"%s%s: упозорење: CTCP име „%s” мора бити исписано малим словима, опција „"
"irc.ctcp.%s” неће функционисати"
"%s%s: упозорење: CTCP име „%s” мора бити исписано малим словима, опција „irc."
"ctcp.%s” неће функционисати"
msgid ""
"format for CTCP reply or empty string for blocking CTCP (no reply), "
@@ -11487,6 +11516,11 @@ msgstr "irc redirect"
msgid "irc server"
msgstr "irc server"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "irc channel"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: нисте повезани са сервером"
@@ -13738,7 +13772,8 @@ msgstr "порт за релеј"
#, c-format
msgid "Relay option renamed: \"relay.network.%s\" => \"relay.network.%s\""
msgstr "Промењено је име Релеј опције: „relay.network.%s” => „relay.network.%s”"
msgstr ""
"Промењено је име Релеј опције: „relay.network.%s” => „relay.network.%s”"
#, c-format
msgid "Relay option renamed: \"relay.%s.%s\" => \"relay.%s.%s\""
+38 -4
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -9076,6 +9076,35 @@ msgstr "istemci yeteneği pazarlığı"
msgid "ls || list || req|ack [<capability> [<capability>...]] || end"
msgstr "ls || list || req|ack [<yetenek> [<yetenek>...]] || end"
#, fuzzy
#| msgid ""
#| " ls: list the capabilities supported by the server\n"
#| " list: list the capabilities currently enabled\n"
#| " req: request a new capability or remove a capability (if starting with "
#| "\"-\", for example: \"-multi-prefix\")\n"
#| " ack: acknowledge capabilities which require client-side "
#| "acknowledgement\n"
#| " end: end the capability negotiation\n"
#| "\n"
#| "Without argument, \"ls\" and \"list\" are sent.\n"
#| "\n"
#| "Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
#| "notify, chghost, extended-join, invite-notify, message-tags, multi-"
#| "prefix, server-time, setname, userhost-in-names.\n"
#| "\n"
#| "The capabilities to automatically enable on servers can be set in option "
#| "irc.server_default.capabilities (or by server in option irc.server.xxx."
#| "capabilities).\n"
#| "\n"
#| "Examples:\n"
#| " display supported and enabled capabilities:\n"
#| " /cap\n"
#| " request capabilities multi-prefix and away-notify:\n"
#| " /cap req multi-prefix away-notify\n"
#| " request capability extended-join, remove capability multi-prefix:\n"
#| " /cap req extended-join -multi-prefix\n"
#| " remove capability away-notify:\n"
#| " /cap req -away-notify"
msgid ""
" ls: list the capabilities supported by the server\n"
" list: list the capabilities currently enabled\n"
@@ -9086,9 +9115,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -11891,6 +11920,11 @@ msgstr "irc yeniden yönlendirmesi"
msgid "irc server"
msgstr "irc sunucusu"
#, fuzzy
#| msgid "irc channel"
msgid "irc batch"
msgstr "irc kanalı"
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: Sunucuya bağlı değilsiniz"
+7 -4
View File
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2023-05-01 21:44+0200\n"
"POT-Creation-Date: 2023-05-03 22:10+0200\n"
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6248,9 +6248,9 @@ msgid ""
"\n"
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, cap-"
"notify, chghost, extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"Capabilities supported by WeeChat are: account-notify, away-notify, batch, "
"cap-notify, chghost, extended-join, invite-notify, message-tags, multi-"
"prefix, server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set in option irc."
"server_default.capabilities (or by server in option irc.server.xxx."
@@ -8232,6 +8232,9 @@ msgstr ""
msgid "irc server"
msgstr ""
msgid "irc batch"
msgstr ""
#, c-format
msgid "%s%s: you are not connected to server"
msgstr ""
+1
View File
@@ -20,6 +20,7 @@
add_library(irc MODULE
irc.c irc.h
irc-bar-item.c irc-bar-item.h
irc-batch.c irc-batch.h
irc-buffer.c irc-buffer.h
irc-channel.c irc-channel.h
irc-color.c irc-color.h
+379
View File
@@ -0,0 +1,379 @@
/*
* irc-batch.c - functions for managing batched events
*
* Copyright (C) 2023 Sébastien Helleu <flashcode@flashtux.org>
*
* This file is part of WeeChat, the extensible chat client.
*
* WeeChat is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* WeeChat is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "../weechat-plugin.h"
#include "irc.h"
#include "irc-batch.h"
#include "irc-message.h"
#include "irc-protocol.h"
#include "irc-server.h"
/*
* Searches a batch reference.
*
* Returns pointer to batch, NULL if not found.
*/
struct t_irc_batch *
irc_batch_search (struct t_irc_server *server, const char *reference)
{
struct t_irc_batch *ptr_batch;
if (!server || !reference)
return NULL;
for (ptr_batch = server->batches; ptr_batch;
ptr_batch = ptr_batch->next_batch)
{
if (strcmp (ptr_batch->reference, reference) == 0)
return ptr_batch;
}
/* batch not found */
return NULL;
}
/*
* Adds a batch to list of batched events.
*/
void
irc_batch_add_to_list (struct t_irc_server *server, struct t_irc_batch *batch)
{
if (server->last_batch)
server->last_batch->next_batch = batch;
else
server->batches = batch;
batch->prev_batch = server->last_batch;
batch->next_batch = NULL;
server->last_batch = batch;
}
/*
* Starts a batch.
*
* Returns pointer to new batch, NULL if error.
*/
struct t_irc_batch *
irc_batch_start_batch (struct t_irc_server *server, const char *reference,
const char *parent_ref, const char *type,
const char *parameters)
{
struct t_irc_batch *ptr_batch;
if (!server || !reference || !type)
return NULL;
/* check if reference already exists */
ptr_batch = irc_batch_search (server, reference);
if (ptr_batch)
return NULL;
ptr_batch = malloc (sizeof (*ptr_batch));
if (!ptr_batch)
return NULL;
ptr_batch->reference = strdup (reference);
ptr_batch->parent_ref = (parent_ref) ? strdup (parent_ref) : NULL;
ptr_batch->type = strdup (type);
ptr_batch->parameters = (parameters) ? strdup (parameters) : NULL;
ptr_batch->start_time = time (NULL);
ptr_batch->messages = NULL;
ptr_batch->end_received = 0;
ptr_batch->messages_processed = 0;
irc_batch_add_to_list (server, ptr_batch);
return ptr_batch;
}
/*
* Adds an IRC message to a batch reference.
*
* Returns:
* 1: OK, message added
* 0: error, message not added
*/
int
irc_batch_add_message (struct t_irc_server *server, const char *reference,
const char *irc_message)
{
struct t_irc_batch *ptr_batch;
if (!server || !reference || !irc_message)
return 0;
ptr_batch = irc_batch_search (server, reference);
if (!ptr_batch)
return 0;
if (!ptr_batch->messages)
ptr_batch->messages = weechat_string_dyn_alloc (256);
if (!ptr_batch->messages)
return 0;
if ((*(ptr_batch->messages))[0])
weechat_string_dyn_concat (ptr_batch->messages, "\n", -1);
weechat_string_dyn_concat (ptr_batch->messages, irc_message, -1);
return 1;
}
/*
* Frees a batch.
*/
void
irc_batch_free (struct t_irc_server *server, struct t_irc_batch *batch)
{
if (batch->reference)
free (batch->reference);
if (batch->parent_ref)
free (batch->parent_ref);
if (batch->type)
free (batch->type);
if (batch->parameters)
free (batch->parameters);
if (batch->messages)
weechat_string_dyn_free (batch->messages, 1);
/* remove batch from list */
if (batch->prev_batch)
(batch->prev_batch)->next_batch = batch->next_batch;
if (batch->next_batch)
(batch->next_batch)->prev_batch = batch->prev_batch;
if (server->batches == batch)
server->batches = batch->next_batch;
if (server->last_batch == batch)
server->last_batch = batch->prev_batch;
free (batch);
}
/*
* Frees all batches from server.
*/
void
irc_batch_free_all (struct t_irc_server *server)
{
while (server->batches)
{
irc_batch_free (server, server->batches);
}
}
/*
* Processes messages in a batch.
*/
void
irc_batch_process_messages (struct t_irc_server *server,
struct t_irc_batch *batch)
{
char **list_messages, *command, *channel, modifier_data[1024], *new_messages;
int i, count_messages;
if (!batch || !batch->messages)
return;
snprintf (modifier_data, sizeof (modifier_data),
"%s,%s,%s",
server->name,
batch->type,
batch->parameters);
new_messages = weechat_hook_modifier_exec ("irc_batch", modifier_data,
*(batch->messages));
/* no changes in new messages */
if (new_messages && (strcmp (*(batch->messages), new_messages) == 0))
{
free (new_messages);
new_messages = NULL;
}
/* messages not dropped? */
if (!new_messages || new_messages[0])
{
list_messages = weechat_string_split (
(new_messages) ? new_messages : *(batch->messages),
"\n", NULL, 0, 0, &count_messages);
if (list_messages)
{
for (i = 0; i < count_messages; i++)
{
irc_message_parse (server,
list_messages[i],
NULL, /* tags */
NULL, /* message_without_tags */
NULL, /* nick */
NULL, /* user */
NULL, /* host */
&command,
&channel,
NULL, /* arguments */
NULL, /* text */
NULL, /* params */
NULL, /* num_params */
NULL, /* pos_command */
NULL, /* pos_arguments */
NULL, /* pos_channel */
NULL); /* pos_text */
/* call receive callback, ignoring batch tags */
irc_protocol_recv_command (server, list_messages[i], command,
channel, 1);
if (command)
free (command);
if (channel)
free (channel);
}
weechat_string_free_split (list_messages);
}
}
if (new_messages)
free (new_messages);
}
/*
* Ends a batch reference.
*/
void
irc_batch_end_batch (struct t_irc_server *server, const char *reference)
{
struct t_irc_batch *ptr_batch, *ptr_next_batch, *ptr_parent_batch;
int num_processed;
if (!server || !reference)
return;
ptr_batch = irc_batch_search (server, reference);
if (!ptr_batch)
return;
ptr_batch->end_received = 1;
/*
* process messages in all batches, if these conditions are met:
* - end_received = 1
* - no parent or the parent has messages_processed = 1
*/
while (1)
{
num_processed = 0;
for (ptr_batch = server->batches; ptr_batch;
ptr_batch = ptr_batch->next_batch)
{
if (!ptr_batch->end_received || ptr_batch->messages_processed)
continue;
ptr_parent_batch = irc_batch_search (server, ptr_batch->parent_ref);
if (!ptr_parent_batch || ptr_parent_batch->messages_processed)
{
irc_batch_process_messages (server, ptr_batch);
ptr_batch->messages_processed = 1;
num_processed++;
}
}
if (num_processed == 0)
break;
}
/* remove all batches that are processed */
ptr_batch = server->batches;
while (ptr_batch)
{
ptr_next_batch = ptr_batch->next_batch;
if (ptr_batch->messages_processed)
irc_batch_free (server, ptr_batch);
ptr_batch = ptr_next_batch;
}
}
/*
* Returns hdata for batch.
*/
struct t_hdata *
irc_batch_hdata_batch_cb (const void *pointer, void *data,
const char *hdata_name)
{
struct t_hdata *hdata;
/* make C compiler happy */
(void) pointer;
(void) data;
hdata = weechat_hdata_new (hdata_name, "prev_batch", "next_batch",
0, 0, NULL, NULL);
if (hdata)
{
WEECHAT_HDATA_VAR(struct t_irc_batch, reference, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_batch, parent_ref, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_batch, type, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_batch, parameters, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_batch, start_time, TIME, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_batch, messages, POINTER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_batch, end_received, INTEGER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_batch, messages_processed, INTEGER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_batch, prev_batch, POINTER, 0, NULL, hdata_name);
WEECHAT_HDATA_VAR(struct t_irc_batch, next_batch, POINTER, 0, NULL, hdata_name);
}
return hdata;
}
/*
* Prints batch infos in WeeChat log file (usually for crash dump).
*/
void
irc_batch_print_log (struct t_irc_server *server)
{
struct t_irc_batch *ptr_batch;
for (ptr_batch = server->batches; ptr_batch;
ptr_batch = ptr_batch->next_batch)
{
weechat_log_printf ("");
weechat_log_printf (" => batch (addr:0x%lx):", ptr_batch);
weechat_log_printf (" reference . . . . . : '%s'", ptr_batch->reference);
weechat_log_printf (" parent_ref. . . . . : '%s'", ptr_batch->parent_ref);
weechat_log_printf (" type. . . . . . . . : '%s'", ptr_batch->type);
weechat_log_printf (" parameters. . . . . : '%s'", ptr_batch->parameters);
weechat_log_printf (" start_time. . . . . : %lld", (long long)ptr_batch->start_time);
weechat_log_printf (" message . . . . . . : 0x%lx ('%s')",
ptr_batch->messages,
(ptr_batch->messages) ? *(ptr_batch->messages) : NULL);
weechat_log_printf (" end_received. . . . : %d", ptr_batch->end_received);
weechat_log_printf (" messages_processed. : %d", ptr_batch->messages_processed);
weechat_log_printf (" prev_batch. . . . . : 0x%lx", ptr_batch->prev_batch);
weechat_log_printf (" next_batch. . . . . : 0x%lx", ptr_batch->next_batch);
}
}
+62
View File
@@ -0,0 +1,62 @@
/*
* Copyright (C) 2023 Sébastien Helleu <flashcode@flashtux.org>
*
* This file is part of WeeChat, the extensible chat client.
*
* WeeChat is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* WeeChat is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef WEECHAT_PLUGIN_IRC_BATCH_H
#define WEECHAT_PLUGIN_IRC_BATCH_H
#include <time.h>
struct t_irc_server;
struct t_irc_batch
{
char *reference; /* batch reference */
char *parent_ref; /* ref of parent batch (optional) */
char *type; /* type */
char *parameters; /* parameters */
time_t start_time; /* start time (to auto-purge if */
/* batch end is not received) */
char **messages; /* messages separated by '\n' */
int end_received; /* batch end reference received */
int messages_processed; /* 1 if msgs have been processed */
struct t_irc_batch *prev_batch; /* link to previous batch */
struct t_irc_batch *next_batch; /* link to next batch */
};
extern struct t_irc_batch *irc_batch_search (struct t_irc_server *server,
const char *reference);
extern struct t_irc_batch *irc_batch_start_batch (struct t_irc_server *server,
const char *reference,
const char *parent_ref,
const char *type,
const char *parameters);
extern int irc_batch_add_message (struct t_irc_server *server,
const char *reference,
const char *irc_message);
extern void irc_batch_end_batch (struct t_irc_server *server,
const char *reference);
extern void irc_batch_free (struct t_irc_server *server,
struct t_irc_batch *batch);
extern void irc_batch_free_all (struct t_irc_server *server);
extern struct t_hdata *irc_batch_hdata_batch_cb (const void *pointer,
void *data,
const char *hdata_name);
extern void irc_batch_print_log (struct t_irc_server *server);
#endif /* WEECHAT_PLUGIN_IRC_BATCH_H */
+1
View File
@@ -1491,6 +1491,7 @@ irc_channel_display_nick_back_in_pv (struct t_irc_server *server,
ptr_channel->buffer,
0,
irc_protocol_tags (
server,
"nick_back",
NULL,
NULL,
+8 -5
View File
@@ -1078,7 +1078,8 @@ irc_command_me_channel_display (struct t_irc_server *server,
weechat_printf_date_tags (
channel->buffer,
0,
irc_protocol_tags ("privmsg",
irc_protocol_tags (server,
"privmsg",
NULL,
"irc_action,self_msg,notify_none,no_highlight",
server->nick, NULL),
@@ -1904,7 +1905,8 @@ IRC_COMMAND_CALLBACK(ctcp)
irc_msgbuffer_get_target_buffer (
ptr_server, ctcp_target, NULL, "ctcp", NULL),
0,
irc_protocol_tags ("privmsg",
irc_protocol_tags (ptr_server,
"privmsg",
NULL,
"irc_ctcp,self_msg,notify_none,no_highlight",
NULL, NULL),
@@ -3802,6 +3804,7 @@ IRC_COMMAND_CALLBACK(msg)
ptr_server->buffer,
0,
irc_protocol_tags (
ptr_server,
"privmsg",
NULL,
"self_msg,notify_none,no_highlight",
@@ -6953,9 +6956,9 @@ irc_command_init ()
"Without argument, \"ls\" and \"list\" are sent.\n"
"\n"
"Capabilities supported by WeeChat are: "
"account-notify, away-notify, cap-notify, chghost, extended-join, "
"invite-notify, message-tags, multi-prefix, server-time, setname, "
"userhost-in-names.\n"
"account-notify, away-notify, batch, cap-notify, chghost, "
"extended-join, invite-notify, message-tags, multi-prefix, "
"server-time, setname, userhost-in-names.\n"
"\n"
"The capabilities to automatically enable on servers can be set "
"in option irc.server_default.capabilities (or by server in "
+4 -4
View File
@@ -54,10 +54,10 @@ struct t_irc_channel;
}
/* list of supported capabilities (for completion in command /cap) */
#define IRC_COMMAND_CAP_SUPPORTED_COMPLETION \
"account-notify|away-notify|cap-notify|chghost|extended-join|" \
"invite-notify|message-tags|multi-prefix|server-time|setname|" \
"userhost-in-names"
#define IRC_COMMAND_CAP_SUPPORTED_COMPLETION \
"account-notify|away-notify|batch|cap-notify|chghost|" \
"extended-join|invite-notify|message-tags|multi-prefix|" \
"server-time|setname|userhost-in-names"
/* list of supported CTCPs (for completion in command /ctcp) */
#define IRC_COMMAND_CTCP_SUPPORTED_COMPLETION \
+11 -6
View File
@@ -143,7 +143,7 @@ irc_ctcp_display_request (struct t_irc_server *server,
server, nick, NULL, "ctcp",
(channel) ? channel->buffer : NULL),
date,
irc_protocol_tags (command, tags, "irc_ctcp", NULL, address),
irc_protocol_tags (server, command, tags, "irc_ctcp", NULL, address),
_("%sCTCP requested by %s%s%s: %s%s%s%s%s%s"),
weechat_prefix ("network"),
irc_nick_color_for_msg (server, 0, NULL, nick),
@@ -211,7 +211,8 @@ irc_ctcp_display_reply_from_nick (struct t_irc_server *server, time_t date,
irc_msgbuffer_get_target_buffer (
server, nick, NULL, "ctcp", NULL),
date,
irc_protocol_tags (command, tags, "irc_ctcp", NULL, NULL),
irc_protocol_tags (server, command, tags, "irc_ctcp",
NULL, NULL),
/* TRANSLATORS: %.3fs is a float number + "s" ("seconds") */
_("%sCTCP reply from %s%s%s: %s%s%s %.3fs"),
weechat_prefix ("network"),
@@ -230,7 +231,8 @@ irc_ctcp_display_reply_from_nick (struct t_irc_server *server, time_t date,
irc_msgbuffer_get_target_buffer (
server, nick, NULL, "ctcp", NULL),
date,
irc_protocol_tags (command, tags, "irc_ctcp", NULL, address),
irc_protocol_tags (server, command, tags, "irc_ctcp", NULL,
address),
_("%sCTCP reply from %s%s%s: %s%s%s%s%s"),
weechat_prefix ("network"),
irc_nick_color_for_msg (server, 0, NULL, nick),
@@ -249,7 +251,7 @@ irc_ctcp_display_reply_from_nick (struct t_irc_server *server, time_t date,
irc_msgbuffer_get_target_buffer (
server, nick, NULL, "ctcp", NULL),
date,
irc_protocol_tags (command, tags, NULL, NULL, address),
irc_protocol_tags (server, command, tags, NULL, NULL, address),
_("%sCTCP reply from %s%s%s: %s%s%s%s%s"),
weechat_prefix ("network"),
irc_nick_color_for_msg (server, 0, NULL, nick),
@@ -344,6 +346,7 @@ irc_ctcp_reply_to_nick (struct t_irc_server *server,
(channel) ? channel->buffer : NULL),
0,
irc_protocol_tags (
server,
command,
tags,
"irc_ctcp,irc_ctcp_reply,self_msg,notify_none,"
@@ -1101,6 +1104,7 @@ irc_ctcp_recv (struct t_irc_server *server, time_t date,
channel->buffer,
date,
irc_protocol_tags (
server,
command,
tags,
(nick_is_me) ?
@@ -1144,6 +1148,7 @@ irc_ctcp_recv (struct t_irc_server *server, time_t date,
ptr_channel->buffer,
date,
irc_protocol_tags (
server,
command,
tags,
(nick_is_me) ?
@@ -1227,8 +1232,8 @@ irc_ctcp_recv (struct t_irc_server *server, time_t date,
server, nick, NULL, "ctcp",
(channel) ? channel->buffer : NULL),
date,
irc_protocol_tags (command, tags, "irc_ctcp", NULL,
address),
irc_protocol_tags (server, command, tags, "irc_ctcp",
NULL, address),
_("%sUnknown CTCP requested by %s%s%s: %s%s%s%s%s"),
weechat_prefix ("network"),
irc_nick_color_for_msg (server, 0, NULL, nick),
+4
View File
@@ -25,6 +25,7 @@
#include "../weechat-plugin.h"
#include "irc.h"
#include "irc-batch.h"
#include "irc-channel.h"
#include "irc-color.h"
#include "irc-config.h"
@@ -1294,4 +1295,7 @@ irc_info_init ()
weechat_hook_hdata (
"irc_server", N_("irc server"),
&irc_server_hdata_server_cb, NULL, NULL);
weechat_hook_hdata (
"irc_batch", N_("irc batch"),
&irc_batch_hdata_batch_cb, NULL, NULL);
}
+2
View File
@@ -102,6 +102,7 @@ irc_input_user_message_display (struct t_gui_buffer *buffer, int action,
buffer,
0,
irc_protocol_tags (
ptr_server,
"privmsg",
NULL,
str_tags,
@@ -121,6 +122,7 @@ irc_input_user_message_display (struct t_gui_buffer *buffer, int action,
buffer,
0,
irc_protocol_tags (
ptr_server,
"privmsg",
NULL,
str_tags,
File diff suppressed because it is too large Load Diff
+4 -2
View File
@@ -99,7 +99,8 @@ struct t_irc_protocol_msg
t_irc_recv_func *recv_function; /* function called when msg is received */
};
extern const char *irc_protocol_tags (const char *command,
extern const char *irc_protocol_tags (struct t_irc_server *server,
const char *command,
struct t_hashtable *irc_msg_tags,
const char *extra_tags,
const char *nick,
@@ -108,6 +109,7 @@ extern time_t irc_protocol_parse_time (const char *time);
extern void irc_protocol_recv_command (struct t_irc_server *server,
const char *irc_message,
const char *msg_command,
const char *msg_channel);
const char *msg_channel,
int ignore_batch_tag);
#endif /* WEECHAT_PLUGIN_IRC_PROTOCOL_H */
+27 -1
View File
@@ -52,6 +52,7 @@
#include "irc.h"
#include "irc-server.h"
#include "irc-bar-item.h"
#include "irc-batch.h"
#include "irc-buffer.h"
#include "irc-channel.h"
#include "irc-color.h"
@@ -1740,6 +1741,8 @@ irc_server_alloc (const char *name)
WEECHAT_HASHTABLE_STRING,
WEECHAT_HASHTABLE_TIME,
NULL, NULL);
new_server->batches = NULL;
new_server->last_batch = NULL;
new_server->buffer = NULL;
new_server->buffer_as_string = NULL;
new_server->channels = NULL;
@@ -2218,6 +2221,7 @@ irc_server_free_data (struct t_irc_server *server)
irc_redirect_free_all (server);
irc_notify_free_all (server);
irc_channel_free_all (server);
irc_batch_free_all (server);
/* free hashtables */
weechat_hashtable_free (server->join_manual);
@@ -3552,7 +3556,8 @@ irc_server_msgq_flush ()
irc_recv_msgq->server,
ptr_msg2,
command,
channel);
channel,
0); /* ignore_batch_tag */
}
}
@@ -3855,6 +3860,7 @@ irc_server_timer_cb (const void *pointer, void *data, int remaining_calls)
struct t_irc_server *ptr_server;
struct t_irc_channel *ptr_channel;
struct t_irc_redirect *ptr_redirect, *ptr_next_redirect;
struct t_irc_batch *ptr_batch, *ptr_next_batch;
time_t current_time;
static struct timeval tv;
int away_check, refresh_lag;
@@ -4024,6 +4030,17 @@ irc_server_timer_cb (const void *pointer, void *data, int remaining_calls)
NULL);
}
}
ptr_batch = ptr_server->batches;
while (ptr_batch)
{
ptr_next_batch = ptr_batch->next_batch;
if (current_time > ptr_batch->start_time + (60 * 60))
{
/* batch expires after 1 hour if end not received */
irc_batch_free (ptr_server, ptr_batch);
}
ptr_batch = ptr_next_batch;
}
ptr_server->last_data_purge = current_time;
}
}
@@ -4115,6 +4132,9 @@ irc_server_close_connection (struct t_irc_server *server)
/* remove all keys for joins without switch */
weechat_hashtable_remove_all (server->join_noswitch);
/* remove all batched events pending */
irc_batch_free_all (server);
/* server is now disconnected */
server->authentication_method = IRC_SERVER_AUTH_METHOD_NONE;
server->sasl_mechanism_used = -1;
@@ -6319,6 +6339,8 @@ irc_server_hdata_server_cb (const void *pointer, void *data,
WEECHAT_HDATA_VAR(struct t_irc_server, join_manual, HASHTABLE, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, join_channel_key, HASHTABLE, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, join_noswitch, HASHTABLE, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, batches, POINTER, 0, NULL, "irc_batch");
WEECHAT_HDATA_VAR(struct t_irc_server, last_batch, POINTER, 0, NULL, "irc_batch");
WEECHAT_HDATA_VAR(struct t_irc_server, buffer, POINTER, 0, NULL, "buffer");
WEECHAT_HDATA_VAR(struct t_irc_server, buffer_as_string, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_server, channels, POINTER, 0, NULL, "irc_channel");
@@ -7088,6 +7110,8 @@ irc_server_print_log ()
weechat_log_printf (" join_noswitch . . . . . . : 0x%lx (hashtable: '%s')",
ptr_server->join_noswitch,
weechat_hashtable_get_string (ptr_server->join_noswitch, "keys_values"));
weechat_log_printf (" batches . . . . . . . . . : 0x%lx", ptr_server->batches);
weechat_log_printf (" last_batch. . . . . . . . : 0x%lx", ptr_server->last_batch);
weechat_log_printf (" buffer. . . . . . . . . . : 0x%lx", ptr_server->buffer);
weechat_log_printf (" buffer_as_string. . . . . : 0x%lx", ptr_server->buffer_as_string);
weechat_log_printf (" channels. . . . . . . . . : 0x%lx", ptr_server->channels);
@@ -7099,6 +7123,8 @@ irc_server_print_log ()
irc_notify_print_log (ptr_server);
irc_batch_print_log (ptr_server);
for (ptr_channel = ptr_server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
{
+2
View File
@@ -278,6 +278,8 @@ struct t_irc_server
struct t_hashtable *join_manual; /* manual joins pending */
struct t_hashtable *join_channel_key; /* keys pending for joins */
struct t_hashtable *join_noswitch; /* joins w/o switch to buffer */
struct t_irc_batch *batches; /* batched events (cap "batch") */
struct t_irc_batch *last_batch; /* last batch */
struct t_gui_buffer *buffer; /* GUI buffer allocated for server */
char *buffer_as_string; /* used to return buffer info */
struct t_irc_channel *channels; /* opened channels on server */
+1
View File
@@ -64,6 +64,7 @@ set(LIB_WEECHAT_UNIT_TESTS_PLUGINS_SRC unit/plugins/test-plugins.cpp)
if(ENABLE_IRC)
list(APPEND LIB_WEECHAT_UNIT_TESTS_PLUGINS_SRC
unit/plugins/irc/test-irc-batch.cpp
unit/plugins/irc/test-irc-buffer.cpp
unit/plugins/irc/test-irc-channel.cpp
unit/plugins/irc/test-irc-color.cpp
+218
View File
@@ -0,0 +1,218 @@
/*
* test-irc-batch.cpp - test IRC batch functions
*
* Copyright (C) 2023 Sébastien Helleu <flashcode@flashtux.org>
*
* This file is part of WeeChat, the extensible chat client.
*
* WeeChat is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* WeeChat is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WeeChat. If not, see <http://www.gnu.org/licenses/>.
*/
#include "CppUTest/TestHarness.h"
#include "tests/tests.h"
extern "C"
{
#include <string.h>
#include "src/plugins/irc/irc-batch.h"
#include "src/plugins/irc/irc-server.h"
}
TEST_GROUP(IrcBatch)
{
};
/*
* Tests functions:
* irc_batch_search
*/
TEST(IrcBatch, Search)
{
struct t_irc_server *server;
struct t_irc_batch *batch1, *batch2;
server = irc_server_alloc ("server");
CHECK(server);
batch1 = irc_batch_start_batch (server, "ref1", "parent_ref", "type", "params");
CHECK(batch1);
batch2 = irc_batch_start_batch (server, "ref2", "parent_ref", "type", "params");
CHECK(batch2);
POINTERS_EQUAL(NULL, irc_batch_search (NULL, NULL));
POINTERS_EQUAL(NULL, irc_batch_search (NULL, ""));
POINTERS_EQUAL(NULL, irc_batch_search (server, ""));
POINTERS_EQUAL(NULL, irc_batch_search (server, "does_not_exist"));
POINTERS_EQUAL(NULL, irc_batch_search (server, "REF1"));
POINTERS_EQUAL(NULL, irc_batch_search (server, "REF2"));
POINTERS_EQUAL(batch1, irc_batch_search (server, "ref1"));
POINTERS_EQUAL(batch2, irc_batch_search (server, "ref2"));
irc_batch_end_batch (server, "ref1");
irc_batch_end_batch (server, "ref2");
irc_server_free (server);
}
/*
* Tests functions:
* irc_batch_add_to_list
* irc_batch_start_batch
* irc_batch_free
*/
TEST(IrcBatch, StartBatch)
{
struct t_irc_server *server;
struct t_irc_batch *batch;
server = irc_server_alloc ("server");
CHECK(server);
POINTERS_EQUAL(NULL, server->batches);
batch = irc_batch_start_batch (server, "ref", NULL, "type", NULL);
CHECK(batch);
POINTERS_EQUAL(batch, server->batches);
STRCMP_EQUAL("ref", batch->reference);
POINTERS_EQUAL(NULL, batch->parent_ref);
STRCMP_EQUAL("type", batch->type);
POINTERS_EQUAL(NULL, batch->parameters);
CHECK(batch->start_time > 0);
POINTERS_EQUAL(NULL, batch->messages);
LONGS_EQUAL(0, batch->end_received);
LONGS_EQUAL(0, batch->messages_processed);
irc_batch_free (server, batch);
POINTERS_EQUAL(NULL, server->batches);
batch = irc_batch_start_batch (server, "ref", "parent_ref", "type", "params");
CHECK(batch);
POINTERS_EQUAL(batch, server->batches);
STRCMP_EQUAL("ref", batch->reference);
STRCMP_EQUAL("parent_ref", batch->parent_ref);
STRCMP_EQUAL("type", batch->type);
STRCMP_EQUAL("params", batch->parameters);
CHECK(batch->start_time > 0);
POINTERS_EQUAL(NULL, batch->messages);
LONGS_EQUAL(0, batch->end_received);
LONGS_EQUAL(0, batch->messages_processed);
irc_batch_free (server, batch);
POINTERS_EQUAL(NULL, server->batches);
irc_server_free (server);
}
/*
* Tests functions:
* irc_batch_add_message
* irc_batch_free
*/
TEST(IrcBatch, AddMessage)
{
struct t_irc_server *server;
struct t_irc_batch *batch;
server = irc_server_alloc ("server");
CHECK(server);
batch = irc_batch_start_batch (server, "ref", "parent_ref", "type", "params");
CHECK(batch);
irc_batch_add_message (server, "ref", ":alice PRIVMSG #test: test1");
STRCMP_EQUAL(*batch->messages, ":alice PRIVMSG #test: test1");
irc_batch_add_message (server, "ref", ":alice PRIVMSG #test: test2");
STRCMP_EQUAL(*batch->messages,
":alice PRIVMSG #test: test1\n"
":alice PRIVMSG #test: test2");
irc_batch_free (server, batch);
irc_server_free (server);
}
/*
* Tests functions:
* irc_batch_free_all
*/
TEST(IrcBatch, FreeAll)
{
struct t_irc_server *server;
struct t_irc_batch *batch1, *batch2;
server = irc_server_alloc ("server");
CHECK(server);
batch1 = irc_batch_start_batch (server, "ref1", "parent_ref", "type", "params");
CHECK(batch1);
batch2 = irc_batch_start_batch (server, "ref2", "parent_ref", "type", "params");
CHECK(batch2);
POINTERS_EQUAL(batch1, server->batches);
POINTERS_EQUAL(batch2, server->batches->next_batch);
irc_batch_free_all (server);
POINTERS_EQUAL(NULL, server->batches);
irc_server_free (server);
}
/*
* Tests functions:
* irc_batch_process_messages
*/
TEST(IrcBatch, ProcessMessages)
{
/* tested in test-irc-protocol.cpp */
}
/*
* Tests functions:
* irc_batch_end_batch
*/
TEST(IrcBatch, EndBatch)
{
/* tested in test-irc-protocol.cpp */
}
/*
* Tests functions:
* irc_batch_hdata_batch_cb
*/
TEST(IrcBatch, HdataBatchCb)
{
/* TODO: write tests */
}
/*
* Tests functions:
* irc_batch_print_log
*/
TEST(IrcBatch, PrintLog)
{
/* TODO: write tests */
}
+150 -23
View File
@@ -35,6 +35,7 @@ extern "C"
#include "src/gui/gui-buffer.h"
#include "src/gui/gui-color.h"
#include "src/plugins/plugin.h"
#include "src/plugins/irc/irc-batch.h"
#include "src/plugins/irc/irc-ctcp.h"
#include "src/plugins/irc/irc-protocol.h"
#include "src/plugins/irc/irc-channel.h"
@@ -65,8 +66,8 @@ extern char *irc_protocol_cap_to_enable (const char *capabilities,
"USERLEN=16 HOSTLEN=32 CHANNELLEN=50 TOPICLEN=390 DEAF=D " \
"CHANTYPES=# CHANMODES=eIbq,k,flj,CFLMPQScgimnprstuz " \
"MONITOR=100"
#define IRC_ALL_CAPS "account-notify,away-notify,cap-notify,chghost," \
"extended-join,invite-notify,message-tags,multi-prefix," \
#define IRC_ALL_CAPS "account-notify,away-notify,batch,cap-notify," \
"chghost,extended-join,invite-notify,message-tags,multi-prefix," \
"server-time,setname,userhost-in-names"
#define WEE_CHECK_CAP_TO_ENABLE(__result, __string, __sasl_requested) \
@@ -261,66 +262,66 @@ TEST(IrcProtocol, Tags)
hashtable_set (tags_2, "key1", "value1");
hashtable_set (tags_2, "key_2,comma", "value2,comma");
POINTERS_EQUAL(NULL, irc_protocol_tags (NULL, NULL, NULL, NULL, NULL));
POINTERS_EQUAL(NULL, irc_protocol_tags (NULL, NULL, NULL, NULL, NULL, NULL));
/* command */
STRCMP_EQUAL("irc_privmsg,log1",
irc_protocol_tags ("privmsg", NULL, NULL, NULL, NULL));
irc_protocol_tags (NULL, "privmsg", NULL, NULL, NULL, NULL));
STRCMP_EQUAL("irc_join,log4",
irc_protocol_tags ("join", NULL, NULL, NULL, NULL));
irc_protocol_tags (NULL, "join", NULL, NULL, NULL, NULL));
/* command + irc_msg_tags */
STRCMP_EQUAL("irc_privmsg,log1",
irc_protocol_tags ("privmsg", tags_empty, NULL, NULL, NULL));
irc_protocol_tags (NULL, "privmsg", tags_empty, NULL, NULL, NULL));
STRCMP_EQUAL("irc_join,log4",
irc_protocol_tags ("join", tags_empty, NULL, NULL, NULL));
irc_protocol_tags (NULL, "join", tags_empty, NULL, NULL, NULL));
STRCMP_EQUAL("irc_privmsg,irc_tag_key1_value1,log1",
irc_protocol_tags ("privmsg", tags_1, NULL, NULL, NULL));
irc_protocol_tags (NULL, "privmsg", tags_1, NULL, NULL, NULL));
STRCMP_EQUAL("irc_join,irc_tag_key1_value1,log4",
irc_protocol_tags ("join", tags_1, NULL, NULL, NULL));
irc_protocol_tags (NULL, "join", tags_1, NULL, NULL, NULL));
STRCMP_EQUAL("irc_privmsg,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,log1",
irc_protocol_tags ("privmsg", tags_2, NULL, NULL, NULL));
irc_protocol_tags (NULL, "privmsg", tags_2, NULL, NULL, NULL));
STRCMP_EQUAL("irc_join,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,log4",
irc_protocol_tags ("join", tags_2, NULL, NULL, NULL));
irc_protocol_tags (NULL, "join", tags_2, NULL, NULL, NULL));
/* command + extra_tags */
STRCMP_EQUAL("irc_privmsg,log1",
irc_protocol_tags ("privmsg", NULL, "", NULL, NULL));
irc_protocol_tags (NULL, "privmsg", NULL, "", NULL, NULL));
STRCMP_EQUAL("irc_join,log4",
irc_protocol_tags ("join", NULL, "", NULL, NULL));
irc_protocol_tags (NULL, "join", NULL, "", NULL, NULL));
STRCMP_EQUAL("irc_privmsg,tag1,tag2,log1",
irc_protocol_tags ("privmsg", NULL, "tag1,tag2", NULL, NULL));
irc_protocol_tags (NULL, "privmsg", NULL, "tag1,tag2", NULL, NULL));
STRCMP_EQUAL("irc_join,tag1,tag2,log4",
irc_protocol_tags ("join", NULL, "tag1,tag2", NULL, NULL));
irc_protocol_tags (NULL, "join", NULL, "tag1,tag2", NULL, NULL));
/* command + irc_msg_tags + extra_tags + nick */
STRCMP_EQUAL("irc_privmsg,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,"
"tag1,tag2,log1",
irc_protocol_tags ("privmsg", tags_2, "tag1,tag2", "", NULL));
irc_protocol_tags (NULL, "privmsg", tags_2, "tag1,tag2", "", NULL));
STRCMP_EQUAL("irc_join,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,"
"tag1,tag2,log4",
irc_protocol_tags ("join", tags_2, "tag1,tag2", "", NULL));
irc_protocol_tags (NULL, "join", tags_2, "tag1,tag2", "", NULL));
STRCMP_EQUAL("irc_privmsg,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,"
"tag1,tag2,nick_alice,log1",
irc_protocol_tags ("privmsg", tags_2, "tag1,tag2", "alice", NULL));
irc_protocol_tags (NULL, "privmsg", tags_2, "tag1,tag2", "alice", NULL));
STRCMP_EQUAL("irc_join,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,"
"tag1,tag2,nick_bob,log4",
irc_protocol_tags ("join", tags_2, "tag1,tag2", "bob", NULL));
irc_protocol_tags (NULL, "join", tags_2, "tag1,tag2", "bob", NULL));
/* command + irc_msg_tags + extra_tags + nick + address */
STRCMP_EQUAL("irc_privmsg,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,"
"tag1,tag2,nick_alice,log1",
irc_protocol_tags ("privmsg", tags_2, "tag1,tag2", "alice", ""));
irc_protocol_tags (NULL, "privmsg", tags_2, "tag1,tag2", "alice", ""));
STRCMP_EQUAL("irc_join,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,"
"tag1,tag2,nick_bob,log4",
irc_protocol_tags ("join", tags_2, "tag1,tag2", "bob", ""));
irc_protocol_tags (NULL, "join", tags_2, "tag1,tag2", "bob", ""));
STRCMP_EQUAL("irc_privmsg,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,"
"tag1,tag2,nick_alice,host_example.com,log1",
irc_protocol_tags ("privmsg", tags_2, "tag1,tag2", "alice",
irc_protocol_tags (NULL, "privmsg", tags_2, "tag1,tag2", "alice",
"example.com"));
STRCMP_EQUAL("irc_join,irc_tag_key1_value1,irc_tag_key-2;comma_value2;comma,"
"tag1,tag2,nick_bob,host_example.com,log4",
irc_protocol_tags ("join", tags_2, "tag1,tag2", "bob",
irc_protocol_tags (NULL, "join", tags_2, "tag1,tag2", "bob",
"example.com"));
hashtable_free (tags_empty);
@@ -792,6 +793,132 @@ TEST(IrcProtocolWithServer, away)
LONGS_EQUAL(0, ptr_nick->away);
}
/*
* Tests functions:
* irc_protocol_cb_batch
*/
TEST(IrcProtocolWithServer, batch)
{
struct t_irc_batch *ptr_batch;
SRV_INIT_JOIN2;
/* not enough parameters */
RECV(":server BATCH");
CHECK_ERROR_PARAMS("batch", 0, 1);
RECV(":server BATCH +test");
CHECK_ERROR_PARSE("batch", ":server BATCH +test");
/* invalid reference: does not start with '+' or '-' */
RECV(":server BATCH zzz type");
CHECK_NO_MSG;
POINTERS_EQUAL(NULL, ptr_server->batches);
/* start batch without parameters */
RECV(":server BATCH +ref example");
CHECK_NO_MSG;
ptr_batch = irc_batch_search (ptr_server, "ref");
CHECK(ptr_batch);
POINTERS_EQUAL(NULL, ptr_batch->parent_ref);
STRCMP_EQUAL("example", ptr_batch->type);
POINTERS_EQUAL(NULL, ptr_batch->parameters);
POINTERS_EQUAL(NULL, ptr_batch->messages);
LONGS_EQUAL(0, ptr_batch->end_received);
LONGS_EQUAL(0, ptr_batch->messages_processed);
/* new messages with batch reference */
RECV("@batch=ref :bob!user_b@host_b PRIVMSG #test :this is a test");
RECV("@batch=ref :bob!user_b@host_b PRIVMSG #test :second test");
RECV("@batch=ref :bob!user_b@host_b PRIVMSG #test :third test");
CHECK_NO_MSG;
/* end batch */
RECV(":server BATCH -ref");
CHECK_CHAN("bob this is a test");
CHECK_CHAN("bob second test");
CHECK_CHAN("bob third test");
POINTERS_EQUAL(NULL, irc_batch_search (ptr_server, "ref"));
/* start batch with parameters */
RECV(":server BATCH +ref example param1 param2 param3");
CHECK_NO_MSG;
ptr_batch = irc_batch_search (ptr_server, "ref");
CHECK(ptr_batch);
POINTERS_EQUAL(NULL, ptr_batch->parent_ref);
STRCMP_EQUAL("example", ptr_batch->type);
STRCMP_EQUAL("param1 param2 param3", ptr_batch->parameters);
POINTERS_EQUAL(NULL, ptr_batch->messages);
LONGS_EQUAL(0, ptr_batch->end_received);
LONGS_EQUAL(0, ptr_batch->messages_processed);
/* new messages with batch reference */
RECV("@batch=ref :bob!user_b@host_b PRIVMSG #test :test 1");
RECV("@batch=ref :bob!user_b@host_b PRIVMSG #test :test 2");
RECV("@batch=ref :bob!user_b@host_b PRIVMSG #test :test 3");
CHECK_NO_MSG;
/* end batch */
RECV(":server BATCH -ref");
CHECK_CHAN("bob test 1");
CHECK_CHAN("bob test 2");
CHECK_CHAN("bob test 3");
POINTERS_EQUAL(NULL, irc_batch_search (ptr_server, "ref"));
/* start/end batch without parameters */
RECV(":server BATCH +ref example");
RECV(":server BATCH -ref");
CHECK_NO_MSG;
POINTERS_EQUAL(NULL, irc_batch_search (ptr_server, "ref"));
/* interleaving batches */
RECV(":server BATCH +1 example");
CHECK_NO_MSG;
CHECK(irc_batch_search (ptr_server, "1"));
RECV("@batch=1 :bob!user_b@host_b PRIVMSG #test :message 1");
CHECK_NO_MSG;
RECV(":server BATCH +2 example");
CHECK_NO_MSG;
CHECK(irc_batch_search (ptr_server, "2"));
RECV("@batch=1 :bob!user_b@host_b PRIVMSG #test :message 2");
CHECK_NO_MSG;
RECV("@batch=2 :bob!user_b@host_b PRIVMSG #test :message 4");
CHECK_NO_MSG;
RECV("@batch=1 :bob!user_b@host_b PRIVMSG #test :message 3");
CHECK_NO_MSG;
RECV(":server BATCH -1");
CHECK_CHAN("bob message 1");
CHECK_CHAN("bob message 2");
CHECK_CHAN("bob message 3");
POINTERS_EQUAL(NULL, irc_batch_search (ptr_server, "1"));
RECV("@batch=2 :bob!user_b@host_b PRIVMSG #test :message 5");
CHECK_NO_MSG;
RECV(":server BATCH -2");
CHECK_CHAN("bob message 4");
CHECK_CHAN("bob message 5");
POINTERS_EQUAL(NULL, irc_batch_search (ptr_server, "2"));
/* nested batch */
RECV(":server BATCH +ref1 example1");
CHECK_NO_MSG;
CHECK(irc_batch_search (ptr_server, "ref1"));
RECV("@batch=ref1 :server BATCH +ref2 example2");
CHECK_NO_MSG;
CHECK(irc_batch_search (ptr_server, "ref2"));
RECV("@batch=ref1 :bob!user_b@host_b PRIVMSG #test :test ref1");
CHECK_NO_MSG;
RECV("@batch=ref2 :bob!user_b@host_b PRIVMSG #test :test ref2");
CHECK_NO_MSG;
RECV(":server BATCH -ref2");
CHECK_NO_MSG;
CHECK(irc_batch_search (ptr_server, "ref2"));
RECV(":server BATCH -ref1");
CHECK_CHAN("bob test ref1");
CHECK_CHAN("bob test ref2");
POINTERS_EQUAL(NULL, irc_batch_search (ptr_server, "ref1"));
POINTERS_EQUAL(NULL, irc_batch_search (ptr_server, "ref2"));
}
/*
* Tests functions:
* irc_protocol_cap_to_enable