X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fclient_ops.c;h=1651b20058013e9760f1e049164e7f39f1f5209f;hb=82beaf37b444f63b67a8cccb618aa00f421287ea;hp=7d53788f836631bc349bdb2ccf5d9dc89b0e946a;hpb=92df8fde1ca8333ba255bfd7a3bae7da2ca27482;p=crypto.git diff --git a/apps/irssi/src/silc/core/client_ops.c b/apps/irssi/src/silc/core/client_ops.c index 7d53788f..1651b200 100644 --- a/apps/irssi/src/silc/core/client_ops.c +++ b/apps/irssi/src/silc/core/client_ops.c @@ -174,11 +174,32 @@ void silc_channel_message(SilcClient client, SilcClientConnection conn, printformat_module("fe-common/silc", server, channel->channel_name, MSGLEVEL_NOTICES, SILCTXT_CHANNEL_NOTICE, nick == NULL ? "[]" : nick->nick, message); - else + else { + if (flags & SILC_MESSAGE_FLAG_UTF8 && !silc_term_utf8()) { + char tmp[256], *cp, *dm = NULL; + + memset(tmp, 0, sizeof(tmp)); + cp = tmp; + if (message_len > sizeof(tmp) - 1) { + dm = silc_calloc(message_len + 1, sizeof(*dm)); + cp = dm; + } + + silc_utf8_decode(message, message_len, SILC_STRING_ASCII, + cp, message_len); + signal_emit("message public", 6, server, cp, + nick == NULL ? "[]" : nick->nick, + nick == NULL ? "" : nick->host == NULL ? "" : nick->host, + chanrec->name, nick); + silc_free(dm); + return; + } + signal_emit("message public", 6, server, message, nick == NULL ? "[]" : nick->nick, nick == NULL ? "" : nick->host == NULL ? "" : nick->host, chanrec->name, nick); + } } /* Private message to the client. The `sender' is the nickname of the @@ -227,6 +248,25 @@ void silc_private_message(SilcClient client, SilcClientConnection conn, if (!message) return; + if (flags & SILC_MESSAGE_FLAG_UTF8 && !silc_term_utf8()) { + char tmp[256], *cp, *dm = NULL; + + memset(tmp, 0, sizeof(tmp)); + cp = tmp; + if (message_len > sizeof(tmp) - 1) { + dm = silc_calloc(message_len + 1, sizeof(*dm)); + cp = dm; + } + + silc_utf8_decode(message, message_len, SILC_STRING_ASCII, + cp, message_len); + signal_emit("message private", 4, server, cp, + sender->nickname ? sender->nickname : "[]", + sender->username ? userhost : NULL); + silc_free(dm); + return; + } + signal_emit("message private", 4, server, message, sender->nickname ? sender->nickname : "[]", sender->username ? userhost : NULL);