From 9003a61629acc7f6bca49584e16ad50a5fa2ea7c Mon Sep 17 00:00:00 2001 From: Emanuele Giaquinta Date: Sun, 9 Nov 2008 23:33:24 +0000 Subject: [PATCH] Move recoding of outgoing messages into irc send_message routine. Handlers for message own_{private,public} now receive the message in the client encoding. git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4890 dbcabf3a-b0e7-0310-adc4-f8d773084564 --- src/core/chat-commands.c | 8 +++----- src/fe-common/core/fe-messages.c | 18 +++++------------- src/fe-common/irc/fe-irc-messages.c | 7 ++----- src/irc/core/irc-servers.c | 5 ++++- 4 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/core/chat-commands.c b/src/core/chat-commands.c index 705ccb6b..d75522d9 100644 --- a/src/core/chat-commands.c +++ b/src/core/chat-commands.c @@ -350,7 +350,7 @@ static void cmd_join(const char *data, SERVER_REC *server) static void cmd_msg(const char *data, SERVER_REC *server, WI_ITEM_REC *item) { GHashTable *optlist; - char *target, *origtarget, *msg, *recoded; + char *target, *origtarget, *msg; void *free_arg; int free_ret, target_type = SEND_TARGET_NICK; @@ -402,16 +402,14 @@ static void cmd_msg(const char *data, SERVER_REC *server, WI_ITEM_REC *item) SEND_TARGET_CHANNEL : SEND_TARGET_NICK; } } - recoded = recode_out(server, msg, target); if (target != NULL) { - signal_emit("server sendmsg", 4, server, target, recoded, + signal_emit("server sendmsg", 4, server, target, msg, GINT_TO_POINTER(target_type)); } signal_emit(target != NULL && target_type == SEND_TARGET_CHANNEL ? "message own_public" : "message own_private", 4, - server, recoded, target, origtarget); + server, msg, target, origtarget); - g_free(recoded); if (free_ret && target != NULL) g_free(target); cmd_params_free(free_arg); } diff --git a/src/fe-common/core/fe-messages.c b/src/fe-common/core/fe-messages.c index 73dd40fc..91cb840a 100644 --- a/src/fe-common/core/fe-messages.c +++ b/src/fe-common/core/fe-messages.c @@ -259,7 +259,7 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg, WINDOW_REC *window; CHANNEL_REC *channel; char *nickmode; - char *freemsg = NULL, *recoded; + char *freemsg = NULL; int print_channel; channel = channel_find(server, target); if (channel != NULL) @@ -280,18 +280,14 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg, if (settings_get_bool("emphasis")) msg = freemsg = expand_emphasis((WI_ITEM_REC *) channel, msg); - /* ugly: recode the sent message back for printing */ - recoded = recode_in(server, msg, target); - if (!print_channel) { printformat(server, target, MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT, - TXT_OWN_MSG, server->nick, recoded, nickmode); + TXT_OWN_MSG, server->nick, msg, nickmode); } else { printformat(server, target, MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT, - TXT_OWN_MSG_CHANNEL, server->nick, target, recoded, nickmode); + TXT_OWN_MSG_CHANNEL, server->nick, target, msg, nickmode); } - g_free(recoded); g_free_not_null(nickmode); g_free_not_null(freemsg); } @@ -300,7 +296,7 @@ static void sig_message_own_private(SERVER_REC *server, const char *msg, const char *target, const char *origtarget) { QUERY_REC *query; - char *freemsg = NULL, *recoded; + char *freemsg = NULL; g_return_if_fail(server != NULL); g_return_if_fail(msg != NULL); @@ -323,15 +319,11 @@ static void sig_message_own_private(SERVER_REC *server, const char *msg, if (settings_get_bool("emphasis")) msg = freemsg = expand_emphasis((WI_ITEM_REC *) query, msg); - /* ugly: recode the sent message back for printing */ - recoded = recode_in(server, msg, target); - printformat(server, target, MSGLEVEL_MSGS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT, query == NULL ? TXT_OWN_MSG_PRIVATE : - TXT_OWN_MSG_PRIVATE_QUERY, target, recoded, server->nick); + TXT_OWN_MSG_PRIVATE_QUERY, target, msg, server->nick); - g_free(recoded); g_free_not_null(freemsg); } diff --git a/src/fe-common/irc/fe-irc-messages.c b/src/fe-common/irc/fe-irc-messages.c index 4b2301c3..c3396951 100644 --- a/src/fe-common/irc/fe-irc-messages.c +++ b/src/fe-common/irc/fe-irc-messages.c @@ -68,7 +68,7 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg, const char *target, const char *origtarget) { const char *oldtarget; - char *nickmode, *recoded; + char *nickmode; oldtarget = target; target = skip_target(IRC_SERVER(server), target); @@ -78,15 +78,12 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg, nickmode = channel_get_nickmode(channel_find(server, target), server->nick); - /* ugly: recode the sent message back for printing */ - recoded = recode_in(SERVER(server), msg, target); printformat_module("fe-common/core", server, target, MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT, TXT_OWN_MSG_CHANNEL, - server->nick, oldtarget, recoded, nickmode); + server->nick, oldtarget, msg, nickmode); g_free(nickmode); - g_free(recoded); signal_stop(); } diff --git a/src/irc/core/irc-servers.c b/src/irc/core/irc-servers.c index 99574c57..9055bb4a 100644 --- a/src/irc/core/irc-servers.c +++ b/src/irc/core/irc-servers.c @@ -79,6 +79,7 @@ static void send_message(SERVER_REC *server, const char *target, IRC_SERVER_REC *ircserver; CHANNEL_REC *channel; char *str; + char *recoded; ircserver = IRC_SERVER(server); g_return_if_fail(ircserver != NULL); @@ -92,9 +93,11 @@ static void send_message(SERVER_REC *server, const char *target, target = channel->name; } - str = g_strdup_printf("PRIVMSG %s :%s", target, msg); + recoded = recode_out(SERVER(server), msg, target); + str = g_strdup_printf("PRIVMSG %s :%s", target, recoded); irc_send_cmd_split(ircserver, str, 2, ircserver->max_msgs_in_cmd); g_free(str); + g_free(recoded); } static void server_init(IRC_SERVER_REC *server)