aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/tnef-attachments
diff options
context:
space:
mode:
authorDan Vrátil <dvratil@redhat.com>2012-03-29 00:39:26 +0800
committerDan Vrátil <dvratil@redhat.com>2012-03-29 00:39:26 +0800
commitd97c776f24ce577dc4a24c9be2d3830faa7627e8 (patch)
tree90754a31f50ef2703989cb3bba197b21038da845 /plugins/tnef-attachments
parenta269411bacc7a7ce549db591204a868a7a8b2184 (diff)
downloadgsoc2013-evolution-d97c776f24ce577dc4a24c9be2d3830faa7627e8.tar.gz
gsoc2013-evolution-d97c776f24ce577dc4a24c9be2d3830faa7627e8.tar.zst
gsoc2013-evolution-d97c776f24ce577dc4a24c9be2d3830faa7627e8.zip
WebKit port - port plugins
Diffstat (limited to 'plugins/tnef-attachments')
-rw-r--r--plugins/tnef-attachments/Makefile.am2
-rw-r--r--plugins/tnef-attachments/tnef-plugin.c61
2 files changed, 32 insertions, 31 deletions
diff --git a/plugins/tnef-attachments/Makefile.am b/plugins/tnef-attachments/Makefile.am
index 250453d740..6a393044d1 100644
--- a/plugins/tnef-attachments/Makefile.am
+++ b/plugins/tnef-attachments/Makefile.am
@@ -16,7 +16,6 @@ liborg_gnome_tnef_attachments_la_CPPFLAGS = \
-I$(top_srcdir)/widgets \
$(EVOLUTION_DATA_SERVER_CFLAGS) \
$(GNOME_PLATFORM_CFLAGS) \
- $(GTKHTML_CFLAGS) \
$(TNEF_CFLAGS)
liborg_gnome_tnef_attachments_la_SOURCES = tnef-plugin.c
@@ -28,7 +27,6 @@ liborg_gnome_tnef_attachments_la_LIBADD = \
$(top_builddir)/em-format/libemformat.la \
$(EVOLUTION_DATA_SERVER_LIBS) \
$(GNOME_PLATFORM_LIBS) \
- $(GTKHTML_LIBS) \
-lytnef
EXTRA_DIST = org-gnome-tnef-attachments.eplug.xml
diff --git a/plugins/tnef-attachments/tnef-plugin.c b/plugins/tnef-attachments/tnef-plugin.c
index 5ef2f270b4..0621c12dd3 100644
--- a/plugins/tnef-attachments/tnef-plugin.c
+++ b/plugins/tnef-attachments/tnef-plugin.c
@@ -92,6 +92,7 @@ org_gnome_format_tnef (gpointer ep,
CamelMultipart *mp;
CamelMimePart *mainpart;
CamelDataWrapper *content;
+ const EMFormatHandler *handler;
gint len;
TNEFStruct tnef;
@@ -102,15 +103,21 @@ org_gnome_format_tnef (gpointer ep,
name = g_build_filename(tmpdir, ".evo-attachment.tnef", NULL);
out = camel_stream_fs_new_with_name (name, O_RDWR | O_CREAT, 0666, NULL);
- if (out == NULL)
- goto fail;
+ if (out == NULL) {
+ g_free (name);
+ return;
+ }
content = camel_medium_get_content ((CamelMedium *) t->part);
- if (content == NULL)
- goto fail;
+ if (content == NULL) {
+ g_free (name);
+ g_object_unref (out);
+ return;
+ }
if (camel_data_wrapper_decode_to_stream_sync (content, out, NULL, NULL) == -1
|| camel_stream_close (out, NULL, NULL) == -1) {
g_object_unref (out);
- goto fail;
+ g_free (name);
+ return;
}
g_object_unref (out);
@@ -126,8 +133,11 @@ org_gnome_format_tnef (gpointer ep,
/* Extraction done */
dir = opendir (tmpdir);
- if (dir == NULL)
- goto fail;
+ if (dir == NULL) {
+ g_object_unref (out);
+ g_free (name);
+ return;
+ }
mainpart = camel_mime_part_new ();
@@ -177,33 +187,26 @@ org_gnome_format_tnef (gpointer ep,
closedir (dir);
- len = t->format->part_id->len;
- g_string_append_printf(t->format->part_id, ".tnef");
-
- if (camel_multipart_get_number (mp) > 0)
- /* FIXME Not passing a GCancellable here. */
- em_format_part_as (
- t->format, t->stream, mainpart,
- "multipart/mixed", NULL);
- else if (t->item->handler.old)
- /* FIXME Not passing a GCancellable here. */
- t->item->handler.old->handler (
- t->format, t->stream, t->part,
- t->item->handler.old, NULL, FALSE);
+ len = t->part_id->len;
+ g_string_append_printf(t->part_id, ".tnef");
+
+ if (camel_multipart_get_number (mp) > 0) {
+ handler = em_format_find_handler (t->format, "multiplart/mixed");
+ /* FIXME Not passing a GCancellable here. */
+ if (handler && handler->parse_func) {
+ CamelMimePart *part = camel_mime_part_new ();
+ camel_medium_set_content ((CamelMedium *) part,
+ CAMEL_DATA_WRAPPER (mp));
+ handler->parse_func (t->format, part, t->part_id, t->info, NULL);
+ g_object_unref (part);
+ }
+ }
- g_string_truncate (t->format->part_id, len);
+ g_string_truncate (t->part_id, len);
g_object_unref (mp);
g_object_unref (mainpart);
- goto ok;
- fail:
- if (t->item->handler.old)
- /* FIXME Not passing a GCancellable here. */
- t->item->handler.old->handler (
- t->format, t->stream, t->part,
- t->item->handler.old, NULL, FALSE);
- ok:
g_free (name);
g_free (tmpdir);
}