From 3a2b1d78dd60e192a5d146bffc4bf7e5364da96d Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Thu, 18 Apr 2002 12:21:50 +0000 Subject: [PATCH] updates. --- CHANGES | 4 +++ apps/irssi/src/silc/core/client_ops.c | 37 +++++++++++++++------------ 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/CHANGES b/CHANGES index 6abf3322..5708445f 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,10 @@ Thu Apr 18 14:09:51 CEST 2002 Pekka Riikonen * Added silc_mime_parse function to parse MIME headers. Affected files are lib/silcutil/silcstruti.[ch]. + * Added MIME header parsing in Irssi SILC Client. It displays + all textual MIME objects, others it ignores. Affected file + is irssi/src/silc/core/clien_ops.c. + Wed Apr 17 22:07:59 CEST 2002 Johnny Mnemonic * Fixed a bug in the pid writing function, which couldn't be diff --git a/apps/irssi/src/silc/core/client_ops.c b/apps/irssi/src/silc/core/client_ops.c index f460b2dd..d2807c47 100644 --- a/apps/irssi/src/silc/core/client_ops.c +++ b/apps/irssi/src/silc/core/client_ops.c @@ -106,35 +106,38 @@ void silc_channel_message(SilcClient client, SilcClientConnection conn, nick = silc_nicklist_insert(chanrec, chu, FALSE); } - if (flags & SILC_MESSAGE_FLAG_ACTION) - printformat_module("fe-common/silc", server, channel->channel_name, - MSGLEVEL_ACTIONS, SILCTXT_CHANNEL_ACTION, - nick == NULL ? "[]" : nick->nick, message); - else if (flags & SILC_MESSAGE_FLAG_NOTICE) - printformat_module("fe-common/silc", server, channel->channel_name, - MSGLEVEL_NOTICES, SILCTXT_CHANNEL_NOTICE, - nick == NULL ? "[]" : nick->nick, message); - else if (flags & SILC_MESSAGE_FLAG_DATA) { + if (flags & SILC_MESSAGE_FLAG_DATA) { /* MIME object received, try to display it as well as we can */ char type[128]; unsigned char *data; memset(type, 0, sizeof(type)); if (!silc_mime_parse(message, message_len, NULL, 0, type, sizeof(type) - 1, - NULL, 0, &data, NULL)) + NULL, 0, &data, NULL)) return; /* Then figure out what we can display */ if (strstr(type, "text/") && !strstr(type, "text/t140") && !strstr(type, "text/vnd")) { - - /* It is something textual */ - signal_emit("message public", 6, server, data, - nick == NULL ? "[]" : nick->nick, - nick == NULL ? "" : nick->host == NULL ? "" : nick->host, - chanrec->name, nick); + /* It is something textual, display it */ + message = (const unsigned char *)data; + } else { + message = NULL; } - } else + } + + if (!message) + return; + + if (flags & SILC_MESSAGE_FLAG_ACTION) + printformat_module("fe-common/silc", server, channel->channel_name, + MSGLEVEL_ACTIONS, SILCTXT_CHANNEL_ACTION, + nick == NULL ? "[]" : nick->nick, message); + else if (flags & SILC_MESSAGE_FLAG_NOTICE) + printformat_module("fe-common/silc", server, channel->channel_name, + MSGLEVEL_NOTICES, SILCTXT_CHANNEL_NOTICE, + nick == NULL ? "[]" : nick->nick, message); + else signal_emit("message public", 6, server, message, nick == NULL ? "[]" : nick->nick, nick == NULL ? "" : nick->host == NULL ? "" : nick->host, -- 2.24.0