[evolution-ews] Allow e_ews_connection_get_oal_detail() to return more than one type of element
- From: David Woodhouse <dwmw2 src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews] Allow e_ews_connection_get_oal_detail() to return more than one type of element
- Date: Thu, 16 May 2013 21:36:47 +0000 (UTC)
commit 4e38249ec357be4335c5547c1ab613c5d07b8e37
Author: David Woodhouse <David Woodhouse intel com>
Date: Thu May 16 22:34:17 2013 +0100
Allow e_ews_connection_get_oal_detail() to return more than one type of element
src/addressbook/e-book-backend-ews.c | 7 +-----
src/server/e-ews-connection.c | 36 ++++++++++++++++++++-------------
src/server/e-ews-connection.h | 1 +
3 files changed, 24 insertions(+), 20 deletions(-)
---
diff --git a/src/addressbook/e-book-backend-ews.c b/src/addressbook/e-book-backend-ews.c
index 471c557..afe9d0c 100644
--- a/src/addressbook/e-book-backend-ews.c
+++ b/src/addressbook/e-book-backend-ews.c
@@ -2452,12 +2452,7 @@ exit:
g_free (uncompressed_filename);
}
- if (full_l) {
- g_free (full->sha);
- g_free (full->filename);
- g_free (full);
- g_slist_free (full_l);
- }
+ g_slist_free_full (full_l, (GDestroyNotify)ews_oal_details_free);
g_object_unref (oab_cnc);
return ret;
diff --git a/src/server/e-ews-connection.c b/src/server/e-ews-connection.c
index c53ae11..d3471e9 100644
--- a/src/server/e-ews-connection.c
+++ b/src/server/e-ews-connection.c
@@ -1601,6 +1601,7 @@ void
ews_oal_details_free (EwsOALDetails *details)
{
if (details != NULL) {
+ g_free (details->type);
g_free (details->sha);
g_free (details->filename);
g_free (details);
@@ -2592,20 +2593,27 @@ parse_oal_full_details (xmlNode *node,
GSList *elements = NULL;
for (node = node->children; node; node = node->next) {
- if (node->type == XML_ELEMENT_NODE && !strcmp ((gchar *) node->name, element)) {
- EwsOALDetails *det = g_new0 (EwsOALDetails, 1);
-
- det->seq = get_property_as_uint32 (node, "seq");
- det->ver = get_property_as_uint32 (node, "ver");
- det->size = get_property_as_uint32 (node, "size");
- det->uncompressed_size = get_property_as_uint32 (node, "uncompressedsize");
- det->sha = get_property (node, "uncompressedsize");
- det->filename = g_strstrip (get_content (node));
-
- elements = g_slist_prepend (elements, det);
- if (!strcmp (element, "Full"))
- break;
- }
+ EwsOALDetails *det;
+ if (node->type != XML_ELEMENT_NODE)
+ continue;
+ if (element && strcmp ((gchar *) node->name, element))
+ continue;
+ if (!element && strcmp ((gchar *) node->name, "Full") &&
+ strcmp((gchar *) node->name, "Diff"))
+ continue;
+
+ det = g_new0 (EwsOALDetails, 1);
+ det->type = g_strdup((gchar *) node->name);
+ det->seq = get_property_as_uint32 (node, "seq");
+ det->ver = get_property_as_uint32 (node, "ver");
+ det->size = get_property_as_uint32 (node, "size");
+ det->uncompressed_size = get_property_as_uint32 (node, "uncompressedsize");
+ det->sha = get_property (node, "uncompressedsize");
+ det->filename = g_strstrip (get_content (node));
+
+ elements = g_slist_prepend (elements, det);
+ if (element && !strcmp (element, "Full"))
+ break;
}
return elements;
diff --git a/src/server/e-ews-connection.h b/src/server/e-ews-connection.h
index 55f4e87..2e13dc7 100644
--- a/src/server/e-ews-connection.h
+++ b/src/server/e-ews-connection.h
@@ -129,6 +129,7 @@ typedef struct {
} EwsOAL;
typedef struct {
+ gchar *type;
guint32 seq;
guint32 ver;
guint32 size;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]