From 0226cb574877171172c3fc3ab66feee151af98e6 Mon Sep 17 00:00:00 2001 From: Aleteoryx Date: Mon, 21 Jul 2025 19:01:03 -0400 Subject: [PATCH] support for ircv3 echo-message --- src/common/hexchat.h | 2 ++ src/common/inbound.c | 6 ++++++ src/common/outbound.c | 12 ++++++++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/common/hexchat.h b/src/common/hexchat.h index 5ead96d19f8736d5ba65300e4840337d086e4891..6e39c3a39fa375a98af88cd777800cc11c7a6912 100644 --- a/src/common/hexchat.h +++ b/src/common/hexchat.h @@ -576,6 +576,8 @@ typedef struct server unsigned int have_accnotify:1; /* cap account-notify */ unsigned int have_extjoin:1; /* cap extended-join */ unsigned int have_account_tag:1; /* cap account-tag */ + unsigned int have_echo_message:1; /* cap echo-message */ + unsigned int have_message_tags:1; /* cap message-tags */ unsigned int have_server_time:1; /* cap server-time */ unsigned int have_sasl:1; /* SASL capability */ unsigned int have_except:1; /* ban exemptions +e */ diff --git a/src/common/inbound.c b/src/common/inbound.c index 2be8154a3d76e0bfe8a33af02c4f3ba5df409c73..54f96c1e79746180f9ef9ad289148935b894a23e 100644 --- a/src/common/inbound.c +++ b/src/common/inbound.c @@ -1704,6 +1704,10 @@ inbound_toggle_caps (server *serv, const char *extensions_str, gboolean enable) serv->have_awaynotify = enable; else if (!strcmp (extension, "account-tag")) serv->have_account_tag = enable; + else if (!strcmp (extension, "message-tags")) + serv->have_message_tags = enable; + else if (!strcmp (extension, "echo-message")) + serv->have_echo_message = enable; else if (!strcmp (extension, "sasl")) { serv->have_sasl = enable; @@ -1765,6 +1769,8 @@ static const char * const supported_caps[] = { "invite-notify", "account-tag", "extended-monitor", + "message-tags", + "echo-message", /* ZNC */ "znc.in/server-time-iso", diff --git a/src/common/outbound.c b/src/common/outbound.c index b8153502bbca6780b2284fbf5d1b22d8a963c4d5..4d1993c6b51744f85d2b74df89862ed2a6660c79 100644 --- a/src/common/outbound.c +++ b/src/common/outbound.c @@ -2745,7 +2745,8 @@ cmd_me (struct session *sess, char *tbuf, char *word[], char *word_eol[]) { sess->server->p_action (sess->server, sess->channel, split_text); /* print it to screen */ - inbound_action (sess, sess->channel, sess->server->nick, "", + if (!sess->server->have_echo_message) + inbound_action (sess, sess->channel, sess->server->nick, "", split_text, TRUE, FALSE, &no_tags); @@ -2757,7 +2758,8 @@ cmd_me (struct session *sess, char *tbuf, char *word[], char *word_eol[]) sess->server->p_action (sess->server, sess->channel, act + offset); /* print it to screen */ - inbound_action (sess, sess->channel, sess->server->nick, "", + if (!sess->server->have_echo_message) + inbound_action (sess, sess->channel, sess->server->nick, "", act + offset, TRUE, FALSE, &no_tags); } else { @@ -4649,7 +4651,8 @@ handle_say (session *sess, char *text, int check_spch) while ((split_text = split_up_text (sess, text + offset, cmd_length, split_text))) { - inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick, + if (!sess->server->have_echo_message) + inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick, split_text, TRUE, FALSE, &no_tags); sess->server->p_message (sess->server, sess->channel, split_text); @@ -4659,7 +4662,8 @@ handle_say (session *sess, char *text, int check_spch) g_free (split_text); } - inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick, + if (!sess->server->have_echo_message) + inbound_chanmsg (sess->server, sess, sess->channel, sess->server->nick, text + offset, TRUE, FALSE, &no_tags); sess->server->p_message (sess->server, sess->channel, text + offset); } else