From 4f233ba7d5d71cd8cb848fd2e88b63ce6bc6fc21 Mon Sep 17 00:00:00 2001 From: Sergio Villar Senin Date: Tue, 5 Aug 2008 18:43:32 +0000 Subject: [PATCH 1/1] * Fixes NB#87346 do not generate nested "Fw:" or "Re:" pmo-trunk-r5267 --- src/modest-text-utils.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index b5e3c00..6e89e71 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -288,21 +288,33 @@ modest_text_utils_strftime(char *s, gsize max, const char *fmt, time_t timet) gchar * modest_text_utils_derived_subject (const gchar *subject, const gchar *prefix) { - gchar *tmp; + gchar *tmp, *subject_dup, *retval; + gint prefix_len; g_return_val_if_fail (prefix, NULL); if (!subject || subject[0] == '\0') subject = _("mail_va_no_subject"); - tmp = g_strchug (g_strdup (subject)); + subject_dup = g_strdup (subject); + tmp = g_strchug (subject_dup); - if (!strncmp (tmp, prefix, strlen (prefix))) { - return tmp; - } else { - g_free (tmp); - return g_strdup_printf ("%s %s", prefix, subject); - } + /* We do not want things like "Re: Re: Re:" or "Fw: Fw:" so + delete the previous ones */ + prefix_len = strlen (prefix); + do { + if (g_str_has_prefix (tmp, prefix)) { + tmp += prefix_len; + tmp = g_strchug (tmp); + } else { + break; + } + } while (tmp); + + retval = g_strdup_printf ("%s %s", prefix, tmp); + g_free (subject_dup); + + return retval; } gchar* -- 1.7.9.5