[evolution-data-server] Bug 533478 - [IMAPx] Support umlauts in user tags
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug 533478 - [IMAPx] Support umlauts in user tags
- Date: Mon, 10 Aug 2015 14:03:13 +0000 (UTC)
commit 1bdd10707540d8f7fda4765a8c80375af0cd1e0e
Author: Milan Crha <mcrha redhat com>
Date: Mon Aug 10 16:02:49 2015 +0200
Bug 533478 - [IMAPx] Support umlauts in user tags
camel/providers/imapx/camel-imapx-server.c | 8 +++++++-
camel/providers/imapx/camel-imapx-utils.c | 19 +++++++++++++++++--
2 files changed, 24 insertions(+), 3 deletions(-)
---
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 7e46f7c..77e8aae 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -5262,7 +5262,13 @@ imapx_server_sync_changes_sync (CamelIMAPXServer *is,
if (imapx_uidset_add (&uidset, ic, camel_message_info_uid (info)) == 1
|| (i == c->infos->len - 1 && imapx_uidset_done (&uidset, ic))) {
- camel_imapx_command_add (ic, " %tFLAGS.SILENT (%t)", on ? "+"
: "-", c->name);
+ gchar *utf7;
+
+ utf7 = camel_utf8_utf7 (c->name);
+
+ camel_imapx_command_add (ic, " %tFLAGS.SILENT (%t)", on ? "+"
: "-", utf7 ? utf7 : c->name);
+
+ g_free (utf7);
success = camel_imapx_server_process_command_sync (is, ic,
_("Error syncing changes"), cancellable, error);
diff --git a/camel/providers/imapx/camel-imapx-utils.c b/camel/providers/imapx/camel-imapx-utils.c
index c63de65..a9db565 100644
--- a/camel/providers/imapx/camel-imapx-utils.c
+++ b/camel/providers/imapx/camel-imapx-utils.c
@@ -153,12 +153,21 @@ imapx_parse_flags (CamelIMAPXInputStream *stream,
if (!match_found && user_flagsp != NULL) {
const gchar *flag_name;
+ gchar *utf8;
flag_name = rename_label_flag (
(gchar *) token,
strlen ((gchar *) token), TRUE);
- camel_flag_set (user_flagsp, flag_name, TRUE);
+ utf8 = camel_utf7_utf8 (flag_name);
+ if (utf8 && !g_utf8_validate (utf8, -1, NULL)) {
+ g_free (utf8);
+ utf8 = NULL;
+ }
+
+ camel_flag_set (user_flagsp, utf8 ? utf8 : flag_name, TRUE);
+
+ g_free (utf8);
}
g_free (upper);
@@ -240,6 +249,7 @@ imapx_write_flags (GString *string,
while (user_flags) {
const gchar *flag_name;
+ gchar *utf7;
flag_name = rename_label_flag (
user_flags->name, strlen (user_flags->name), FALSE);
@@ -247,7 +257,12 @@ imapx_write_flags (GString *string,
if (!first)
g_string_append_c (string, ' ');
first = FALSE;
- g_string_append (string, flag_name);
+
+ utf7 = camel_utf8_utf7 (flag_name);
+
+ g_string_append (string, utf7 ? utf7 : flag_name);
+
+ g_free (utf7);
user_flags = user_flags->next;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]