aboutsummaryrefslogtreecommitdiffstats
path: root/em-format/e-mail-parser-text-enriched.c
diff options
context:
space:
mode:
Diffstat (limited to 'em-format/e-mail-parser-text-enriched.c')
-rw-r--r--em-format/e-mail-parser-text-enriched.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/em-format/e-mail-parser-text-enriched.c b/em-format/e-mail-parser-text-enriched.c
index c23130763c..34a64c38f0 100644
--- a/em-format/e-mail-parser-text-enriched.c
+++ b/em-format/e-mail-parser-text-enriched.c
@@ -57,21 +57,20 @@ static const gchar *parser_mime_types[] = { "text/richtext",
"text/enriched",
NULL };
-static GSList *
+static gboolean
empe_text_enriched_parse (EMailParserExtension *extension,
EMailParser *parser,
CamelMimePart *part,
GString *part_id,
- GCancellable *cancellable)
+ GCancellable *cancellable,
+ GQueue *out_mail_parts)
{
+ GQueue work_queue = G_QUEUE_INIT;
EMailPart *mail_part;
const gchar *tmp;
gint len;
CamelContentType *ct;
- if (g_cancellable_is_cancelled (cancellable))
- return NULL;
-
len = part_id->len;
g_string_append (part_id, ".text_enriched");
@@ -88,13 +87,15 @@ empe_text_enriched_parse (EMailParserExtension *extension,
g_string_truncate (part_id, len);
- if (e_mail_part_is_attachment (part)) {
- return e_mail_parser_wrap_as_attachment (
- parser, part, g_slist_append (NULL, mail_part),
- part_id, cancellable);
- }
+ g_queue_push_tail (&work_queue, mail_part);
+
+ if (e_mail_part_is_attachment (part))
+ e_mail_parser_wrap_as_attachment (
+ parser, part, part_id, &work_queue);
+
+ e_queue_transfer (&work_queue, out_mail_parts);
- return g_slist_append (NULL, mail_part);
+ return TRUE;
}
static const gchar **