gchar *tmp, *subject_dup, *retval, *prefix;
const gchar *untranslated_prefix;
gint prefix_len, untranslated_prefix_len;
- gboolean untranslated_found = FALSE;
+ gboolean translated_found = FALSE;
+ gboolean first_time;
if (!subject || subject[0] == '\0')
subject = _("mail_va_no_subject");
/* We do not want things like "Re: Re: Re:" or "Fw: Fw:" so
delete the previous ones */
+ first_time = TRUE;
do {
if (g_str_has_prefix (tmp, prefix)) {
tmp += prefix_len;
tmp = g_strchug (tmp);
+ /* Do not consider translated prefixes in the
+ middle of a Re:Re:..Re: like sequence */
+ if (G_UNLIKELY (first_time))
+ translated_found = TRUE;
} else if (g_str_has_prefix (tmp, untranslated_prefix)) {
tmp += untranslated_prefix_len;
tmp = g_strchug (tmp);
- untranslated_found = TRUE;
} else {
gchar *prefix_down, *tmp_down;
break;
}
}
+ first_time = FALSE;
} while (tmp);
- retval = g_strdup_printf ("%s %s", (untranslated_found) ? untranslated_prefix : prefix, tmp);
+ if (!g_strcmp0 (subject, tmp)) {
+ /* normal case */
+ retval = g_strdup_printf ("%s %s", untranslated_prefix, tmp);
+ } else {
+ if (translated_found) {
+ /* Found a translated prefix, i.e, "VS:" in Finish */
+ retval = g_strdup_printf ("%s %s", prefix, tmp);
+ } else {
+ retval = g_strdup_printf ("%s %s", untranslated_prefix, tmp);
+ }
+ }
g_free (subject_dup);
g_free (prefix);
guchar kar = data[i];
if (space_seen && kar != ' ') {
- g_string_append (html, " ");
+ g_string_append (html, " ");
space_seen = FALSE;
}
gchar *next_char = g_utf8_next_char (cur);
if (!g_utf8_strchr (start, (cur - start + 1), g_utf8_get_char ("@")) &&
- next_char && *next_char != '\n')
+ next_char && *next_char != '\n' && *next_char != '\0')
continue;
start_index = g_new0 (gint, 1);
quote_name_part (GString **str, gchar **cur, gchar **start)
{
gchar *blank;
- gint str_len = g_utf8_pointer_to_offset (*start, *cur) -
- g_utf8_pointer_to_offset (*start, *start);
+ gint str_len = *cur - *start;
while (**start == ' ') {
*start = g_utf8_next_char (*start);
*start = g_utf8_next_char (*cur);
} else {
*str = g_string_append_c (*str, '"');
- *str = g_string_append_len (*str, *start,
- (g_utf8_pointer_to_offset (*start, blank) -
- g_utf8_pointer_to_offset (*start, *start)));
+ *str = g_string_append_len (*str, *start, (blank - *start));
*str = g_string_append_c (*str, '"');
- *str = g_string_append_len (*str, blank,
- (g_utf8_pointer_to_offset (*start, *cur) -
- g_utf8_pointer_to_offset (*start, blank)));
+ *str = g_string_append_len (*str, blank, (*cur - blank));
*str = g_string_append (*str, ";");
*start = g_utf8_next_char (*cur);
}