} else if ((current_sur_name != NULL) && (strlen(current_sur_name) != 0)) {
g_string_append_printf(email_id_str, "%s", current_sur_name);
}
- if (g_utf8_strchr (email_id_str->str, -1, ' ')) {
- g_string_prepend_c (email_id_str, '\"');
- g_string_append_c (email_id_str, '\"');
- }
+ g_string_prepend_c (email_id_str, '\"');
+ g_string_append_c (email_id_str, '\"');
+
g_string_append_printf (email_id_str, " %c%s%c", '<', current_email_id, '>');
return g_string_free (email_id_str, FALSE);
}
/* quoted string */
if (*current == '\"') {
+ gchar *last_quote = NULL;
current = g_utf8_next_char (current);
has_error = TRUE;
for (; *current != '\0'; current = g_utf8_next_char (current)) {
} else if (*current == '\"') {
has_error = FALSE;
current = g_utf8_next_char (current);
- break;
+ last_quote = current;
}
}
+ if (last_quote)
+ current = last_quote;
} else {
has_error = TRUE;
for (current = stripped ; *current != '\0'; current = g_utf8_next_char (current)) {
g_free (stripped);
right_part = g_strstrip (right_part);
+ if (g_str_has_suffix (right_part, ",") || g_str_has_suffix (right_part, ";"))
+ right_part [(strlen (right_part) - 1)] = '\0';
+
if (g_str_has_prefix (right_part, "<") &&
g_str_has_suffix (right_part, ">")) {
gchar *address;
g_signal_handlers_block_by_func (buffer, modest_recpt_editor_on_insert_text_after, recpt_editor);
gtk_text_buffer_insert (buffer, &iter, string_to_add, -1);
-
+
g_signal_handlers_unblock_by_func (buffer, modest_recpt_editor_on_insert_text, recpt_editor);
g_signal_handlers_unblock_by_func (buffer, modest_recpt_editor_on_insert_text_after, recpt_editor);
next_c = g_utf8_get_char (g_utf8_next_char (current));
else
next_c = 0;
- if (c != 0x2022 && c != 0xfffc &&
+ if (c != 0x2022 && c != 0xfffc &&
c != g_utf8_get_char ("\n") &&
c != g_utf8_get_char ("\t"))
str = g_string_append_unichar (str, c);
if (!quoted && ((c == g_utf8_get_char(",") || c == g_utf8_get_char (";")))) {
- if ((next_c != 0) && (next_c != g_utf8_get_char ("\n")))
- str = g_string_append_c (str, '\n');
+ if ((next_c != 0) && (next_c != g_utf8_get_char ("\n"))) {
+ gchar *last_separator = MAX (g_utf8_strrchr(str->str, -1, g_utf8_get_char (",")),
+ g_utf8_strrchr(str->str, -1, g_utf8_get_char (";")));
+ if (last_separator) {
+ gchar *last_at = g_utf8_strrchr (str->str, -1, g_utf8_get_char ("@"));
+ if (last_at) {
+ if (last_at > last_separator)
+ str = g_string_append_c (str, '\n');
+ }
+ } else {
+ if (g_utf8_strrchr (str->str, -1, g_utf8_get_char ("@")))
+ str = g_string_append_c (str, '\n');
+ }
+ }
}
if (c == g_utf8_get_char ("\""))
quoted = !quoted;
current = g_utf8_next_char (current);
i = current - text;
}
+
return g_string_free (str, FALSE);
}