X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-stream-text-to-html.c;h=c99ff9587447ad46b524aecee697142414d90a87;hb=fc86f2291e127b737be601da0d1de3d33055610e;hp=b62de1576937c29d54be2a4dad8d06a630a034c3;hpb=3a00a6ff63e2fcd2feb005314753c6d4f32cf105;p=modest diff --git a/src/modest-stream-text-to-html.c b/src/modest-stream-text-to-html.c index b62de15..c99ff95 100644 --- a/src/modest-stream-text-to-html.c +++ b/src/modest-stream-text-to-html.c @@ -58,7 +58,9 @@ struct _ModestStreamTextToHtmlPrivate { gboolean written_prefix; gsize linkify_limit; gsize full_limit; + gsize line_limit; gsize total_output; + gsize total_lines_output; }; #define MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ MODEST_TYPE_STREAM_TEXT_TO_HTML, \ @@ -125,6 +127,7 @@ modest_stream_text_to_html_init (ModestStreamTextToHtml *obj) priv->linkify_limit = 0; priv->full_limit = 0; priv->total_output = 0; + priv->total_lines_output = 0; modest_text_utils_hyperlinkify_begin (); } @@ -160,6 +163,13 @@ modest_stream_text_to_html_new (TnyStream *out_stream) } void +modest_stream_text_to_html_set_line_limit (ModestStreamTextToHtml *self, gssize limit) +{ + ModestStreamTextToHtmlPrivate *priv = MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE (self); + priv->line_limit = limit; +} + +void modest_stream_text_to_html_set_linkify_limit (ModestStreamTextToHtml *self, gssize limit) { ModestStreamTextToHtmlPrivate *priv = MODEST_STREAM_TEXT_TO_HTML_GET_PRIVATE (self); @@ -195,6 +205,8 @@ write_line (TnyStream *self, const gchar *str, gboolean convert_to_html) preserve the prefix and suffix */ if (convert_to_html && (priv->full_limit > 0) &&(priv->total_output > priv->full_limit)) return TRUE; + if (convert_to_html && (priv->line_limit > 0) && (priv->total_lines_output > priv->line_limit)) + return TRUE; if ((priv->linkify_limit > 0) && (priv->total_output > priv->linkify_limit)) hyperlinkify = FALSE; if (convert_to_html) { @@ -205,6 +217,7 @@ write_line (TnyStream *self, const gchar *str, gboolean convert_to_html) pending_bytes = strlen (html_buffer); priv->total_output += pending_bytes; + priv->total_lines_output ++; offset = html_buffer; while (pending_bytes > 0) { @@ -242,6 +255,12 @@ text_to_html_write (TnyStream *self, const char *buffer, size_t n) while (n > 0) { gchar c = *buffer; + + if ((priv->full_limit > 0) && (priv->total_output > priv->full_limit)) + return n; + if ((priv->line_limit > 0) && (priv->total_lines_output > priv->line_limit)) + return n; + if (priv->line_buffer == NULL) priv->line_buffer = g_string_new (NULL);