int main (int argc, char **argv) { int i; camel_test_init(argc, argv); camel_test_start("HTML Stream filtering"); for (i=0;i<100;i++) { char inname[32], outname[32]; CamelMimeFilter *f; struct stat st; sprintf(inname, "data/html.%d.in", i); sprintf(outname, "data/html.%d.out", i); if (stat(inname, &st) == -1) break; f = camel_mime_filter_tohtml_new(CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS, 0); test_filter(f, inname, outname); check_unref(f, 1); } camel_test_end(); return 0; }
static gboolean emfe_error_format (EMailFormatterExtension *extension, EMailFormatter *formatter, EMailFormatterContext *context, EMailPart *part, GOutputStream *stream, GCancellable *cancellable) { GOutputStream *filtered_stream; CamelMimeFilter *filter; CamelMimePart *mime_part; CamelDataWrapper *dw; const gchar *string; gchar *html; mime_part = e_mail_part_ref_mime_part (part); dw = camel_medium_get_content (CAMEL_MEDIUM (mime_part)); html = g_strdup_printf ( "<div class=\"part-container -e-mail-formatter-frame-color " "-e-mail-formatter-body-color -e-web-view-text-color\">" "<div class=\"part-container-inner-margin pre\">\n" "<table border=\"0\" cellspacing=\"10\" " "cellpadding=\"0\" width=\"100%%\">\n" "<tr valign=\"top\"><td width=50>" "<img src=\"gtk-stock://%s/?size=%d\" /></td>\n" "<td style=\"color: red;\">", "dialog-error", GTK_ICON_SIZE_DIALOG); g_output_stream_write_all ( stream, html, strlen (html), NULL, cancellable, NULL); g_free (html); filter = camel_mime_filter_tohtml_new ( CAMEL_MIME_FILTER_TOHTML_CONVERT_NL | CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS, 0); filtered_stream = camel_filter_output_stream_new (stream, filter); g_object_unref (filter); camel_data_wrapper_decode_to_output_stream_sync ( dw, filtered_stream, cancellable, NULL); g_output_stream_flush (filtered_stream, cancellable, NULL); g_object_unref (filtered_stream); string = "</td></tr></table></div></div>"; g_output_stream_write_all ( stream, string, strlen (string), NULL, cancellable, NULL); g_object_unref (mime_part); return TRUE; }
static gboolean emqfe_text_plain_format (EMailFormatterExtension *extension, EMailFormatter *formatter, EMailFormatterContext *context, EMailPart *part, GOutputStream *stream, GCancellable *cancellable) { GOutputStream *filtered_stream; GOutputStream *temp_stream; CamelMimeFilter *filter; CamelMimePart *mime_part; CamelContentType *type; EMailFormatterQuoteContext *qf_context; CamelMimeFilterToHTMLFlags text_flags; const gchar *format; guint32 rgb = 0x737373; mime_part = e_mail_part_ref_mime_part (part); if (mime_part == NULL) return FALSE; qf_context = (EMailFormatterQuoteContext *) context; text_flags = CAMEL_MIME_FILTER_TOHTML_PRE | CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS | CAMEL_MIME_FILTER_TOHTML_CONVERT_ADDRESSES; /* XXX Should we define a separate EMailFormatter property * for using CAMEL_MIME_FILTER_TOHTML_QUOTE_CITATION? */ if (e_mail_formatter_get_mark_citations (formatter)) text_flags |= CAMEL_MIME_FILTER_TOHTML_QUOTE_CITATION; /* Check for RFC 2646 flowed text. */ type = camel_mime_part_get_content_type (mime_part); if (camel_content_type_is (type, "text", "plain") && (format = camel_content_type_param (type, "format")) && !g_ascii_strcasecmp (format, "flowed")) text_flags |= CAMEL_MIME_FILTER_TOHTML_FORMAT_FLOWED; filtered_stream = g_object_ref (stream); if ((qf_context->qf_flags & E_MAIL_FORMATTER_QUOTE_FLAG_KEEP_SIG) == 0) { filter = e_mail_stripsig_filter_new (TRUE); temp_stream = camel_filter_output_stream_new ( filtered_stream, filter); g_filter_output_stream_set_close_base_stream ( G_FILTER_OUTPUT_STREAM (temp_stream), FALSE); g_object_unref (filtered_stream); filtered_stream = temp_stream; g_object_unref (filter); } filter = camel_mime_filter_tohtml_new (text_flags, rgb); temp_stream = camel_filter_output_stream_new (filtered_stream, filter); g_filter_output_stream_set_close_base_stream ( G_FILTER_OUTPUT_STREAM (temp_stream), FALSE); g_object_unref (filtered_stream); filtered_stream = temp_stream; g_object_unref (filter); e_mail_formatter_format_text ( formatter, part, filtered_stream, cancellable); g_output_stream_flush (filtered_stream, cancellable, NULL); g_object_unref (filtered_stream); g_object_unref (mime_part); return TRUE; }