mirror of
https://github.com/weechat/weechat.git
synced 2026-07-01 23:36:37 +02:00
irc: add smart filtering for chghost messages
This commit is contained in:
@@ -650,12 +650,16 @@ IRC_PROTOCOL_CALLBACK(cap)
|
||||
|
||||
IRC_PROTOCOL_CALLBACK(chghost)
|
||||
{
|
||||
int length;
|
||||
int length, local_chghost, smart_filter;
|
||||
char *str_host;
|
||||
struct t_irc_channel *ptr_channel;
|
||||
struct t_irc_nick *ptr_nick;
|
||||
struct t_irc_channel_speaking *ptr_nick_speaking;
|
||||
|
||||
IRC_PROTOCOL_MIN_ARGS(4);
|
||||
IRC_PROTOCOL_CHECK_HOST;
|
||||
|
||||
local_chghost = (irc_server_strcasecmp (server, nick, server->nick) == 0);
|
||||
|
||||
length = strlen (argv[2]) + 1 + strlen (argv[3]) + 1;
|
||||
str_host = malloc (length);
|
||||
@@ -668,22 +672,35 @@ IRC_PROTOCOL_CALLBACK(chghost)
|
||||
ptr_nick = irc_nick_search (server, ptr_channel, nick);
|
||||
if (ptr_nick)
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
irc_msgbuffer_get_target_buffer (
|
||||
server, NULL, command, NULL, ptr_channel->buffer),
|
||||
date,
|
||||
irc_protocol_tags (command, NULL, nick, address),
|
||||
_("%s%s%s%s (%s%s%s)%s has changed host to %s%s"),
|
||||
weechat_prefix ("network"),
|
||||
irc_nick_color_for_msg (server, 1, ptr_nick, nick),
|
||||
nick,
|
||||
IRC_COLOR_CHAT_DELIMITERS,
|
||||
IRC_COLOR_CHAT_HOST,
|
||||
address,
|
||||
IRC_COLOR_CHAT_DELIMITERS,
|
||||
IRC_COLOR_MESSAGE_CHGHOST,
|
||||
IRC_COLOR_CHAT_HOST,
|
||||
str_host);
|
||||
if (!ignored)
|
||||
{
|
||||
ptr_nick_speaking = ((weechat_config_boolean (irc_config_look_smart_filter))
|
||||
&& (weechat_config_boolean (irc_config_look_smart_filter_chghost))) ?
|
||||
irc_channel_nick_speaking_time_search (server, ptr_channel, nick, 1) : NULL;
|
||||
smart_filter = (!local_chghost
|
||||
&& weechat_config_boolean (irc_config_look_smart_filter)
|
||||
&& weechat_config_boolean (irc_config_look_smart_filter_chghost)
|
||||
&& !ptr_nick_speaking);
|
||||
|
||||
weechat_printf_date_tags (
|
||||
irc_msgbuffer_get_target_buffer (
|
||||
server, NULL, command, NULL, ptr_channel->buffer),
|
||||
date,
|
||||
irc_protocol_tags (command,
|
||||
smart_filter ? "irc_smart_filter" : NULL,
|
||||
nick, address),
|
||||
_("%s%s%s%s (%s%s%s)%s has changed host to %s%s"),
|
||||
weechat_prefix ("network"),
|
||||
irc_nick_color_for_msg (server, 1, ptr_nick, nick),
|
||||
nick,
|
||||
IRC_COLOR_CHAT_DELIMITERS,
|
||||
IRC_COLOR_CHAT_HOST,
|
||||
address,
|
||||
IRC_COLOR_CHAT_DELIMITERS,
|
||||
IRC_COLOR_MESSAGE_CHGHOST,
|
||||
IRC_COLOR_CHAT_HOST,
|
||||
str_host);
|
||||
}
|
||||
|
||||
if (ptr_nick->host)
|
||||
free (ptr_nick->host);
|
||||
|
||||
Reference in New Issue
Block a user