forked from PsychoticNinja/irssi
Added <tag>/<target> support for recode.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3692 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
5f81451df6
commit
7be7dd374c
@ -4,9 +4,11 @@
|
|||||||
RECODE
|
RECODE
|
||||||
%|List the conversion database
|
%|List the conversion database
|
||||||
|
|
||||||
RECODE ADD %|[<target>] <charset>
|
RECODE ADD %|[[<tag>/]<target>] <charset>
|
||||||
%|Add an entry to the conversion database (if target is omitted,
|
%|Add an entry to the conversion database (if target is omitted,
|
||||||
the current channel or query will be used)
|
the current channel or query will be used). You can specify the
|
||||||
|
<tag> to have different charsets for the same <target> for
|
||||||
|
different networks.
|
||||||
|
|
||||||
RECODE REMOVE %|[<target>]
|
RECODE REMOVE %|[<target>]
|
||||||
%|Remove an entry from the conversion database (if target is
|
%|Remove an entry from the conversion database (if target is
|
||||||
@ -46,3 +48,5 @@ You can enable it per target by adding //TRANSLIT to the <charset>
|
|||||||
|
|
||||||
Hint: <charset> can be almost everything listed by 'iconv -l'
|
Hint: <charset> can be almost everything listed by 'iconv -l'
|
||||||
|
|
||||||
|
See also: NETWORK
|
||||||
|
|
||||||
|
@ -402,7 +402,7 @@ 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(msg, target);
|
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, recoded,
|
||||||
GINT_TO_POINTER(target_type));
|
GINT_TO_POINTER(target_type));
|
||||||
|
@ -65,13 +65,14 @@ static gboolean is_translit(const char *charset)
|
|||||||
return (pos != NULL);
|
return (pos != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *recode_in(const char *str, const char *target)
|
char *recode_in(const SERVER_REC *server, const char *str, const char *target)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_GLIB2
|
#ifdef HAVE_GLIB2
|
||||||
const char *from = NULL;
|
const char *from = NULL;
|
||||||
const char *to = NULL;
|
const char *to = NULL;
|
||||||
char *translit_to = NULL;
|
char *translit_to = NULL;
|
||||||
char *recoded = NULL;
|
char *recoded = NULL;
|
||||||
|
char *tagtarget = NULL;
|
||||||
gboolean term_is_utf8, str_is_utf8, translit;
|
gboolean term_is_utf8, str_is_utf8, translit;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
@ -83,7 +84,13 @@ char *recode_in(const char *str, const char *target)
|
|||||||
str_is_utf8 = g_utf8_validate(str, len, NULL);
|
str_is_utf8 = g_utf8_validate(str, len, NULL);
|
||||||
translit = settings_get_bool("recode_transliterate");
|
translit = settings_get_bool("recode_transliterate");
|
||||||
|
|
||||||
if (target != NULL)
|
if (server != NULL)
|
||||||
|
tagtarget = server->tag == NULL ? NULL :
|
||||||
|
g_strdup_printf("%s/%s", server->tag, target);
|
||||||
|
if (tagtarget != NULL)
|
||||||
|
from = iconfig_get_str("conversions", tagtarget, NULL);
|
||||||
|
g_free(tagtarget);
|
||||||
|
if (target != NULL && from == NULL)
|
||||||
from = iconfig_get_str("conversions", target, NULL);
|
from = iconfig_get_str("conversions", target, NULL);
|
||||||
|
|
||||||
term_is_utf8 = recode_get_charset(&to);
|
term_is_utf8 = recode_get_charset(&to);
|
||||||
@ -115,7 +122,7 @@ char *recode_in(const char *str, const char *target)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
char *recode_out(const char *str, const char *target)
|
char *recode_out(const SERVER_REC *server, const char *str, const char *target)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_GLIB2
|
#ifdef HAVE_GLIB2
|
||||||
char *recoded = NULL;
|
char *recoded = NULL;
|
||||||
@ -133,8 +140,16 @@ char *recode_out(const char *str, const char *target)
|
|||||||
if (target) {
|
if (target) {
|
||||||
const char *to = NULL;
|
const char *to = NULL;
|
||||||
char *translit_to = NULL;
|
char *translit_to = NULL;
|
||||||
|
char *tagtarget = NULL;
|
||||||
|
|
||||||
to = iconfig_get_str("conversions", target, NULL);
|
if (server != NULL)
|
||||||
|
tagtarget = server->tag == NULL ? NULL :
|
||||||
|
g_strdup_printf("%s/%s", server->tag, target);
|
||||||
|
if (tagtarget != NULL)
|
||||||
|
to = iconfig_get_str("conversions", tagtarget, NULL);
|
||||||
|
else
|
||||||
|
to = iconfig_get_str("conversions", target, NULL);
|
||||||
|
g_free(tagtarget);
|
||||||
if (to == NULL || *to == '\0')
|
if (to == NULL || *to == '\0')
|
||||||
/* default outgoing charset if set */
|
/* default outgoing charset if set */
|
||||||
to = settings_get_str("recode_out_default_charset");
|
to = settings_get_str("recode_out_default_charset");
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#ifndef __RECODE_H
|
#ifndef __RECODE_H
|
||||||
#define __RECODE_H
|
#define __RECODE_H
|
||||||
|
|
||||||
char *recode_in (const char *str, const char *target);
|
char *recode_in (const SERVER_REC *server, const char *str, const char *target);
|
||||||
char *recode_out (const char *str, const char *target);
|
char *recode_out (const SERVER_REC *server, const char *str, const char *target);
|
||||||
gboolean is_valid_charset(const char *charset);
|
gboolean is_valid_charset(const char *charset);
|
||||||
|
|
||||||
void recode_init (void);
|
void recode_init (void);
|
||||||
|
@ -363,7 +363,7 @@ static void sig_message_quit(SERVER_REC *server, const char *nick,
|
|||||||
window = window_item_window((WI_ITEM_REC *) rec);
|
window = window_item_window((WI_ITEM_REC *) rec);
|
||||||
if (g_slist_find(windows, window) == NULL) {
|
if (g_slist_find(windows, window) == NULL) {
|
||||||
windows = g_slist_append(windows, window);
|
windows = g_slist_append(windows, window);
|
||||||
recoded = recode_in(reason, rec->visible_name);
|
recoded = recode_in(server, reason, rec->visible_name);
|
||||||
printformat(server, rec->visible_name,
|
printformat(server, rec->visible_name,
|
||||||
MSGLEVEL_QUITS,
|
MSGLEVEL_QUITS,
|
||||||
TXT_QUIT, nick, address, recoded,
|
TXT_QUIT, nick, address, recoded,
|
||||||
@ -380,7 +380,7 @@ static void sig_message_quit(SERVER_REC *server, const char *nick,
|
|||||||
display the quit there too */
|
display the quit there too */
|
||||||
QUERY_REC *query = query_find(server, nick);
|
QUERY_REC *query = query_find(server, nick);
|
||||||
if (query != NULL) {
|
if (query != NULL) {
|
||||||
recoded = recode_in(reason, nick);
|
recoded = recode_in(server, reason, nick);
|
||||||
printformat(server, nick, MSGLEVEL_QUITS,
|
printformat(server, nick, MSGLEVEL_QUITS,
|
||||||
TXT_QUIT, nick, address, recoded, "");
|
TXT_QUIT, nick, address, recoded, "");
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
@ -391,7 +391,7 @@ static void sig_message_quit(SERVER_REC *server, const char *nick,
|
|||||||
if (chans->len > 0)
|
if (chans->len > 0)
|
||||||
g_string_truncate(chans, chans->len-1);
|
g_string_truncate(chans, chans->len-1);
|
||||||
/* at least recode_fallback will be used */
|
/* at least recode_fallback will be used */
|
||||||
recoded = recode_in(reason, nick);
|
recoded = recode_in(server, reason, nick);
|
||||||
printformat(server, print_channel, MSGLEVEL_QUITS,
|
printformat(server, print_channel, MSGLEVEL_QUITS,
|
||||||
count <= 1 ? TXT_QUIT : TXT_QUIT_ONCE,
|
count <= 1 ? TXT_QUIT : TXT_QUIT_ONCE,
|
||||||
nick, address, recoded, chans->str);
|
nick, address, recoded, chans->str);
|
||||||
|
@ -192,7 +192,7 @@ static void message_own_public(const SERVER_REC *server, const char *msg,
|
|||||||
const char *target)
|
const char *target)
|
||||||
{
|
{
|
||||||
char *recoded;
|
char *recoded;
|
||||||
recoded = recode_in(msg, target);
|
recoded = recode_in(server, msg, target);
|
||||||
signal_continue(3, server, recoded, target);
|
signal_continue(3, server, recoded, target);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
}
|
}
|
||||||
@ -201,7 +201,7 @@ static void message_own_private(const SERVER_REC *server, const char *msg,
|
|||||||
const char *target, const char *orig_target)
|
const char *target, const char *orig_target)
|
||||||
{
|
{
|
||||||
char *recoded;
|
char *recoded;
|
||||||
recoded = recode_in(msg, target);
|
recoded = recode_in(server, msg, target);
|
||||||
signal_continue(4, server, recoded, target, orig_target);
|
signal_continue(4, server, recoded, target, orig_target);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
}
|
}
|
||||||
@ -211,7 +211,7 @@ static void message_irc_own_action(const SERVER_REC *server, const char *msg,
|
|||||||
const char *target)
|
const char *target)
|
||||||
{
|
{
|
||||||
char *recoded;
|
char *recoded;
|
||||||
recoded = recode_in(msg, target);
|
recoded = recode_in(server, msg, target);
|
||||||
signal_continue(5, server, recoded, nick, addr, target);
|
signal_continue(5, server, recoded, nick, addr, target);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
}
|
}
|
||||||
@ -220,7 +220,7 @@ static void message_irc_own_notice(const SERVER_REC *server, const char *msg,
|
|||||||
const char *channel)
|
const char *channel)
|
||||||
{
|
{
|
||||||
char *recoded;
|
char *recoded;
|
||||||
recoded = recode_in(msg, channel);
|
recoded = recode_in(server, msg, channel);
|
||||||
signal_continue(3, server, recoded, channel);
|
signal_continue(3, server, recoded, channel);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@ static void event_who(IRC_SERVER_REC *server, const char *data)
|
|||||||
while (*realname == ' ') realname++;
|
while (*realname == ' ') realname++;
|
||||||
if (realname > hops) realname[-1] = '\0';
|
if (realname > hops) realname[-1] = '\0';
|
||||||
|
|
||||||
recoded = recode_in(realname, nick);
|
recoded = recode_in(SERVER(server), realname, nick);
|
||||||
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_WHO,
|
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_WHO,
|
||||||
channel, nick, stat, hops, user, host, recoded, serv);
|
channel, nick, stat, hops, user, host, recoded, serv);
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ static void event_topic_get(IRC_SERVER_REC *server, const char *data)
|
|||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 3, NULL, &channel, &topic);
|
params = event_get_params(data, 3, NULL, &channel, &topic);
|
||||||
recoded = recode_in(topic, channel);
|
recoded = recode_in(SERVER(server), topic, channel);
|
||||||
channel = get_visible_target(server, channel);
|
channel = get_visible_target(server, channel);
|
||||||
printformat(server, channel, MSGLEVEL_CRAP,
|
printformat(server, channel, MSGLEVEL_CRAP,
|
||||||
IRCTXT_TOPIC, channel, recoded);
|
IRCTXT_TOPIC, channel, recoded);
|
||||||
@ -316,7 +316,7 @@ static void event_away(IRC_SERVER_REC *server, const char *data)
|
|||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 3, NULL, &nick, &awaymsg);
|
params = event_get_params(data, 3, NULL, &nick, &awaymsg);
|
||||||
recoded = recode_in(awaymsg, nick);
|
recoded = recode_in(SERVER(server), awaymsg, nick);
|
||||||
if (!settings_get_bool("show_away_once") ||
|
if (!settings_get_bool("show_away_once") ||
|
||||||
last_away_nick == NULL || g_strcasecmp(last_away_nick, nick) != 0 ||
|
last_away_nick == NULL || g_strcasecmp(last_away_nick, nick) != 0 ||
|
||||||
last_away_msg == NULL || g_strcasecmp(last_away_msg, awaymsg) != 0) {
|
last_away_msg == NULL || g_strcasecmp(last_away_msg, awaymsg) != 0) {
|
||||||
|
@ -52,7 +52,7 @@ static void event_privmsg(IRC_SERVER_REC *server, const char *data,
|
|||||||
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
|
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
|
||||||
if (nick == NULL) nick = server->real_address;
|
if (nick == NULL) nick = server->real_address;
|
||||||
if (addr == NULL) addr = "";
|
if (addr == NULL) addr = "";
|
||||||
recoded = recode_in(msg, target);
|
recoded = recode_in(SERVER(server), msg, target);
|
||||||
if (*target == '@' && ischannel(target[1])) {
|
if (*target == '@' && ischannel(target[1])) {
|
||||||
/* Hybrid 6 feature, send msg to all ops in channel */
|
/* Hybrid 6 feature, send msg to all ops in channel */
|
||||||
signal_emit("message irc op_public", 5,
|
signal_emit("message irc op_public", 5,
|
||||||
@ -76,7 +76,7 @@ static void ctcp_action(IRC_SERVER_REC *server, const char *data,
|
|||||||
char *recoded;
|
char *recoded;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
recoded = recode_in(data, target);
|
recoded = recode_in(SERVER(server), data, target);
|
||||||
signal_emit("message irc action", 5,
|
signal_emit("message irc action", 5,
|
||||||
server, recoded, nick, addr,
|
server, recoded, nick, addr,
|
||||||
get_visible_target(server, target));
|
get_visible_target(server, target));
|
||||||
@ -91,7 +91,7 @@ static void event_notice(IRC_SERVER_REC *server, const char *data,
|
|||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
|
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
|
||||||
recoded = recode_in(msg, target);
|
recoded = recode_in(SERVER(server), msg, target);
|
||||||
if (nick == NULL) {
|
if (nick == NULL) {
|
||||||
nick = server->real_address == NULL ?
|
nick = server->real_address == NULL ?
|
||||||
server->connrec->address :
|
server->connrec->address :
|
||||||
@ -129,7 +129,7 @@ static void event_part(IRC_SERVER_REC *server, const char *data,
|
|||||||
|
|
||||||
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
||||||
&channel, &reason);
|
&channel, &reason);
|
||||||
recoded = recode_in(reason, channel);
|
recoded = recode_in(SERVER(server), reason, channel);
|
||||||
signal_emit("message part", 5, server,
|
signal_emit("message part", 5, server,
|
||||||
get_visible_target(server, channel), nick, addr, recoded);
|
get_visible_target(server, channel), nick, addr, recoded);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
@ -154,7 +154,7 @@ static void event_kick(IRC_SERVER_REC *server, const char *data,
|
|||||||
|
|
||||||
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
|
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
|
||||||
&channel, &nick, &reason);
|
&channel, &nick, &reason);
|
||||||
recoded = recode_in(reason, channel);
|
recoded = recode_in(SERVER(server), reason, channel);
|
||||||
signal_emit("message kick", 6,
|
signal_emit("message kick", 6,
|
||||||
server, get_visible_target(server, channel),
|
server, get_visible_target(server, channel),
|
||||||
nick, kicker, addr, recoded);
|
nick, kicker, addr, recoded);
|
||||||
@ -261,7 +261,7 @@ static void event_topic(IRC_SERVER_REC *server, const char *data,
|
|||||||
|
|
||||||
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
|
||||||
&channel, &topic);
|
&channel, &topic);
|
||||||
recoded = recode_in(topic, channel);
|
recoded = recode_in(SERVER(server), topic, channel);
|
||||||
signal_emit("message topic", 5, server,
|
signal_emit("message topic", 5, server,
|
||||||
get_visible_target(server, channel), recoded, nick, addr);
|
get_visible_target(server, channel), recoded, nick, addr);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
|
@ -68,7 +68,7 @@ static void cmd_me(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item)
|
|||||||
cmd_return_error(CMDERR_NOT_CONNECTED);
|
cmd_return_error(CMDERR_NOT_CONNECTED);
|
||||||
|
|
||||||
target = window_item_get_target(item);
|
target = window_item_get_target(item);
|
||||||
recoded = recode_out(data, target);
|
recoded = recode_out(SERVER(server), data, target);
|
||||||
|
|
||||||
signal_emit("message irc own_action", 3, server, recoded,
|
signal_emit("message irc own_action", 3, server, recoded,
|
||||||
item->visible_name);
|
item->visible_name);
|
||||||
@ -100,7 +100,7 @@ static void cmd_action(const char *data, IRC_SERVER_REC *server)
|
|||||||
if (server == NULL || !server->connected)
|
if (server == NULL || !server->connected)
|
||||||
cmd_param_error(CMDERR_NOT_CONNECTED);
|
cmd_param_error(CMDERR_NOT_CONNECTED);
|
||||||
|
|
||||||
recoded = recode_out(text, target);
|
recoded = recode_out(SERVER(server), text, target);
|
||||||
irc_send_cmdv(server, "PRIVMSG %s :\001ACTION %s\001", target, recoded);
|
irc_send_cmdv(server, "PRIVMSG %s :\001ACTION %s\001", target, recoded);
|
||||||
|
|
||||||
target = skip_target(target);
|
target = skip_target(target);
|
||||||
@ -128,7 +128,7 @@ static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
|||||||
if (*target == '\0' || *msg == '\0')
|
if (*target == '\0' || *msg == '\0')
|
||||||
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
recoded = recode_out(msg, target);
|
recoded = recode_out(SERVER(server), msg, target);
|
||||||
signal_emit("message irc own_notice", 3, server, recoded, target);
|
signal_emit("message irc own_notice", 3, server, recoded, target);
|
||||||
|
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
|
@ -20,7 +20,7 @@ static void event_whois(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
params = event_get_params(data, 6, NULL, &nick, &user,
|
params = event_get_params(data, 6, NULL, &nick, &user,
|
||||||
&host, NULL, &realname);
|
&host, NULL, &realname);
|
||||||
recoded = recode_in(realname, nick);
|
recoded = recode_in(SERVER(server), realname, nick);
|
||||||
printformat(server, nick, MSGLEVEL_CRAP,
|
printformat(server, nick, MSGLEVEL_CRAP,
|
||||||
IRCTXT_WHOIS, nick, user, host, recoded);
|
IRCTXT_WHOIS, nick, user, host, recoded);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
@ -255,7 +255,7 @@ static void event_whois_channels(IRC_SERVER_REC *server, const char *data)
|
|||||||
chans = show_lowascii(chans);
|
chans = show_lowascii(chans);
|
||||||
if (settings_get_bool("whois_hide_safe_channel_id"))
|
if (settings_get_bool("whois_hide_safe_channel_id"))
|
||||||
hide_safe_channel_id(server, chans);
|
hide_safe_channel_id(server, chans);
|
||||||
recoded = recode_in(chans, nick);
|
recoded = recode_in(SERVER(server), chans, nick);
|
||||||
printformat(server, nick, MSGLEVEL_CRAP,
|
printformat(server, nick, MSGLEVEL_CRAP,
|
||||||
IRCTXT_WHOIS_CHANNELS, nick, recoded);
|
IRCTXT_WHOIS_CHANNELS, nick, recoded);
|
||||||
g_free(chans);
|
g_free(chans);
|
||||||
@ -271,7 +271,7 @@ static void event_whois_away(IRC_SERVER_REC *server, const char *data)
|
|||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
params = event_get_params(data, 3, NULL, &nick, &awaymsg);
|
params = event_get_params(data, 3, NULL, &nick, &awaymsg);
|
||||||
recoded = recode_in(awaymsg, nick);
|
recoded = recode_in(SERVER(server), awaymsg, nick);
|
||||||
printformat(server, nick, MSGLEVEL_CRAP,
|
printformat(server, nick, MSGLEVEL_CRAP,
|
||||||
IRCTXT_WHOIS_AWAY, nick, recoded);
|
IRCTXT_WHOIS_AWAY, nick, recoded);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
@ -312,7 +312,7 @@ static void event_whowas(IRC_SERVER_REC *server, const char *data)
|
|||||||
|
|
||||||
params = event_get_params(data, 6, NULL, &nick, &user,
|
params = event_get_params(data, 6, NULL, &nick, &user,
|
||||||
&host, NULL, &realname);
|
&host, NULL, &realname);
|
||||||
recoded = recode_in(realname, nick);
|
recoded = recode_in(SERVER(server), realname, nick);
|
||||||
printformat(server, nick, MSGLEVEL_CRAP,
|
printformat(server, nick, MSGLEVEL_CRAP,
|
||||||
IRCTXT_WHOWAS, nick, user, host, recoded);
|
IRCTXT_WHOWAS, nick, user, host, recoded);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
|
@ -143,7 +143,7 @@ static void channel_change_topic(IRC_SERVER_REC *server, const char *channel,
|
|||||||
if (chanrec == NULL) return;
|
if (chanrec == NULL) return;
|
||||||
/* the topic may be send out encoded, so we need to
|
/* the topic may be send out encoded, so we need to
|
||||||
recode it back or /topic <tab> will not work properly */
|
recode it back or /topic <tab> will not work properly */
|
||||||
recoded = recode_in(topic, channel);
|
recoded = recode_in(SERVER(server), topic, channel);
|
||||||
if (topic != NULL) {
|
if (topic != NULL) {
|
||||||
g_free_not_null(chanrec->topic);
|
g_free_not_null(chanrec->topic);
|
||||||
chanrec->topic = recoded == NULL ? NULL : g_strdup(recoded);
|
chanrec->topic = recoded == NULL ? NULL : g_strdup(recoded);
|
||||||
|
@ -77,7 +77,7 @@ static void cmd_notice(const char *data, IRC_SERVER_REC *server,
|
|||||||
if (*target == '\0' || *msg == '\0')
|
if (*target == '\0' || *msg == '\0')
|
||||||
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
recoded = recode_out(msg, target);
|
recoded = recode_out(SERVER(server), msg, target);
|
||||||
g_string_sprintf(tmpstr, "NOTICE %s :%s", target, recoded);
|
g_string_sprintf(tmpstr, "NOTICE %s :%s", target, recoded);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ static void cmd_ctcp(const char *data, IRC_SERVER_REC *server,
|
|||||||
else {
|
else {
|
||||||
char *recoded;
|
char *recoded;
|
||||||
|
|
||||||
recoded = recode_out(ctcpdata, target);
|
recoded = recode_out(SERVER(server), ctcpdata, target);
|
||||||
g_string_sprintf(tmpstr, "PRIVMSG %s :\001%s %s\001", target, ctcpcmd, recoded);
|
g_string_sprintf(tmpstr, "PRIVMSG %s :\001%s %s\001", target, ctcpcmd, recoded);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
}
|
}
|
||||||
@ -139,7 +139,7 @@ static void cmd_nctcp(const char *data, IRC_SERVER_REC *server,
|
|||||||
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
g_strup(ctcpcmd);
|
g_strup(ctcpcmd);
|
||||||
recoded = recode_out(ctcpdata, target);
|
recoded = recode_out(SERVER(server), ctcpdata, target);
|
||||||
g_string_sprintf(tmpstr, "NOTICE %s :\001%s %s\001", target, ctcpcmd, recoded);
|
g_string_sprintf(tmpstr, "NOTICE %s :\001%s %s\001", target, ctcpcmd, recoded);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
|
|
||||||
@ -169,7 +169,7 @@ static void cmd_part(const char *data, IRC_SERVER_REC *server,
|
|||||||
irc_server_purge_output(server, channame);
|
irc_server_purge_output(server, channame);
|
||||||
|
|
||||||
if (*msg != '\0')
|
if (*msg != '\0')
|
||||||
recoded = recode_out(msg, channame);
|
recoded = recode_out(SERVER(server), msg, channame);
|
||||||
irc_send_cmdv(server, ! recoded ? "PART %s" : "PART %s :%s",
|
irc_send_cmdv(server, ! recoded ? "PART %s" : "PART %s :%s",
|
||||||
channame, recoded);
|
channame, recoded);
|
||||||
|
|
||||||
@ -193,7 +193,7 @@ static void cmd_kick(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item
|
|||||||
if (*channame == '\0' || *nicks == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
if (*channame == '\0' || *nicks == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
if (!ischannel(*channame)) cmd_param_error(CMDERR_NOT_JOINED);
|
if (!ischannel(*channame)) cmd_param_error(CMDERR_NOT_JOINED);
|
||||||
|
|
||||||
recoded = recode_out(reason, channame);
|
recoded = recode_out(SERVER(server), reason, channame);
|
||||||
g_string_sprintf(tmpstr, "KICK %s %s :%s", channame, nicks, recoded);
|
g_string_sprintf(tmpstr, "KICK %s %s :%s", channame, nicks, recoded);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
|
|
||||||
@ -218,7 +218,7 @@ static void cmd_topic(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *ite
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (*topic != '\0' || g_hash_table_lookup(optlist, "delete") != NULL)
|
if (*topic != '\0' || g_hash_table_lookup(optlist, "delete") != NULL)
|
||||||
recoded = recode_out(topic, channame);
|
recoded = recode_out(SERVER(server), topic, channame);
|
||||||
irc_send_cmdv(server, recoded == NULL ? "TOPIC %s" : "TOPIC %s :%s",
|
irc_send_cmdv(server, recoded == NULL ? "TOPIC %s" : "TOPIC %s :%s",
|
||||||
channame, recoded);
|
channame, recoded);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
@ -675,7 +675,7 @@ static void cmd_wall(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item
|
|||||||
SERVER(server), item, args, NULL, 0);
|
SERVER(server), item, args, NULL, 0);
|
||||||
g_free(args);
|
g_free(args);
|
||||||
|
|
||||||
recoded = recode_out(msg, channame);
|
recoded = recode_out(SERVER(server), msg, channame);
|
||||||
|
|
||||||
for (tmp = nicks; tmp != NULL; tmp = tmp->next) {
|
for (tmp = nicks; tmp != NULL; tmp = tmp->next) {
|
||||||
NICK_REC *rec = tmp->data;
|
NICK_REC *rec = tmp->data;
|
||||||
@ -709,7 +709,7 @@ static void cmd_wallchops(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC
|
|||||||
return;
|
return;
|
||||||
if (*msg == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
if (*msg == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
recoded = recode_out(msg, channame);
|
recoded = recode_out(SERVER(server), msg, channame);
|
||||||
irc_send_cmdv(server, "WALLCHOPS %s :%s", channame, recoded);
|
irc_send_cmdv(server, "WALLCHOPS %s :%s", channame, recoded);
|
||||||
|
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
@ -744,7 +744,7 @@ static void cmd_kickban(const char *data, IRC_SERVER_REC *server,
|
|||||||
spacenicks = g_strjoinv(" ", nicklist);
|
spacenicks = g_strjoinv(" ", nicklist);
|
||||||
g_strfreev(nicklist);
|
g_strfreev(nicklist);
|
||||||
|
|
||||||
recoded = recode_out(reason, channel);
|
recoded = recode_out(SERVER(server), reason, channel);
|
||||||
kickcmd = g_strdup_printf("%s %s %s", chanrec->name, nicks, recoded);
|
kickcmd = g_strdup_printf("%s %s %s", chanrec->name, nicks, recoded);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
|
|
||||||
@ -842,7 +842,7 @@ static void cmd_knockout(const char *data, IRC_SERVER_REC *server,
|
|||||||
banmasks = ban_get_masks(channel, spacenicks, 0);
|
banmasks = ban_get_masks(channel, spacenicks, 0);
|
||||||
g_free(spacenicks);
|
g_free(spacenicks);
|
||||||
|
|
||||||
recoded = recode_out(reason, channel->name);
|
recoded = recode_out(SERVER(server), reason, channel->name);
|
||||||
kickcmd = g_strdup_printf("%s %s %s", channel->name, nicks, recoded);
|
kickcmd = g_strdup_printf("%s %s %s", channel->name, nicks, recoded);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ static void dump_join(IRC_CHANNEL_REC *channel, CLIENT_REC *client)
|
|||||||
client->proxy_address, client->nick, channel->name);
|
client->proxy_address, client->nick, channel->name);
|
||||||
if (channel->topic != NULL) {
|
if (channel->topic != NULL) {
|
||||||
/* this is needed because the topic may be encoded into other charsets internaly */
|
/* this is needed because the topic may be encoded into other charsets internaly */
|
||||||
recoded = recode_out(channel->topic, channel->name);
|
recoded = recode_out(SERVER(client->server), channel->topic, channel->name);
|
||||||
proxy_outdata(client, ":%s 332 %s %s :%s\n",
|
proxy_outdata(client, ":%s 332 %s %s :%s\n",
|
||||||
client->proxy_address, client->nick,
|
client->proxy_address, client->nick,
|
||||||
channel->name, recoded);
|
channel->name, recoded);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user