~aleteoryx/sexchat

0226cb574877171172c3fc3ab66feee151af98e6 — Aleteoryx 4 months ago ff2a8d6
support for ircv3 echo-message
3 files changed, 16 insertions(+), 4 deletions(-)

M src/common/hexchat.h
M src/common/inbound.c
M src/common/outbound.c
M src/common/hexchat.h => src/common/hexchat.h +2 -0
@@ 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 */

M src/common/inbound.c => src/common/inbound.c +6 -0
@@ 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",

M src/common/outbound.c => src/common/outbound.c +8 -4
@@ 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