X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-text-utils.c;h=62bd6bb5c8c38d295989a1c794af9b2dd6999c08;hp=6e89e717135415270799cb8f2019b1183dc4db1e;hb=e45958deaf9701399c552ea0d84c2447efacd4ca;hpb=4f233ba7d5d71cd8cb848fd2e88b63ce6bc6fc21 diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index 6e89e71..62bd6bb 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -63,7 +63,7 @@ * will hang modest */ #define HYPERLINKIFY_MAX_LENGTH (1024*50) - +#define SIGNATURE_MARKER "--" /* @@ -215,11 +215,11 @@ modest_text_utils_cite (const gchar *text, if (!signature) retval = g_strdup (""); else if (strcmp(content_type, "text/html") == 0) { - tmp_sig = g_strconcat ("\n", signature, NULL); + tmp_sig = g_strconcat ("\n", SIGNATURE_MARKER,"\n", signature, NULL); retval = modest_text_utils_convert_to_html_body(tmp_sig, -1, TRUE); g_free (tmp_sig); } else { - retval = g_strconcat (text, "\n", signature, NULL); + retval = g_strconcat (text, "\n", SIGNATURE_MARKER, "\n", signature, NULL); } return retval; @@ -881,7 +881,14 @@ modest_text_utils_quote_plain_text (const gchar *text, gsize len; gchar *attachments_string = NULL; - q = g_string_new ("\n"); + q = g_string_new (""); + + if (signature != NULL) { + q = g_string_append (q, "\n--\n"); + q = g_string_append (q, signature); + } + + q = g_string_append (q, "\n"); q = g_string_append (q, cite); q = g_string_append_c (q, '\n'); @@ -932,15 +939,20 @@ modest_text_utils_quote_plain_text (const gchar *text, q = g_string_append (q, attachments_string); g_free (attachments_string); - if (signature != NULL) { - q = g_string_append (q, "\n--\n"); - q = g_string_append (q, signature); - q = g_string_append_c (q, '\n'); - } - return g_string_free (q, FALSE); } +static void +quote_html_add_to_gstring (GString *string, + const gchar *text) +{ + if (text && strcmp (text, "")) { + gchar *html_text = modest_text_utils_convert_to_html_body (text, -1, TRUE); + g_string_append_printf (string, "%s
", html_text); + g_free (html_text); + } +} + static gchar* modest_text_utils_quote_html (const gchar *text, const gchar *cite, @@ -948,38 +960,33 @@ modest_text_utils_quote_html (const gchar *text, GList *attachments, int limit) { - gchar *result = NULL; - gchar *signature_result = NULL; - const gchar *format = \ - "\n" \ - "\n" \ - "\n" \ - "
%s
%s
%s
\n" \ - "
--
%s
\n" \ - "\n" \ - "\n"; - gchar *attachments_string = NULL; - gchar *q_attachments_string = NULL; - gchar *q_cite = NULL; - gchar *html_text = NULL; - - if (signature == NULL) - signature_result = g_strdup (""); - else - signature_result = modest_text_utils_convert_to_html_body (signature, -1, TRUE); + GString *result_string; + + result_string = + g_string_new ( \ + "\n" \ + "\n" \ + "\n
\n"); + + if (text || cite || signature) { + g_string_append (result_string, "
\n");
+		if (signature) {
+			quote_html_add_to_gstring (result_string, SIGNATURE_MARKER);
+			quote_html_add_to_gstring (result_string, signature);
+		}
+		quote_html_add_to_gstring (result_string, cite);
+		quote_html_add_to_gstring (result_string, text);
+		if (attachments) {
+			gchar *attachments_string = quoted_attachments (attachments);
+			quote_html_add_to_gstring (result_string, attachments_string);
+			g_free (attachments_string);
+		}
+		g_string_append (result_string, "
"); + } + g_string_append (result_string, ""); + g_string_append (result_string, ""); - attachments_string = quoted_attachments (attachments); - q_attachments_string = modest_text_utils_convert_to_html_body (attachments_string, -1, TRUE); - q_cite = modest_text_utils_convert_to_html_body (cite, -1, TRUE); - html_text = modest_text_utils_convert_to_html_body (text, -1, TRUE); - result = g_strdup_printf (format, q_cite, html_text, q_attachments_string, signature_result); - g_free (q_cite); - g_free (html_text); - g_free (attachments_string); - g_free (q_attachments_string); - g_free (signature_result); - - return result; + return g_string_free (result_string, FALSE); } static gint @@ -1262,7 +1269,7 @@ modest_text_utils_get_subject_prefix_len (const gchar *sub) int c = prefix_len + 1; while (sub[c] && sub[c] != ']') ++c; - if (sub[c]) + if (!sub[c]) return 0; /* no end to the ']' found */ else prefix_len = c + 1; @@ -1297,7 +1304,8 @@ modest_text_utils_utf8_strcmp (const gchar* s1, const gchar *s2, gboolean insens if (!insensitive) { /* optimization: shortcut if first char is ascii */ - if (((s1[0] & 0xf0)== 0) && ((s2[0] & 0xf0) == 0)) + if (((s1[0] & 0x80)== 0) && ((s2[0] & 0x80) == 0) && + (s1[0] != s2[0])) return s1[0] - s2[0]; return g_utf8_collate (s1, s2); @@ -1306,8 +1314,9 @@ modest_text_utils_utf8_strcmp (const gchar* s1, const gchar *s2, gboolean insens gint result; gchar *n1, *n2; - /* optimization: short cut iif first char is ascii */ - if (((s1[0] & 0xf0) == 0) && ((s2[0] & 0xf0) == 0)) + /* optimization: shortcut if first char is ascii */ + if (((s1[0] & 0x80) == 0) && ((s2[0] & 0x80) == 0) && + (s1[0] != s2[0])) return tolower(s1[0]) - tolower(s2[0]); n1 = g_utf8_strdown (s1, -1); @@ -1385,8 +1394,8 @@ modest_text_utils_validate_folder_name (const gchar *folder_name) /* Cannot contain Windows port numbers. I'd like to use GRegex but it's still not available in Maemo. sergio */ - if (g_ascii_strncasecmp (folder_name, "LPT", 3) || - g_ascii_strncasecmp (folder_name, "COM", 3)) { + if (!g_ascii_strncasecmp (folder_name, "LPT", 3) || + !g_ascii_strncasecmp (folder_name, "COM", 3)) { glong val; gchar *endptr;