aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/mail-display.c10
-rw-r--r--mail/mail-format.c280
2 files changed, 140 insertions, 150 deletions
diff --git a/mail/mail-display.c b/mail/mail-display.c
index f4b1ce61f1..45aaa56811 100644
--- a/mail/mail-display.c
+++ b/mail/mail-display.c
@@ -318,13 +318,13 @@ save_part (CamelMimePart *part)
gtk_file_selection_new (_("Save Attachment")));
gtk_file_selection_set_filename (file_select, filename);
/* set the GtkEntry with the locale filename by breaking abstraction */
- base = g_path_get_basename(filename);
- gtk_entry_set_text(GTK_ENTRY (file_select->selection_entry), base);
- g_free(base);
+ base = g_path_get_basename (filename);
+ gtk_entry_set_text (GTK_ENTRY (file_select->selection_entry), base);
g_free (filename);
+ g_free (base);
- g_signal_connect(file_select->ok_button, "clicked",
- G_CALLBACK (save_data_cb), part);
+ g_signal_connect (file_select->ok_button, "clicked",
+ G_CALLBACK (save_data_cb), part);
/* FIXME: deprecated */
gtk_signal_connect_object (GTK_OBJECT (file_select->cancel_button),
"clicked",
diff --git a/mail/mail-format.c b/mail/mail-format.c
index ad32250fee..f94e5c0935 100644
--- a/mail/mail-format.c
+++ b/mail/mail-format.c
@@ -32,30 +32,35 @@
#include <libgnome/gnome-util.h>
#include <libgnomevfs/gnome-vfs-mime-handlers.h>
-#include <gal/widgets/e-unicode.h>
#include <gal/util/e-iconv.h>
+#include <shell/e-setup.h>
#include <camel/camel-mime-utils.h>
#include <camel/camel-pgp-mime.h>
#include <camel/camel-stream-null.h>
+#include <camel/camel-stream-filter.h>
#include <camel/camel-multipart-signed.h>
-#include <shell/e-setup.h>
+#include <camel/camel-mime-filter-tohtml.h>
+
+#include <e-util/e-trie.h>
#include <e-util/e-html-utils.h>
#include "mail.h"
#include "mail-tools.h"
#include "mail-display.h"
+#include "mail-stream-gtkhtml.h"
#include "mail-mt.h"
#include "mail-crypto.h"
-static char *try_inline_pgp (char *start, CamelMimePart *part,
- guint offset, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream);
-static char *try_inline_pgp_sig (char *start, CamelMimePart *part,
- guint offset, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream);
-static char *try_uudecoding (char *start, CamelMimePart *part,
- guint offset, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream);
-static char *try_inline_binhex (char *start, CamelMimePart *part,
- guint offset, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream);
+
+static const char *try_uudecoding (const char *start, CamelMimePart *part, guint offset,
+ MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream);
+static const char *try_inline_binhex (const char *start, CamelMimePart *part, guint offset,
+ MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream);
+
+static ssize_t mail_format_data_wrapper_write_to_stream (CamelDataWrapper *wrapper, MailDisplay *mail_display,
+ CamelStream *stream);
+
static gboolean handle_text_plain (CamelMimePart *part,
const char *mime_type,
@@ -144,7 +149,7 @@ mail_format_mime_message (CamelMimeMessage *mime_message, MailDisplay *md,
GHashTable *hash;
g_return_if_fail (CAMEL_IS_MIME_MESSAGE (mime_message));
-
+
hash = g_datalist_get_data (md->data, "part_urls");
if (!hash) {
hash = g_hash_table_new (g_str_hash, g_str_equal);
@@ -187,14 +192,16 @@ void
mail_format_raw_message (CamelMimeMessage *mime_message, MailDisplay *md,
GtkHTML *html, GtkHTMLStream *stream)
{
- CamelStream *mail_stream, *filtered_stream;
+ CamelStreamFilter *filtered_stream;
CamelMimeFilter *html_filter;
+ CamelDataWrapper *wrapper;
+ CamelStream *mail_stream;
guint32 flags;
g_return_if_fail (CAMEL_IS_MIME_MESSAGE (mime_message));
- if (!mail_content_loaded (CAMEL_DATA_WRAPPER (mime_message), md,
- TRUE, NULL, html, NULL))
+ wrapper = CAMEL_DATA_WRAPPER (mime_message);
+ if (!mail_content_loaded (wrapper, md, TRUE, NULL, html, NULL))
return;
mail_stream = mail_stream_gtkhtml_new (html, stream);
@@ -203,11 +210,11 @@ mail_format_raw_message (CamelMimeMessage *mime_message, MailDisplay *md,
flags = CAMEL_MIME_FILTER_TOHTML_CONVERT_NL | CAMEL_MIME_FILTER_TOHTML_CONVERT_SPACES |
CAMEL_MIME_FILTER_TOHTML_ESCAPE_8BIT;
html_filter = camel_mime_filter_tohtml_new (flags, 0);
- camel_stream_filter_add ((CamelStreamFilter *) filtered_stream, html_filter);
+ camel_stream_filter_add (filtered_stream, html_filter);
camel_object_unref (html_filter);
camel_stream_write (mail_stream, "<tt>", 4);
- mail_format_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (mime_message), md, filtered_stream);
+ mail_format_data_wrapper_write_to_stream (wrapper, md, (CamelStream *) filtered_stream);
camel_object_unref (filtered_stream);
camel_stream_write (mail_stream, "</tt>", 5);
camel_object_unref (mail_stream);
@@ -355,34 +362,33 @@ component_supports (Bonobo_ServerInfo *component, const char *mime_type)
Bonobo_ActivationProperty *prop;
CORBA_sequence_CORBA_string stringv;
int i;
-
+
prop = bonobo_server_info_prop_find (component, "repo_ids");
if (!prop || prop->v._d != Bonobo_ACTIVATION_P_STRINGV)
return FALSE;
-
+
stringv = prop->v._u.value_stringv;
for (i = 0; i < stringv._length; i++) {
- /* FIXME: ascii_strcasecmp? */
- if (!g_strcasecmp ("IDL:Bonobo/PersistStream:1.0", stringv._buffer[i]))
+ if (!strcasecmp ("IDL:Bonobo/PersistStream:1.0", stringv._buffer[i]))
break;
}
-
+
/* got to end of list with no persist stream? */
-
+
if (i >= stringv._length)
return FALSE;
-
+
prop = bonobo_server_info_prop_find (component,
"bonobo:supported_mime_types");
if (!prop || prop->v._d != Bonobo_ACTIVATION_P_STRINGV)
return FALSE;
-
+
stringv = prop->v._u.value_stringv;
for (i = 0; i < stringv._length; i++) {
- if (!g_strcasecmp (mime_type, stringv._buffer[i]))
+ if (!strcasecmp (mime_type, stringv._buffer[i]))
return TRUE;
}
-
+
return FALSE;
}
@@ -407,15 +413,15 @@ mail_lookup_handler (const char *mime_type)
char *mime_type_main;
const char *p;
GList *components, *iter;
-
+
if (mime_handler_table == NULL)
setup_mime_tables ();
-
+
/* See if we've already found it. */
handler = g_hash_table_lookup (mime_handler_table, mime_type);
if (handler)
return handler;
-
+
/* Special case MIME type: application/octet-stream
* The point of this type is that there isn't a handler.
*/
@@ -431,7 +437,7 @@ mail_lookup_handler (const char *mime_type)
gnome_vfs_mime_get_short_list_applications (mime_type);
handler->builtin =
g_hash_table_lookup (mime_function_table, mime_type);
-
+
if (handler->builtin) {
handler->generic = FALSE;
goto reg;
@@ -450,14 +456,14 @@ mail_lookup_handler (const char *mime_type)
goto reg;
}
}
-
+
gnome_vfs_mime_component_list_free (components);
-
+
/* Try for a generic builtin match. */
p = strchr (mime_type, '/');
if (p == NULL)
p = mime_type + strlen (mime_type);
- mime_type_main = alloca ((p - mime_type) + 3);
+ mime_type_main = g_alloca ((p - mime_type) + 3);
memcpy (mime_type_main, mime_type, p - mime_type);
memcpy (mime_type_main + (p - mime_type), "/*", 3);
@@ -472,27 +478,27 @@ mail_lookup_handler (const char *mime_type)
}
goto reg;
}
-
+
/* Try for a generic component match. */
if (handler->component) {
handler->generic = TRUE;
handler->builtin = handle_via_bonobo;
goto reg;
}
-
+
/* If we at least got an application, use that. */
if (handler->applications) {
handler->generic = TRUE;
goto reg;
}
-
+
/* Nada. */
g_free (handler);
return NULL;
-
+
reg:
- g_hash_table_insert (mime_handler_table, g_strdup (mime_type),
- handler);
+ g_hash_table_insert (mime_handler_table, g_strdup (mime_type), handler);
+
return handler;
}
@@ -503,11 +509,11 @@ static gboolean
is_anonymous (CamelMimePart *part, const char *mime_type)
{
/* FIXME: should use CamelContentType stuff */
- if (!g_ascii_strncasecmp (mime_type, "multipart/", 10) ||
- !g_ascii_strncasecmp (mime_type, "message/", 8))
+ if (!strncasecmp (mime_type, "multipart/", 10) ||
+ !strncasecmp (mime_type, "message/", 8))
return TRUE;
- if (!g_ascii_strncasecmp (mime_type, "text/", 5) &&
+ if (!strncasecmp (mime_type, "text/", 5) &&
!camel_mime_part_get_filename (part))
return TRUE;
@@ -525,13 +531,13 @@ mail_part_is_inline (CamelMimePart *part)
{
const char *disposition;
CamelContentType *content_type;
- char *type;
gboolean anon;
+ char *type;
/* If it has an explicit disposition, return that. */
disposition = camel_mime_part_get_disposition (part);
if (disposition)
- return g_ascii_strcasecmp (disposition, "inline") == 0;
+ return strcasecmp (disposition, "inline") == 0;
/* Certain types should default to inline. FIXME: this should
* be customizable.
@@ -556,28 +562,28 @@ enum inline_states {
I_DISPLAYED = (1 << 2)
};
-static gint
+static int
get_inline_flags (CamelMimePart *part, MailDisplay *md)
{
GHashTable *asht;
- gint val;
-
+ int val;
+
/* check if we already know. */
-
+
asht = g_datalist_get_data (md->data, "attachment_states");
val = GPOINTER_TO_INT (g_hash_table_lookup (asht, part));
if (val)
return val;
-
+
/* ok, we don't know. Figure it out. */
-
+
if (mail_part_is_inline (part))
val = (I_VALID | I_ACTUALLY | I_DISPLAYED);
else
val = (I_VALID);
-
+
g_hash_table_insert (asht, part, GINT_TO_POINTER (val));
-
+
return val;
}
@@ -592,7 +598,7 @@ mail_part_toggle_displayed (CamelMimePart *part, MailDisplay *md)
{
GHashTable *asht = g_datalist_get_data (md->data, "attachment_states");
gpointer ostate, opart;
- gint state;
+ int state;
if (g_hash_table_lookup_extended (asht, part, &opart, &ostate)) {
g_hash_table_remove (asht, part);
@@ -615,11 +621,11 @@ mail_part_set_default_displayed_inline (CamelMimePart *part, MailDisplay *md,
gboolean displayed)
{
GHashTable *asht = g_datalist_get_data (md->data, "attachment_states");
- gint state;
+ int state;
if (g_hash_table_lookup (asht, part))
return;
-
+
state = I_VALID | (displayed ? I_DISPLAYED : 0);
g_hash_table_insert (asht, part, GINT_TO_POINTER (state));
}
@@ -635,8 +641,8 @@ attachment_header (CamelMimePart *part, const char *mime_type, MailDisplay *md,
mail_html_write (html, stream,
"<table cellspacing=0 cellpadding=0>"
"<tr><td><table width=10 cellspacing=0 cellpadding=0><tr><td></td></tr></table></td>");
-
- if (! md->printing) {
+
+ if (!md->printing) {
gtk_html_stream_printf (stream, "<td><object classid=\"popup:%s\" type=\"%s\"></object></td>",
get_cid (part, md), mime_type);
}
@@ -644,14 +650,13 @@ attachment_header (CamelMimePart *part, const char *mime_type, MailDisplay *md,
mail_html_write (html, stream,
"<td><table width=3 cellspacing=0 cellpadding=0><tr><td></td></tr></table></td>"
"<td><font size=-1>");
-
/* Write the MIME type */
- info = gnome_vfs_mime_get_description(mime_type);
+ info = gnome_vfs_mime_get_description (mime_type);
htmlinfo = e_text_to_html (info ? info : mime_type, 0);
gtk_html_stream_printf (stream, _("%s attachment"), htmlinfo);
g_free (htmlinfo);
-
+
/* Write the name, if we have it. */
info = camel_mime_part_get_filename (part);
if (info) {
@@ -691,7 +696,6 @@ format_mime_part (CamelMimePart *part, MailDisplay *md,
if (CAMEL_IS_MULTIPART (wrapper) &&
camel_multipart_get_number (CAMEL_MULTIPART (wrapper)) == 0) {
-
mail_error_printf (html, stream, "\n%s\n", _("Could not parse MIME message. Displaying as source."));
if (mail_content_loaded (wrapper, md, TRUE, NULL, html, NULL))
handle_text_plain (part, "text/plain", md, html, stream);
@@ -699,8 +703,8 @@ format_mime_part (CamelMimePart *part, MailDisplay *md,
}
tmp = camel_data_wrapper_get_mime_type (wrapper);
- mime_type = g_ascii_strdown (tmp, strlen(tmp));
- g_free(tmp);
+ mime_type = g_ascii_strdown (tmp, strlen (tmp));
+ g_free (tmp);
handler = mail_lookup_handler (mime_type);
if (!handler) {
@@ -746,7 +750,7 @@ enum {
};
static void
-write_field_row_begin (const char *name, gint flags, GtkHTML *html, GtkHTMLStream *stream)
+write_field_row_begin (const char *name, int flags, GtkHTML *html, GtkHTMLStream *stream)
{
gboolean bold = (flags & WRITE_BOLD);
gboolean nocolumns = (flags & WRITE_NOCOLUMNS);
@@ -798,7 +802,7 @@ write_address (MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream,
const CamelInternetAddress *addr, const char *field_name, int flags)
{
const char *name, *email;
- gint i;
+ int i;
if (addr == NULL || !camel_internet_address_get (addr, 0, NULL, NULL))
return;
@@ -813,7 +817,7 @@ write_address (MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream,
gboolean have_email = email && *email;
gchar *name_disp = NULL;
gchar *email_disp = NULL;
-
+
subaddr = camel_internet_address_new ();
camel_internet_address_add (subaddr, name, email);
addr_txt = camel_address_format (CAMEL_ADDRESS (subaddr));
@@ -852,12 +856,11 @@ write_address (MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream,
"<a href=\"mailto:%s\">%s</a>",
addr_url, email_disp);
}
- }
-
+ }
} else {
gtk_html_stream_printf (stream, "<i>%s</i>", _("Bad Address"));
}
-
+
g_free (name_disp);
g_free (email_disp);
g_free (addr_txt);
@@ -876,12 +879,12 @@ static char *default_headers[] = {
/* return index of header in default_headers array */
static int
-default_header_index(const char *name)
+default_header_index (const char *name)
{
int i;
-
- for (i=0;i<sizeof(default_headers)/sizeof(default_headers[0]);i++)
- if (!g_ascii_strcasecmp(name, default_headers[i]))
+
+ for (i = 0; i < sizeof (default_headers) / sizeof (default_headers[0]); i++)
+ if (!strcasecmp (name, default_headers[i]))
return i;
return -1;
@@ -889,11 +892,11 @@ default_header_index(const char *name)
/* index is index of header in default_headers array */
static void
-write_default_header(CamelMimeMessage *message, MailDisplay *md,
- GtkHTML *html, GtkHTMLStream *stream,
- int index, int flags)
+write_default_header (CamelMimeMessage *message, MailDisplay *md,
+ GtkHTML *html, GtkHTMLStream *stream,
+ int index, int flags)
{
- switch(index) {
+ switch (index) {
case 0:
write_address (md, html, stream,
camel_mime_message_get_from (message), _("From"), flags | WRITE_BOLD);
@@ -903,8 +906,8 @@ write_default_header(CamelMimeMessage *message, MailDisplay *md,
camel_mime_message_get_reply_to (message), _("Reply-To"), flags | WRITE_BOLD);
break;
case 2:
- write_address(md, html, stream,
- camel_mime_message_get_recipients(message, CAMEL_RECIPIENT_TYPE_TO),
+ write_address (md, html, stream,
+ camel_mime_message_get_recipients (message, CAMEL_RECIPIENT_TYPE_TO),
_("To"), flags | WRITE_BOLD);
break;
case 3:
@@ -925,7 +928,7 @@ write_default_header(CamelMimeMessage *message, MailDisplay *md,
write_date (message, flags | WRITE_BOLD, html, stream);
break;
default:
- g_assert_not_reached();
+ g_assert_not_reached ();
}
}
@@ -935,19 +938,19 @@ write_xmailer_header (CamelMimeMessage *message, MailDisplay *md,
MailConfigXMailerDisplayStyle xm)
{
const char *xmailer, *evolution;
-
+
xmailer = camel_medium_get_header (CAMEL_MEDIUM (message), "X-Mailer");
if (!xmailer) {
xmailer = camel_medium_get_header (CAMEL_MEDIUM (message), "User-Agent");
if (!xmailer)
return FALSE;
}
-
+
evolution = strstr (xmailer, "Evolution");
if ((xm & MAIL_CONFIG_XMAILER_OTHER) ||
(evolution && (xm & MAIL_CONFIG_XMAILER_EVO)))
write_text_header (_("Mailer"), xmailer, WRITE_BOLD, html, stream);
-
+
return evolution != NULL && (xm & MAIL_CONFIG_XMAILER_RUPERT_APPROVED);
}
@@ -963,7 +966,7 @@ write_headers (CamelMimeMessage *message, MailDisplay *md,
GtkStyle *style = NULL;
gboolean evo_icon = FALSE;
int i;
-
+
/* My favorite thing to do... muck around with colors so we respect people's stupid themes.
However, we only do this if we are rendering to the screen -- we ignore the theme
when we are printing. */
@@ -1019,31 +1022,31 @@ write_headers (CamelMimeMessage *message, MailDisplay *md,
CamelContentType *ct;
char *value;
- ct = camel_mime_part_get_content_type(CAMEL_MIME_PART(message));
- charset = header_content_type_param(ct, "charset");
- charset = e_iconv_charset_name(charset);
+ ct = camel_mime_part_get_content_type (CAMEL_MIME_PART (message));
+ charset = header_content_type_param (ct, "charset");
+ charset = e_iconv_charset_name (charset);
- header = CAMEL_MIME_PART(message)->headers;
+ header = CAMEL_MIME_PART (message)->headers;
while (header) {
- i = default_header_index(header->name);
+ i = default_header_index (header->name);
if (i == -1) {
- value = header_decode_string(header->value, charset);
- write_text_header(header->name, value, WRITE_NOCOLUMNS, html, stream);
- g_free(value);
+ value = header_decode_string (header->value, charset);
+ write_text_header (header->name, value, WRITE_NOCOLUMNS, html, stream);
+ g_free (value);
} else
- write_default_header(message, md, html, stream, i, WRITE_NOCOLUMNS);
+ write_default_header (message, md, html, stream, i, WRITE_NOCOLUMNS);
header = header->next;
}
} else {
- for (i=0;i<sizeof(default_headers)/sizeof(default_headers[0]);i++)
- write_default_header(message, md, html, stream, i, 0);
+ for (i = 0; i < sizeof (default_headers) / sizeof (default_headers[0]); i++)
+ write_default_header (message, md, html, stream, i, 0);
if (xm != MAIL_CONFIG_XMAILER_NONE)
- evo_icon = write_xmailer_header(message, md, html, stream, xm);
+ evo_icon = write_xmailer_header (message, md, html, stream, xm);
}
/* Close off the internal header table */
mail_html_write (html, stream, "</font></table></td>");
-
+
if (!md->printing && evo_icon) {
gtk_html_stream_printf (stream,
"<td align=right><table><tr><td width=16>"
@@ -1051,7 +1054,7 @@ write_headers (CamelMimeMessage *message, MailDisplay *md,
"</td></tr></table></td>",
mail_display_get_url_for_icon (md, EVOLUTION_ICONSDIR "/monkey-16.png"));
}
-
+
mail_html_write (html, stream,
/* Main header box */
"</tr></table>"
@@ -1188,14 +1191,12 @@ write_hr (GtkHTML *html, GtkHTMLStream *stream)
*----------------------------------------------------------------------*/
struct {
- char *start;
- char * (*handler) (char *start, CamelMimePart *part,
- guint offset, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream);
+ const char *start;
+ const char * (*handler) (const char *start, CamelMimePart *part, guint offset,
+ MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream);
} text_specials[] = {
- { "-----BEGIN PGP MESSAGE-----\n", try_inline_pgp },
- { "-----BEGIN PGP SIGNED MESSAGE-----\n", try_inline_pgp_sig },
- { "begin ", try_uudecoding },
- { "(This file must be converted with BinHex 4.0)\n", try_inline_binhex }
+ { "\nbegin ", try_uudecoding },
+ { "\n(This file must be converted with BinHex 4.0)\n", try_inline_binhex }
};
static int num_specials = (sizeof (text_specials) / sizeof (text_specials[0]));
@@ -1206,7 +1207,7 @@ write_one_text_plain_chunk (MailDisplay *md, CamelMimePart *part, gint idx, cons
char *buf;
buf = g_strndup (text, len);
- mail_text_write (html, stream, md, part, idx, printing, buf);
+ mail_text_write (html, stream, md, part, idx, printing, buf);
g_free (buf);
}
@@ -1214,14 +1215,15 @@ static gboolean
handle_text_plain (CamelMimePart *part, const char *mime_type,
MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream)
{
- CamelDataWrapper *wrapper =
- camel_medium_get_content_object (CAMEL_MEDIUM (part));
+ const char *format, *start, *p;
+ CamelDataWrapper *wrapper;
CamelContentType *type;
gboolean check_specials;
- char *p, *start, *text;
- const char *format;
GByteArray *bytes;
int i, idx = 0;
+ char *text;
+
+ wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (part));
bytes = mail_format_get_data_wrapper_text (wrapper, md);
if (!bytes)
@@ -1236,7 +1238,7 @@ handle_text_plain (CamelMimePart *part, const char *mime_type,
start = text;
while (isspace ((unsigned) *start))
start++;
- if (!g_strncasecmp (start, "<html>", 6) || !g_strncasecmp (start, "<!DOCTYPE HTML", 14)) {
+ if (!strncasecmp (start, "<html>", 6) || !strncasecmp (start, "<!DOCTYPE HTML", 14)) {
g_free (text);
return handle_text_html (part, "text/html", md, html, stream);
}
@@ -1244,7 +1246,7 @@ handle_text_plain (CamelMimePart *part, const char *mime_type,
/* Check for RFC 2646 flowed text. */
type = camel_mime_part_get_content_type (part);
format = header_content_type_param (type, "format");
- if (format && !g_strcasecmp (format, "flowed"))
+ if (format && !strcasecmp (format, "flowed"))
return handle_text_plain_flowed (text, part, md, html, stream);
/* Only look for binhex and stuff if this is real text/plain.
@@ -1252,7 +1254,7 @@ handle_text_plain (CamelMimePart *part, const char *mime_type,
* has decided to call text/plain because it starts with English
* text...)
*/
- check_specials = !g_ascii_strcasecmp (mime_type, "text/plain");
+ check_specials = !strcasecmp (mime_type, "text/plain");
p = text;
while (p && check_specials) {
@@ -1297,12 +1299,11 @@ handle_text_plain (CamelMimePart *part, const char *mime_type,
static gboolean
handle_text_plain_flowed (char *buf, CamelMimePart *part, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream)
{
- char *text, *line, *eol, *p;
+ char *iframe, *text, *line, *eol, *xed, *p;
int prevquoting = 0, quoting, len, br_pending = 0;
guint32 citation_color = mail_config_get_citation_color ();
GByteArray *ba;
- gchar *iframe, *xed;
-
+
ba = g_byte_array_new ();
g_byte_array_append (ba, "\n<!-- text/plain, flowed -->\n<tt>\n", 34);
@@ -1320,7 +1321,8 @@ handle_text_plain_flowed (char *buf, CamelMimePart *part, MailDisplay *md, GtkHT
if (md->printing)
g_byte_array_append (ba, "<i>", 3);
else {
- gchar num [7];
+ char num[7];
+
g_byte_array_append (ba, "<font color=\"#", 14);
g_snprintf (num, 6, "%06x", citation_color);
g_byte_array_append (ba, num, 6);
@@ -1381,7 +1383,7 @@ handle_text_plain_flowed (char *buf, CamelMimePart *part, MailDisplay *md, GtkHT
g_free (buf);
g_byte_array_append (ba, "</tt>\n", 6);
-
+
xed = g_strdup_printf ("x-evolution-data:%p", part);
iframe = g_strdup_printf ("<iframe src=\"%s\" frameborder=0 scrolling=no>could not get %s</iframe>", xed, xed);
mail_display_add_url (md, "data_urls", xed, ba);
@@ -1399,11 +1401,11 @@ fake_mime_part_from_data (const char *data, int len, const char *type,
CamelStream *memstream;
CamelDataWrapper *wrapper;
CamelMimePart *part;
-
+
part = g_hash_table_lookup (fake_parts, GUINT_TO_POINTER (offset));
if (part)
return part;
-
+
memstream = camel_stream_mem_new_with_buffer (data, len);
wrapper = camel_data_wrapper_new ();
camel_data_wrapper_construct_from_stream (wrapper, memstream);
@@ -1413,7 +1415,7 @@ fake_mime_part_from_data (const char *data, int len, const char *type,
camel_medium_set_content_object (CAMEL_MEDIUM (part), wrapper);
camel_object_unref (wrapper);
camel_mime_part_set_disposition (part, "inline");
-
+
g_hash_table_insert (fake_parts, GUINT_TO_POINTER (offset), part);
return part;
}
@@ -1424,28 +1426,14 @@ destroy_part (CamelObject *root, gpointer event_data, gpointer user_data)
camel_object_unref (user_data);
}
-static char *
-try_inline_pgp (char *start, CamelMimePart *mime_part,
- guint offset, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream)
-{
- return start;
-}
-
-static char *
-try_inline_pgp_sig (char *start, CamelMimePart *mime_part,
- guint offset, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream)
-{
- return start;
-}
-
-static char *
-try_uudecoding (char *start, CamelMimePart *mime_part,
+static const char *
+try_uudecoding (const char *start, CamelMimePart *mime_part,
guint offset, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream)
{
int mode, len, state = CAMEL_UUDECODE_STATE_INIT;
char *filename, *estart, *p, *out;
- guint32 save = 0;
CamelMimePart *part;
+ guint32 save = 0;
/* Make sure it's a real uudecode begin line:
* begin [0-7]+ .*
@@ -1453,12 +1441,14 @@ try_uudecoding (char *start, CamelMimePart *mime_part,
mode = strtoul (start + 6, &p, 8);
if (p == start + 6 || *p != ' ')
return start;
+
estart = strchr (start, '\n');
if (!estart)
return start;
while (isspace ((unsigned char)*p))
p++;
+
filename = g_strndup (p, estart++ - p);
/* Make sure there's an end line. */
@@ -1484,8 +1474,8 @@ try_uudecoding (char *start, CamelMimePart *mime_part,
return p + 4;
}
-static char *
-try_inline_binhex (char *start, CamelMimePart *mime_part,
+static const char *
+try_inline_binhex (const char *start, CamelMimePart *mime_part,
guint offset, MailDisplay *md, GtkHTML *html, GtkHTMLStream *stream)
{
char *p;
@@ -1529,7 +1519,7 @@ handle_text_enriched (CamelMimePart *part, const char *mime_type,
if (!translations) {
translations = g_hash_table_new (g_strcase_hash, g_strcase_equal);
-
+
/* FIXME: this should be read from a table */
g_hash_table_insert (translations, "bold", "<b>");
g_hash_table_insert (translations, "/bold", "</b>");
@@ -1565,7 +1555,7 @@ handle_text_enriched (CamelMimePart *part, const char *mime_type,
if (!bytes)
return FALSE;
- if (!g_ascii_strcasecmp (mime_type, "text/richtext")) {
+ if (!strcasecmp (mime_type, "text/richtext")) {
enriched = FALSE;
mail_html_write (html, stream,
"\n<!-- text/richtext -->\n");
@@ -1686,7 +1676,7 @@ handle_text_html (CamelMimePart *part, const char *mime_type,
if (*base == '"' && *(base + len - 1) == '"') {
len -= 2;
- base_url = alloca (len + 1);
+ base_url = g_alloca (len + 1);
memcpy (base_url, base + 1, len);
base_url[len] = '\0';
base = base_url;
@@ -2248,7 +2238,7 @@ mail_get_message_rfc822 (CamelMimeMessage *message, gboolean want_plain, gboolea
* headers too so we won't get a blank line between them for the
* <P> to <PRE> switch.
*/
- if (!g_strncasecmp (text, "<pre>", 5))
+ if (!strncasecmp (text, "<pre>", 5))
g_string_sprintfa (retval, "<PRE>");
/* create credits */
@@ -2297,7 +2287,7 @@ mail_get_message_rfc822 (CamelMimeMessage *message, gboolean want_plain, gboolea
g_free (html);
g_free (buf);
- if (!g_strncasecmp (text, "<pre>", 5))
+ if (!strncasecmp (text, "<pre>", 5))
g_string_sprintfa (retval, "%s<br>%s", citation, text + 5);
else
g_string_sprintfa (retval, "%s<br>%s", citation, text);