[evolution-ews] Ignore address books with UUID-like name
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews] Ignore address books with UUID-like name
- Date: Thu, 4 Jan 2018 13:56:36 +0000 (UTC)
commit 03661f28db850afcfc09ba3e87daac3a84427cc0
Author: Milan Crha <mcrha redhat com>
Date: Thu Jan 4 14:54:03 2018 +0100
Ignore address books with UUID-like name
There are advertised two address books whose name is like a UUID since
Exchange 2013 servers, which should not be shown and cause just confusion,
thus this change makes them ignored.
src/collection/e-ews-backend.c | 35 ++++++++++++++++++++++++++++++++++-
1 files changed, 34 insertions(+), 1 deletions(-)
---
diff --git a/src/collection/e-ews-backend.c b/src/collection/e-ews-backend.c
index f5f93cc..a0d61ff 100644
--- a/src/collection/e-ews-backend.c
+++ b/src/collection/e-ews-backend.c
@@ -222,6 +222,32 @@ ews_backend_sync_authentication (EEwsBackend *ews_backend,
e_source_authentication_get_user (coll_authentication_extension));
}
+static gboolean
+ews_backend_is_uuid_like_name (const gchar *name)
+{
+ const gchar *uuid_mask = "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}";
+ const gchar *ptr, *msk_ptr;
+ gint len;
+
+ if (!name || *name != '{')
+ return FALSE;
+
+ len = strlen (name);
+ if (name[len - 1] != '}' || len != strlen (uuid_mask))
+ return FALSE;
+
+ for (ptr = name, msk_ptr = uuid_mask; *ptr && *msk_ptr; ptr++, msk_ptr++) {
+ if (*msk_ptr == 'X') {
+ if (!g_ascii_isxdigit (*ptr))
+ break;
+ } else if (*msk_ptr != *ptr) {
+ break;
+ }
+ }
+
+ return *msk_ptr == *ptr && !*msk_ptr;
+}
+
static ESource *
ews_backend_new_child (EEwsBackend *backend,
EEwsFolder *folder)
@@ -237,10 +263,17 @@ ews_backend_new_child (EEwsBackend *backend,
g_return_val_if_fail (fid != NULL, NULL);
+ display_name = e_ews_folder_get_name (folder);
+
+ if (e_ews_folder_get_folder_type (folder) == E_EWS_FOLDER_TYPE_CONTACTS &&
+ ews_backend_is_uuid_like_name (display_name)) {
+ /* Ignore address books with UUID-like name */
+ return NULL;
+ }
+
collection_backend = E_COLLECTION_BACKEND (backend);
source = e_collection_backend_new_child (collection_backend, fid->id);
- display_name = e_ews_folder_get_name (folder);
e_source_set_display_name (source, display_name);
switch (e_ews_folder_get_folder_type (folder)) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]