irc: fix parsing of MODE, 341 (invite) and CHGHOST commands when there are colons (closes #1296)

v2.8-utf8proc
Sébastien Helleu 2019-01-29 21:10:49 +01:00
parent c869aa3809
commit b38b2abe3b
15 changed files with 66 additions and 51 deletions

View File

@ -38,6 +38,7 @@ Bug fixes::
* aspell: look for suggestions only if the misspelled word has changed (issue #1175)
* buflist: add alternate key codes for kbd:[F1]/kbd:[F2] and kbd:[Alt+F1]/kbd:[Alt+F2] (compatibility with terminals)
* buflist: fix warning displayed when script buffers.pl is loaded (issue #1274)
* irc: fix parsing of MODE, 341 (invite) and CHGHOST commands when there are colons (issue #1296)
* irc: return IRC color code instead of WeeChat color code when decoding a too short ANSI color sequence
* irc: fix encoding of italic attribute when colors are removed
* irc: fix parsing of "time" message tag on FreeBSD (issue #1289)

View File

@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"PO-Revision-Date: 2018-11-17 10:36+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-29 21:01+0100\n"
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: cs\n"
@ -9139,8 +9139,8 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr "%s%sByl jste zabit uživatelem %s%s%s"
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgstr "%sMód %s%s %s[%s%s%s]%s od %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "%sMód %s%s %s[%s%s%s%s%s]%s od %s%s"
#, c-format
msgid "%sUser mode %s[%s%s%s]%s by %s%s"

View File

@ -24,8 +24,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"PO-Revision-Date: 2019-01-26 10:05+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-29 21:02+0100\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
"Language: de\n"
@ -10932,8 +10932,8 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr "%s%sDu wurdest durch %s%s%s gekillt"
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgstr "%sModus %s%s %s[%s%s%s]%s durch %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "%sModus %s%s %s[%s%s%s%s%s]%s durch %s%s"
#, c-format
msgid "%sUser mode %s[%s%s%s]%s by %s%s"

View File

@ -22,8 +22,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"PO-Revision-Date: 2018-11-17 10:36+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-29 21:02+0100\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: es\n"
@ -9462,8 +9462,8 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr "%s%sFuiste desconectado por %s%s%s"
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgstr "%sModo %s%s %s[%s%s%s]%s por %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "%sModo %s%s %s[%s%s%s%s%s]%s por %s%s"
#, c-format
msgid "%sUser mode %s[%s%s%s]%s by %s%s"

View File

@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"PO-Revision-Date: 2019-01-26 10:05+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-29 21:01+0100\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: fr\n"
@ -10676,8 +10676,8 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr "%s%sVous avez été tué par %s%s%s"
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgstr "%sMode %s%s %s[%s%s%s]%s par %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "%sMode %s%s %s[%s%s%s%s%s]%s par %s%s"
#, c-format
msgid "%sUser mode %s[%s%s%s]%s by %s%s"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2018-11-17 10:36+0100\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8537,7 +8537,7 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr "Az új neved: %s%s\n"
#, fuzzy, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "A %s%s %s[%s%s%s]%s üzemmódot bekapcsolta: %s%s\n"
#, fuzzy, c-format

View File

@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"PO-Revision-Date: 2018-11-17 10:36+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-29 21:03+0100\n"
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: it\n"
@ -9658,8 +9658,8 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr "%s%sSei stato ucciso da %s%s%s"
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgstr "%sModalità %s%s %s[%s%s%s]%s da %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "%sModalità %s%s %s[%s%s%s%s%s]%s da %s%s"
#, c-format
msgid "%sUser mode %s[%s%s%s]%s by %s%s"

View File

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-26 10:06+0100\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/weechat/tree/master/"
@ -10252,8 +10252,8 @@ msgstr "%s%s%s%s%s に kill されました %s(%s%s%s)"
msgid "%s%sYou were killed by %s%s%s"
msgstr "%s%s%s%s%s に kill されました"
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
#, fuzzy, c-format
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "%1$s%9$s%10$s%8$s がモードを変更 %2$s%3$s %4$s[%5$s%6$s%7$s]%8$s"
#, c-format

View File

@ -22,8 +22,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"PO-Revision-Date: 2019-01-26 10:06+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-29 21:04+0100\n"
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
"Language: pl\n"
@ -10426,8 +10426,8 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr "%s%sZostałeś zabity przez %s%s%s"
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgstr "%sTryb %s%s %s[%s%s%s]%s ustawiony przez %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "%sTryb %s%s %s[%s%s%s%s%s]%s ustawiony przez %s%s"
#, c-format
msgid "%sUser mode %s[%s%s%s]%s by %s%s"

View File

@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"PO-Revision-Date: 2019-01-20 18:45+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-29 21:04+0100\n"
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
"Language-Team: Portuguese <>\n"
"Language: pt\n"
@ -10119,8 +10119,8 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr "%s%sFoi morto por %s%s%s"
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgstr "%sModo %s%s %s[%s%s%s]%s por %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "%sModo %s%s %s[%s%s%s%s%s]%s por %s%s"
#, c-format
msgid "%sUser mode %s[%s%s%s]%s by %s%s"

View File

@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"PO-Revision-Date: 2018-11-17 10:36+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-29 21:05+0100\n"
"Last-Translator: Eduardo Elias <camponez@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: pt_BR\n"
@ -8978,8 +8978,8 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr ""
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgstr "%sModo %s%s %s[%s%s%s]%s por %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "%sModo %s%s %s[%s%s%s%s%s]%s por %s%s"
#, c-format
msgid "%sUser mode %s[%s%s%s]%s by %s%s"

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2018-11-17 10:36+0100\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@ -8574,7 +8574,7 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr "Теперь вы известны как %s%s\n"
#, fuzzy, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr "Режим %s%s %s[%s%s%s]%s установлен пользователем %s%s\n"
#, fuzzy, c-format

View File

@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"PO-Revision-Date: 2018-11-17 10:36+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\n"
"PO-Revision-Date: 2019-01-29 21:05+0100\n"
"Last-Translator: Hasan Kiran <sunder67@hotmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: tr\n"
@ -7765,7 +7765,7 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr ""
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr ""
#, c-format

View File

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2019-01-26 09:58+0100\n"
"POT-Creation-Date: 2019-01-29 17:06+0100\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"
@ -7627,7 +7627,7 @@ msgid "%s%sYou were killed by %s%s%s"
msgstr ""
#, c-format
msgid "%sMode %s%s %s[%s%s%s]%s by %s%s"
msgid "%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"
msgstr ""
#, c-format

View File

@ -767,12 +767,13 @@ IRC_PROTOCOL_CALLBACK(cap)
* :nick!user@host CHGHOST user new.host.goes.here
* :nick!user@host CHGHOST newuser host
* :nick!user@host CHGHOST newuser new.host.goes.here
* :nick!user@host CHGHOST newuser :new.host.goes.here
*/
IRC_PROTOCOL_CALLBACK(chghost)
{
int length, local_chghost, smart_filter;
char *str_host;
char *str_host, *pos_new_host;
struct t_irc_channel *ptr_channel;
struct t_irc_nick *ptr_nick;
struct t_irc_channel_speaking *ptr_nick_speaking;
@ -782,7 +783,9 @@ IRC_PROTOCOL_CALLBACK(chghost)
local_chghost = (irc_server_strcasecmp (server, nick, server->nick) == 0);
length = strlen (argv[2]) + 1 + strlen (argv[3]) + 1;
pos_new_host = (argv_eol[3][0] == ':') ? argv_eol[3] + 1 : argv_eol[3];
length = strlen (argv[2]) + 1 + strlen (pos_new_host) + 1;
str_host = malloc (length);
if (!str_host)
{
@ -793,7 +796,7 @@ IRC_PROTOCOL_CALLBACK(chghost)
return WEECHAT_RC_OK;
}
snprintf (str_host, length, "%s@%s", argv[2], argv[3]);
snprintf (str_host, length, "%s@%s", argv[2], pos_new_host);
for (ptr_channel = server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
{
@ -1380,11 +1383,12 @@ IRC_PROTOCOL_CALLBACK(kill)
*
* Message looks like:
* :nick!user@host MODE #test +o nick
* :nick!user@host MODE #test :+o :nick
*/
IRC_PROTOCOL_CALLBACK(mode)
{
char *pos_modes;
char *pos_modes, *pos_modes_args;
int smart_filter, local_mode;
struct t_irc_channel *ptr_channel;
struct t_irc_nick *ptr_nick;
@ -1393,7 +1397,10 @@ IRC_PROTOCOL_CALLBACK(mode)
IRC_PROTOCOL_MIN_ARGS(4);
IRC_PROTOCOL_CHECK_HOST;
pos_modes = (argv_eol[3][0] == ':') ? argv_eol[3] + 1 : argv_eol[3];
pos_modes = (argv[3][0] == ':') ? argv[3] + 1 : argv[3];
pos_modes_args = NULL;
if (argc > 4)
pos_modes_args = (argv_eol[4][0] == ':') ? argv_eol[4] + 1 : argv_eol[4];
if (irc_channel_is_channel (server, argv[2]))
{
@ -1415,13 +1422,15 @@ IRC_PROTOCOL_CALLBACK(mode)
(smart_filter && !local_mode) ?
"irc_smart_filter" : NULL,
NULL, address),
_("%sMode %s%s %s[%s%s%s]%s by %s%s"),
_("%sMode %s%s %s[%s%s%s%s%s]%s by %s%s"),
weechat_prefix ("network"),
IRC_COLOR_CHAT_CHANNEL,
(ptr_channel) ? ptr_channel->name : argv[2],
IRC_COLOR_CHAT_DELIMITERS,
IRC_COLOR_RESET,
pos_modes,
(pos_modes_args) ? " " : "",
(pos_modes_args) ? pos_modes_args : "",
IRC_COLOR_CHAT_DELIMITERS,
IRC_COLOR_RESET,
irc_nick_color_for_msg (server, 1, ptr_nick, nick),
@ -4032,12 +4041,17 @@ IRC_PROTOCOL_CALLBACK(338)
*
* Message looks like:
* :server 341 mynick nick #channel
* :server 341 mynick nick :#channel
*/
IRC_PROTOCOL_CALLBACK(341)
{
char *pos_channel;
IRC_PROTOCOL_MIN_ARGS(5);
pos_channel = (argv[4][0] == ':') ? argv[4] + 1 : argv[4];
weechat_printf_date_tags (
irc_msgbuffer_get_target_buffer (server, argv[2], command, NULL, NULL),
date,
@ -4051,7 +4065,7 @@ IRC_PROTOCOL_CALLBACK(341)
argv[3],
IRC_COLOR_RESET,
IRC_COLOR_CHAT_CHANNEL,
argv[4],
pos_channel,
IRC_COLOR_RESET);
return WEECHAT_RC_OK;