forked from PsychoticNinja/irssi
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
This commit is contained in:
parent
9ce4352e1d
commit
9003a61629
@ -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)
|
static void cmd_msg(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
|
||||||
{
|
{
|
||||||
GHashTable *optlist;
|
GHashTable *optlist;
|
||||||
char *target, *origtarget, *msg, *recoded;
|
char *target, *origtarget, *msg;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
int free_ret, target_type = SEND_TARGET_NICK;
|
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;
|
SEND_TARGET_CHANNEL : SEND_TARGET_NICK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
recoded = recode_out(server, msg, target);
|
|
||||||
if (target != NULL) {
|
if (target != NULL) {
|
||||||
signal_emit("server sendmsg", 4, server, target, recoded,
|
signal_emit("server sendmsg", 4, server, target, msg,
|
||||||
GINT_TO_POINTER(target_type));
|
GINT_TO_POINTER(target_type));
|
||||||
}
|
}
|
||||||
signal_emit(target != NULL && target_type == SEND_TARGET_CHANNEL ?
|
signal_emit(target != NULL && target_type == SEND_TARGET_CHANNEL ?
|
||||||
"message own_public" : "message own_private", 4,
|
"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);
|
if (free_ret && target != NULL) g_free(target);
|
||||||
cmd_params_free(free_arg);
|
cmd_params_free(free_arg);
|
||||||
}
|
}
|
||||||
|
@ -259,7 +259,7 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
|||||||
WINDOW_REC *window;
|
WINDOW_REC *window;
|
||||||
CHANNEL_REC *channel;
|
CHANNEL_REC *channel;
|
||||||
char *nickmode;
|
char *nickmode;
|
||||||
char *freemsg = NULL, *recoded;
|
char *freemsg = NULL;
|
||||||
int print_channel;
|
int print_channel;
|
||||||
channel = channel_find(server, target);
|
channel = channel_find(server, target);
|
||||||
if (channel != NULL)
|
if (channel != NULL)
|
||||||
@ -280,18 +280,14 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
|||||||
if (settings_get_bool("emphasis"))
|
if (settings_get_bool("emphasis"))
|
||||||
msg = freemsg = expand_emphasis((WI_ITEM_REC *) channel, msg);
|
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) {
|
if (!print_channel) {
|
||||||
printformat(server, target, MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
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 {
|
} else {
|
||||||
printformat(server, target, MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
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(nickmode);
|
||||||
g_free_not_null(freemsg);
|
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)
|
const char *target, const char *origtarget)
|
||||||
{
|
{
|
||||||
QUERY_REC *query;
|
QUERY_REC *query;
|
||||||
char *freemsg = NULL, *recoded;
|
char *freemsg = NULL;
|
||||||
|
|
||||||
g_return_if_fail(server != NULL);
|
g_return_if_fail(server != NULL);
|
||||||
g_return_if_fail(msg != 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"))
|
if (settings_get_bool("emphasis"))
|
||||||
msg = freemsg = expand_emphasis((WI_ITEM_REC *) query, msg);
|
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,
|
printformat(server, target,
|
||||||
MSGLEVEL_MSGS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
MSGLEVEL_MSGS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT,
|
||||||
query == NULL ? TXT_OWN_MSG_PRIVATE :
|
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);
|
g_free_not_null(freemsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
|||||||
const char *target, const char *origtarget)
|
const char *target, const char *origtarget)
|
||||||
{
|
{
|
||||||
const char *oldtarget;
|
const char *oldtarget;
|
||||||
char *nickmode, *recoded;
|
char *nickmode;
|
||||||
|
|
||||||
oldtarget = target;
|
oldtarget = target;
|
||||||
target = skip_target(IRC_SERVER(server), 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),
|
nickmode = channel_get_nickmode(channel_find(server, target),
|
||||||
server->nick);
|
server->nick);
|
||||||
|
|
||||||
/* ugly: recode the sent message back for printing */
|
|
||||||
recoded = recode_in(SERVER(server), msg, target);
|
|
||||||
printformat_module("fe-common/core", server, target,
|
printformat_module("fe-common/core", server, target,
|
||||||
MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT |
|
MSGLEVEL_PUBLIC | MSGLEVEL_NOHILIGHT |
|
||||||
MSGLEVEL_NO_ACT,
|
MSGLEVEL_NO_ACT,
|
||||||
TXT_OWN_MSG_CHANNEL,
|
TXT_OWN_MSG_CHANNEL,
|
||||||
server->nick, oldtarget, recoded, nickmode);
|
server->nick, oldtarget, msg, nickmode);
|
||||||
g_free(nickmode);
|
g_free(nickmode);
|
||||||
g_free(recoded);
|
|
||||||
signal_stop();
|
signal_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,6 +79,7 @@ static void send_message(SERVER_REC *server, const char *target,
|
|||||||
IRC_SERVER_REC *ircserver;
|
IRC_SERVER_REC *ircserver;
|
||||||
CHANNEL_REC *channel;
|
CHANNEL_REC *channel;
|
||||||
char *str;
|
char *str;
|
||||||
|
char *recoded;
|
||||||
|
|
||||||
ircserver = IRC_SERVER(server);
|
ircserver = IRC_SERVER(server);
|
||||||
g_return_if_fail(ircserver != NULL);
|
g_return_if_fail(ircserver != NULL);
|
||||||
@ -92,9 +93,11 @@ static void send_message(SERVER_REC *server, const char *target,
|
|||||||
target = channel->name;
|
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);
|
irc_send_cmd_split(ircserver, str, 2, ircserver->max_msgs_in_cmd);
|
||||||
g_free(str);
|
g_free(str);
|
||||||
|
g_free(recoded);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void server_init(IRC_SERVER_REC *server)
|
static void server_init(IRC_SERVER_REC *server)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user