[evolution-mapi] Bug #620166 - Prefer named constants over property codes



commit 20b31ec599081e641bfbdfd26d59bf7203b98668
Author: Milan Crha <mcrha redhat com>
Date:   Wed Jul 27 13:15:48 2011 +0200

    Bug #620166 - Prefer named constants over property codes

 src/addressbook/e-book-backend-mapi-contacts.c |   10 +-
 src/calendar/e-cal-backend-mapi.c              |  310 ++++++------------------
 src/libexchangemapi/exchange-mapi-cal-utils.c  |   54 ++--
 src/libexchangemapi/exchange-mapi-connection.c |    9 +-
 src/libexchangemapi/exchange-mapi-mail-utils.c |    2 +-
 src/libexchangemapi/exchange-mapi-utils.c      |   65 ++++-
 src/libexchangemapi/exchange-mapi-utils.h      |   39 ++--
 7 files changed, 171 insertions(+), 318 deletions(-)
---
diff --git a/src/addressbook/e-book-backend-mapi-contacts.c b/src/addressbook/e-book-backend-mapi-contacts.c
index 31a5942..18e1624 100644
--- a/src/addressbook/e-book-backend-mapi-contacts.c
+++ b/src/addressbook/e-book-backend-mapi-contacts.c
@@ -260,7 +260,7 @@ mapi_book_write_props (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *
 		} G_STMT_END
 
 	#define set_str_named_value(named_id, val) G_STMT_START { \
-		if (!exchange_mapi_utils_add_spropvalue_named_id (conn, fid, mem_ctx, values, n_values, named_id, val ? val : "")) \
+		if (!exchange_mapi_utils_add_spropvalue_namedid (conn, fid, mem_ctx, values, n_values, named_id, val ? val : "")) \
 			return FALSE;	\
 		} G_STMT_END
 
@@ -331,7 +331,7 @@ mapi_book_write_props (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *
 
 		set_str_value (PR_MESSAGE_CLASS, IPM_DISTLIST);
 		u32 = 0xFFFFFFFF;
-		if (!exchange_mapi_utils_add_spropvalue_named_id (conn, fid, mem_ctx, values, n_values, PidLidFileUnderId, &u32))
+		if (!exchange_mapi_utils_add_spropvalue_namedid (conn, fid, mem_ctx, values, n_values, PidLidFileUnderId, &u32))
 			return FALSE;
 		set_str_named_con_value (PidLidFileUnder, E_CONTACT_FILE_AS);
 		set_str_named_con_value (PidLidDistributionListName, E_CONTACT_FILE_AS);
@@ -397,15 +397,15 @@ mapi_book_write_props (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *
 		g_list_foreach (local, (GFunc)e_vcard_attribute_free, NULL);
 		g_list_free (local);
 
-		if (!exchange_mapi_utils_add_spropvalue_named_id (conn, fid, mem_ctx, values, n_values,
+		if (!exchange_mapi_utils_add_spropvalue_namedid (conn, fid, mem_ctx, values, n_values,
 			PidLidDistributionListOneOffMembers, oneoff_members))
 			return FALSE;
 
-		if (!exchange_mapi_utils_add_spropvalue_named_id (conn, fid, mem_ctx, values, n_values,
+		if (!exchange_mapi_utils_add_spropvalue_namedid (conn, fid, mem_ctx, values, n_values,
 			PidLidDistributionListMembers, members))
 			return FALSE;
 
-		if (!exchange_mapi_utils_add_spropvalue_named_id (conn, fid, mem_ctx, values, n_values,
+		if (!exchange_mapi_utils_add_spropvalue_namedid (conn, fid, mem_ctx, values, n_values,
 			PidLidDistributionListChecksum, &crc32))
 			return FALSE;
 
diff --git a/src/calendar/e-cal-backend-mapi.c b/src/calendar/e-cal-backend-mapi.c
index ab31271..d1bc379 100644
--- a/src/calendar/e-cal-backend-mapi.c
+++ b/src/calendar/e-cal-backend-mapi.c
@@ -416,11 +416,7 @@ mapi_cal_get_changes_cb (FetchItemsCallbackData *item_data, gpointer data)
 	kind = e_cal_backend_get_kind (E_CAL_BACKEND (cbmapi));
 	cache_dir = e_cal_backend_get_cache_dir (E_CAL_BACKEND (cbmapi));
 
-//	exchange_mapi_debug_property_dump (array);
-
-	recurring = NULL;
-	/* FIXME: Evolution does not support recurring tasks */
-	recurring = (const bool *)find_mapi_SPropValue_data(array, PROP_TAG(PT_BOOLEAN, 0x8126));
+	recurring = exchange_mapi_util_find_array_namedid (array, item_data->conn, item_data->fid, PidLidTaskFRecurring);
 	if (recurring && *recurring) {
 		g_warning ("Encountered a recurring task.");
 		exchange_mapi_util_free_stream_list (&streams);
@@ -573,98 +569,6 @@ handle_deleted_items_cb (FetchItemsCallbackData *item_data, gpointer data)
 }
 
 static gboolean
-mapi_cal_get_known_ids (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *mem_ctx, struct SPropTagArray *props, gpointer data)
-{
-	/* this is a list of all known calendar MAPI tag IDs;
-	   if you add new add it here too, otherwise it may not be fetched */
-	static uint32_t known_cal_mapi_ids[] = {
-		PR_7BIT_DISPLAY_NAME_UNICODE,
-		PR_ADDRTYPE_UNICODE,
-		PR_ATTACH_DATA_BIN,
-		PR_ATTACH_FILENAME_UNICODE,
-		PR_ATTACH_LONG_FILENAME_UNICODE,
-		PR_ATTACH_METHOD,
-		PR_BODY,
-		PR_BODY_UNICODE,
-		PR_CONVERSATION_TOPIC_UNICODE,
-		PR_CREATION_TIME,
-		PR_DISPLAY_NAME_UNICODE,
-		PR_DISPLAY_TYPE,
-		PR_END_DATE,
-		PR_FID,
-		PR_GIVEN_NAME_UNICODE,
-		PR_HTML,
-		PR_ICON_INDEX,
-		PR_IMPORTANCE,
-		PR_LAST_MODIFICATION_TIME,
-		PR_MESSAGE_CLASS,
-		PR_MESSAGE_FLAGS,
-		PR_MID,
-		PR_MSG_EDITOR_FORMAT,
-		PR_NORMALIZED_SUBJECT_UNICODE,
-		PR_OBJECT_TYPE,
-		PR_OWNER_APPT_ID,
-		PR_PRIORITY,
-		PR_PROCESSED,
-		PR_RCVD_REPRESENTING_ADDRTYPE_UNICODE,
-		PR_RCVD_REPRESENTING_EMAIL_ADDRESS_UNICODE,
-		PR_RCVD_REPRESENTING_NAME_UNICODE,
-		PR_RECIPIENT_DISPLAY_NAME_UNICODE,
-		PR_RECIPIENT_FLAGS,
-		PR_RECIPIENT_TRACKSTATUS,
-		PR_RECIPIENT_TYPE,
-		PR_RENDERING_POSITION,
-		PR_RESPONSE_REQUESTED,
-		PR_RTF_IN_SYNC,
-		PR_SENDER_ADDRTYPE_UNICODE,
-		PR_SENDER_EMAIL_ADDRESS_UNICODE,
-		PR_SENDER_NAME_UNICODE,
-		PR_SEND_INTERNET_ENCODING,
-		PR_SENSITIVITY,
-		PR_SENT_REPRESENTING_ADDRTYPE_UNICODE,
-		PR_SENT_REPRESENTING_EMAIL_ADDRESS_UNICODE,
-		PR_SENT_REPRESENTING_NAME_UNICODE,
-		PR_SMTP_ADDRESS_UNICODE,
-		PR_START_DATE,
-		PR_SUBJECT_UNICODE
-	};
-
-	/* do not make this array static, the function modifies it on run */
-	ResolveNamedIDsData known_nids[] = {
-		{ PidLidGlobalObjectId, 0 },
-		{ PidLidCleanGlobalObjectId, 0 },
-		{ PidLidAppointmentRecur, 0 },
-		{ PidLidAppointmentTimeZoneDefinitionStartDisplay, 0 },
-		{ PidLidAppointmentTimeZoneDefinitionEndDisplay, 0 },
-		{ PidLidTaskFRecurring, 0 },
-		{ PidLidAppointmentSubType, 0 },
-		{ PidLidRecurring, 0 },
-		{ PidLidReminderSet, 0 },
-		{ PidLidPercentComplete, 0 },
-		{ PidLidTaskStatus, 0 },
-		{ PidLidAppointmentSequence, 0 },
-		{ PidLidBusyStatus, 0 },
-		{ PidLidLocation, 0 },
-		{ PidLidTaskStartDate, 0 },
-		{ PidLidTaskDueDate, 0 },
-		{ PidLidTaskDateCompleted, 0 },
-		{ PidLidAppointmentStartWhole, 0 },
-		{ PidLidAppointmentEndWhole, 0 },
-		{ PidLidReminderTime, 0 },
-		{ PidLidReminderSignalTime, 0 },
-		{ PidLidExceptionReplaceTime, 0 },
-		{ PidNameKeywords, 0 }
-	};
-
-	g_return_val_if_fail (props != NULL, FALSE);
-
-	if (!exchange_mapi_utils_add_named_ids_to_props_array (conn, fid, mem_ctx, props, known_nids, G_N_ELEMENTS (known_nids)))
-		return FALSE;
-
-	return exchange_mapi_utils_add_props_to_props_array (mem_ctx, props, known_cal_mapi_ids, G_N_ELEMENTS (known_cal_mapi_ids));
-}
-
-static gboolean
 mapi_cal_get_idlist (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *mem_ctx, struct SPropTagArray *props, gpointer data)
 {
 	static const uint32_t cal_IDList[] = {
@@ -745,62 +649,30 @@ get_deltas (gpointer handle)
 	gmtime_r (&current_time, &tm);
 	strftime (t_str, 26, "%Y-%m-%dT%H:%M:%SZ", &tm);
 
-//	e_file_cache_freeze_changes (E_FILE_CACHE (priv->cache));
-	/* FIXME: GetProps does not seem to work for tasks :-( */
-	if (kind == ICAL_VTODO_COMPONENT) {
-		if (g_strcmp0 (e_source_get_property (source, "public"), "yes") == 0) {
-			options |= MAPI_OPTIONS_USE_PFSTORE;
-			is_public = TRUE;
-			use_restriction = FALSE;
-		}
-
-		if (!exchange_mapi_connection_fetch_items (priv->conn, priv->fid, use_restriction ? &res : NULL, NULL,
-						is_public ? NULL : mapi_cal_get_known_ids, NULL,
-						mapi_cal_get_changes_cb, cbmapi,
-						options, &mapi_error)) {
-			if (mapi_error) {
-				gchar *msg = g_strdup_printf (_("Failed to fetch changes from a server: %s"), mapi_error->message);
-				e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), msg);
-				g_free (msg);
-				g_error_free (mapi_error);
-			} else {
-				e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), _("Failed to fetch changes from a server"));
-			}
+	if (g_strcmp0 (e_source_get_property (source, "public"), "yes") == 0) {
+		options |= MAPI_OPTIONS_USE_PFSTORE;
+		is_public = TRUE;
+		use_restriction = FALSE;
+	}
 
-//			e_file_cache_thaw_changes (E_FILE_CACHE (priv->cache));
-			g_mutex_unlock (priv->updating_mutex);
-			if (mem_ctx)
-				talloc_free (mem_ctx);
-			return FALSE;
-		}
-	} else {
-		if (g_strcmp0 (e_source_get_property (source, "public"), "yes") == 0) {
-			options |= MAPI_OPTIONS_USE_PFSTORE;
-			is_public = TRUE;
-			use_restriction = FALSE;
+	if (!exchange_mapi_connection_fetch_items (priv->conn, priv->fid, use_restriction ? &res : NULL, NULL,
+					is_public ? NULL : exchange_mapi_cal_utils_get_props_cb, GINT_TO_POINTER (kind),
+					mapi_cal_get_changes_cb, cbmapi,
+					options, &mapi_error)) {
+		if (mapi_error) {
+			gchar *msg = g_strdup_printf (_("Failed to fetch changes from a server: %s"), mapi_error->message);
+			e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), msg);
+			g_free (msg);
+			g_error_free (mapi_error);
+		} else {
+			e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), _("Failed to fetch changes from a server"));
 		}
 
-		if (!exchange_mapi_connection_fetch_items (priv->conn, priv->fid, use_restriction ? &res : NULL, NULL,
-						is_public ? NULL : exchange_mapi_cal_utils_get_props_cb, GINT_TO_POINTER (kind),
-						mapi_cal_get_changes_cb, cbmapi,
-						options, &mapi_error)) {
-			if (mapi_error) {
-				gchar *msg = g_strdup_printf (_("Failed to fetch changes from a server: %s"), mapi_error->message);
-				e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), msg);
-				g_free (msg);
-				g_error_free (mapi_error);
-			} else {
-				e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), _("Failed to fetch changes from a server"));
-			}
-
-			//e_file_cache_thaw_changes (E_FILE_CACHE (priv->cache));
-			g_mutex_unlock (priv->updating_mutex);
-			if (mem_ctx)
-				talloc_free (mem_ctx);
-			return FALSE;
-		}
+		g_mutex_unlock (priv->updating_mutex);
+		if (mem_ctx)
+			talloc_free (mem_ctx);
+		return FALSE;
 	}
-//	e_file_cache_thaw_changes (E_FILE_CACHE (priv->cache));
 
 	notify_view_completed (cbmapi);
 
@@ -899,53 +771,27 @@ get_deltas (gpointer handle)
 		g_slist_foreach (did.unknown_mids, (GFunc) g_free, NULL);
 		g_slist_free (did.unknown_mids);
 
-		if (kind == ICAL_VTODO_COMPONENT) {
-			if (g_strcmp0 (e_source_get_property (source, "public"), "yes") == 0) {
-				options |= MAPI_OPTIONS_USE_PFSTORE;
-				is_public = TRUE;
-			}
-
-			if (!exchange_mapi_connection_fetch_items (priv->conn, priv->fid, &res, NULL,
-						is_public ? NULL : mapi_cal_get_known_ids, NULL,
-						mapi_cal_get_changes_cb, cbmapi,
-						options, &mapi_error)) {
-
-				if (mapi_error) {
-					gchar *msg = g_strdup_printf (_("Failed to fetch changes from a server: %s"), mapi_error->message);
-					e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), msg);
-					g_free (msg);
-					g_error_free (mapi_error);
-				} else {
-					e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), _("Failed to fetch changes from a server"));
-				}
+		if (g_strcmp0 (e_source_get_property (source, "public"), "yes") == 0) {
+			options |= MAPI_OPTIONS_USE_PFSTORE;
+			is_public = TRUE;
+		}
 
-				g_mutex_unlock (priv->updating_mutex);
-				g_free (or_res);
-				return FALSE;
-			}
-		} else {
-			if (g_strcmp0 (e_source_get_property (source, "public"), "yes") == 0) {
-				options |= MAPI_OPTIONS_USE_PFSTORE;
-				is_public = TRUE;
+		if (!exchange_mapi_connection_fetch_items (priv->conn, priv->fid, &res, NULL,
+					is_public ? NULL : exchange_mapi_cal_utils_get_props_cb, GINT_TO_POINTER (kind),
+					mapi_cal_get_changes_cb, cbmapi,
+					options, &mapi_error)) {
+			if (mapi_error) {
+				gchar *msg = g_strdup_printf (_("Failed to fetch changes from a server: %s"), mapi_error->message);
+				e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), msg);
+				g_free (msg);
+				g_error_free (mapi_error);
+			} else {
+				e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), _("Failed to fetch changes from a server"));
 			}
 
-			if (!exchange_mapi_connection_fetch_items (priv->conn, priv->fid, &res, NULL,
-						is_public ? NULL : exchange_mapi_cal_utils_get_props_cb, GINT_TO_POINTER (kind),
-						mapi_cal_get_changes_cb, cbmapi,
-						options, &mapi_error)) {
-				if (mapi_error) {
-					gchar *msg = g_strdup_printf (_("Failed to fetch changes from a server: %s"), mapi_error->message);
-					e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), msg);
-					g_free (msg);
-					g_error_free (mapi_error);
-				} else {
-					e_cal_backend_notify_error (E_CAL_BACKEND (cbmapi), _("Failed to fetch changes from a server"));
-				}
-
-				g_free (or_res);
-				g_mutex_unlock (priv->updating_mutex);
-				return FALSE;
-			}
+			g_free (or_res);
+			g_mutex_unlock (priv->updating_mutex);
+			return FALSE;
 		}
 		g_free (or_res);
 	}
@@ -1185,7 +1031,7 @@ mapi_cal_cache_create_cb (FetchItemsCallbackData *item_data, gpointer data)
 	switch (kind) {
 		case ICAL_VTODO_COMPONENT:
 			/* FIXME: Evolution does not support recurring tasks */
-			recurring = (const bool *)find_mapi_SPropValue_data(properties, PROP_TAG(PT_BOOLEAN, 0x8126));
+			recurring = exchange_mapi_util_find_array_namedid (properties, item_data->conn, item_data->fid, PidLidTaskFRecurring);
 			if (recurring && *recurring) {
 				g_warning ("Encountered a recurring task.");
 				exchange_mapi_util_free_stream_list (&streams);
@@ -1268,51 +1114,26 @@ populate_cache (ECalBackendMAPI *cbmapi, GError **perror)
 	gmtime_r (&current_time, &tm);
 	strftime (t_str, 26, "%Y-%m-%dT%H:%M:%SZ", &tm);
 
-//	e_file_cache_freeze_changes (E_FILE_CACHE (priv->cache));
-	/* FIXME: GetProps does not seem to work for tasks :-( */
-	if (kind == ICAL_VTODO_COMPONENT) {
-		if (g_strcmp0 (e_source_get_property (source, "public"), "yes") == 0) {
-			options |= MAPI_OPTIONS_USE_PFSTORE;
-			is_public = TRUE;
-		}
-
-		if (!exchange_mapi_connection_fetch_items (priv->conn, priv->fid, NULL, NULL,
-						is_public ? NULL : mapi_cal_get_known_ids, NULL,
-						mapi_cal_cache_create_cb, cbmapi,
-						options, &mapi_error)) {
-			e_cal_backend_store_thaw_changes (priv->store);
-			g_mutex_lock (priv->mutex);
-			priv->populating_cache = FALSE;
-			g_mutex_unlock (priv->mutex);
-			mapi_error_to_edc_error (perror, mapi_error, OtherError, _("Failed to fetch items from a server"));
-			if (mapi_error)
-				g_error_free (mapi_error);
-
-			return FALSE;
-		}
-	} else {
-		if (g_strcmp0 (e_source_get_property (source, "public"), "yes") == 0) {
-			options |= MAPI_OPTIONS_USE_PFSTORE;
-			is_public = TRUE;
-		}
+	if (g_strcmp0 (e_source_get_property (source, "public"), "yes") == 0) {
+		options |= MAPI_OPTIONS_USE_PFSTORE;
+		is_public = TRUE;
+	}
 
-		if (!exchange_mapi_connection_fetch_items (priv->conn, priv->fid, NULL, NULL,
-						is_public ? NULL : exchange_mapi_cal_utils_get_props_cb, GINT_TO_POINTER (kind),
-						mapi_cal_cache_create_cb, cbmapi,
-						options, &mapi_error)) {
-			e_cal_backend_store_thaw_changes (priv->store);
-			g_mutex_lock (priv->mutex);
-			priv->populating_cache = FALSE;
-			g_mutex_unlock (priv->mutex);
+	if (!exchange_mapi_connection_fetch_items (priv->conn, priv->fid, NULL, NULL,
+					is_public ? NULL : exchange_mapi_cal_utils_get_props_cb, GINT_TO_POINTER (kind),
+					mapi_cal_cache_create_cb, cbmapi,
+					options, &mapi_error)) {
+		e_cal_backend_store_thaw_changes (priv->store);
+		g_mutex_lock (priv->mutex);
+		priv->populating_cache = FALSE;
+		g_mutex_unlock (priv->mutex);
 
-			mapi_error_to_edc_error (perror, mapi_error, OtherError, _("Failed to fetch items from a server"));
-			if (mapi_error)
-				g_error_free (mapi_error);
+		mapi_error_to_edc_error (perror, mapi_error, OtherError, _("Failed to fetch items from a server"));
+		if (mapi_error)
+			g_error_free (mapi_error);
 
-			return FALSE;
-		}
+		return FALSE;
 	}
-//	e_file_cache_thaw_changes (E_FILE_CACHE (priv->cache));
 
 	notify_view_completed (cbmapi);
 
@@ -1550,9 +1371,6 @@ mapi_cal_get_required_props (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC
 {
 	static uint32_t req_props_list[] = {
 		PR_OWNER_APPT_ID,
-		PROP_TAG(PT_LONG, 0x8201),
-		PROP_TAG(PT_BINARY, 0x0023),
-		PROP_TAG(PT_BINARY, 0x0003),
 		PR_SENT_REPRESENTING_NAME_UNICODE,
 		PR_SENT_REPRESENTING_ADDRTYPE_UNICODE,
 		PR_SENT_REPRESENTING_EMAIL_ADDRESS_UNICODE,
@@ -1561,8 +1379,18 @@ mapi_cal_get_required_props (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC
 		PR_SENDER_EMAIL_ADDRESS_UNICODE
 	};
 
+	/* do not make this array static, the function modifies it on run */
+	ResolveNamedIDsData nids[] = {
+		{ PidLidGlobalObjectId, 0 },
+		{ PidLidCleanGlobalObjectId, 0 },
+		{ PidLidAppointmentSequence, 0 }
+	};
+
 	g_return_val_if_fail (props != NULL, FALSE);
 
+	if (!exchange_mapi_utils_add_named_ids_to_props_array (conn, fid, mem_ctx, props, nids, G_N_ELEMENTS (nids)))
+		return FALSE;
+
 	return exchange_mapi_utils_add_props_to_props_array (mem_ctx, props, req_props_list, G_N_ELEMENTS (req_props_list));
 }
 
@@ -1576,11 +1404,11 @@ capture_req_props (FetchItemsCallbackData *item_data, gpointer data)
 	ui32 = (const uint32_t *)find_mapi_SPropValue_data(properties, PR_OWNER_APPT_ID);
 	if (ui32)
 		cbdata->appt_id = *ui32;
-	ui32 = (const uint32_t *)find_mapi_SPropValue_data(properties, PROP_TAG(PT_LONG, 0x8201));
+	ui32 = exchange_mapi_util_find_array_namedid (properties, item_data->conn, item_data->fid, PidLidAppointmentSequence);
 	if (ui32)
 		cbdata->appt_seq = *ui32;
-	cbdata->cleanglobalid = exchange_mapi_util_copy_binary_r (find_mapi_SPropValue_data(properties, PROP_TAG(PT_BINARY, 0x0023)));
-	cbdata->globalid = exchange_mapi_util_copy_binary_r (find_mapi_SPropValue_data(properties, PROP_TAG(PT_BINARY, 0x0003)));
+	cbdata->cleanglobalid = (gpointer) exchange_mapi_util_find_array_namedid (properties, item_data->conn, item_data->fid, PidLidCleanGlobalObjectId);
+	cbdata->globalid = (gpointer) exchange_mapi_util_find_array_namedid (properties, item_data->conn, item_data->fid, PidLidGlobalObjectId);
 	cbdata->username = g_strdup (exchange_mapi_util_find_array_propval (properties, PR_SENT_REPRESENTING_NAME_UNICODE));
 	cbdata->useridtype = g_strdup (exchange_mapi_util_find_array_propval (properties, PR_SENT_REPRESENTING_ADDRTYPE_UNICODE));
 	cbdata->userid = g_strdup (exchange_mapi_util_find_array_propval (properties, PR_SENT_REPRESENTING_EMAIL_ADDRESS_UNICODE));
diff --git a/src/libexchangemapi/exchange-mapi-cal-utils.c b/src/libexchangemapi/exchange-mapi-cal-utils.c
index f7003be..d5fbd30 100644
--- a/src/libexchangemapi/exchange-mapi-cal-utils.c
+++ b/src/libexchangemapi/exchange-mapi-cal-utils.c
@@ -751,7 +751,7 @@ exchange_mapi_cal_util_mapi_props_to_comp (ExchangeMapiConnection *conn, mapi_id
 		ExchangeMAPIStream *stream;
 
 		/* GlobalObjectId */
-		stream = exchange_mapi_util_find_stream (streams, PidLidGlobalObjectId);
+		stream = exchange_mapi_util_find_stream_namedid (streams, conn, fid, PidLidGlobalObjectId);
 		if (stream) {
 			gchar *value = globalid_to_string (stream->value);
 			prop = icalproperty_new_x (value);
@@ -781,7 +781,7 @@ exchange_mapi_cal_util_mapi_props_to_comp (ExchangeMapiConnection *conn, mapi_id
 		}
 
 		/* AppointmentSequence */
-		ui32 = (const uint32_t *)find_mapi_SPropValue_data(properties, PidLidAppointmentSequence);
+		ui32 = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidAppointmentSequence);
 		if (ui32) {
 			gchar *value = g_strdup_printf ("%d", *ui32);
 			prop = icalproperty_new_x (value);
@@ -790,21 +790,21 @@ exchange_mapi_cal_util_mapi_props_to_comp (ExchangeMapiConnection *conn, mapi_id
 			g_free (value);
 		}
 
-		location = (const gchar *)exchange_mapi_util_find_array_propval(properties, PidLidLocation);
+		location = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidLocation);
 		if (location && *location)
 			icalcomponent_set_location (ical_comp, location);
 
-		b = (const bool *)find_mapi_SPropValue_data(properties, PidLidAppointmentSubType);
+		b = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidAppointmentSubType);;
 		all_day = b && *b;
 
-		stream = exchange_mapi_util_find_stream (streams, PidLidAppointmentTimeZoneDefinitionStartDisplay);
+		stream = exchange_mapi_util_find_stream_namedid (streams, conn, fid, PidLidAppointmentTimeZoneDefinitionStartDisplay);
 		if (stream) {
 			gchar *buf = exchange_mapi_cal_util_bin_to_mapi_tz (stream->value);
 			dtstart_tz_location = exchange_mapi_cal_tz_util_get_ical_equivalent (buf);
 			g_free (buf);
 		}
 
-		if (get_mapi_SPropValue_array_date_timeval (&t, properties, PidLidAppointmentStartWhole) == MAPI_E_SUCCESS) {
+		if (exchange_mapi_util_find_array_datetime_namedid (&t, properties, conn, fid, PidLidAppointmentStartWhole) == MAPI_E_SUCCESS) {
 			icaltimezone *zone = dtstart_tz_location ? icaltimezone_get_builtin_timezone (dtstart_tz_location) : (icaltimezone *)default_zone;
 			prop = icalproperty_new_dtstart (icaltime_from_timet_with_zone (t.tv_sec, all_day, zone));
 			if (!all_day && zone && icaltimezone_get_tzid (zone)) {
@@ -814,14 +814,14 @@ exchange_mapi_cal_util_mapi_props_to_comp (ExchangeMapiConnection *conn, mapi_id
 			icalcomponent_add_property (ical_comp, prop);
 		}
 
-		stream = exchange_mapi_util_find_stream (streams, PidLidAppointmentTimeZoneDefinitionEndDisplay);
+		stream = exchange_mapi_util_find_stream_namedid (streams, conn, fid, PidLidAppointmentTimeZoneDefinitionEndDisplay);
 		if (stream) {
 			gchar *buf = exchange_mapi_cal_util_bin_to_mapi_tz (stream->value);
 			dtend_tz_location = exchange_mapi_cal_tz_util_get_ical_equivalent (buf);
 			g_free (buf);
 		}
 
-		if (get_mapi_SPropValue_array_date_timeval (&t, properties, PidLidAppointmentEndWhole) == MAPI_E_SUCCESS) {
+		if (exchange_mapi_util_find_array_datetime_namedid (&t, properties, conn, fid, PidLidAppointmentEndWhole) == MAPI_E_SUCCESS) {
 			icaltimezone *zone = dtend_tz_location ? icaltimezone_get_builtin_timezone (dtend_tz_location) : (icaltimezone *)default_zone;
 			prop = icalproperty_new_dtend (icaltime_from_timet_with_zone (t.tv_sec, all_day, zone));
 			if (!all_day && zone && icaltimezone_get_tzid (zone)) {
@@ -831,7 +831,7 @@ exchange_mapi_cal_util_mapi_props_to_comp (ExchangeMapiConnection *conn, mapi_id
 			icalcomponent_add_property (ical_comp, prop);
 		}
 
-		ui32 = (const uint32_t *)find_mapi_SPropValue_data(properties, PidLidBusyStatus);
+		ui32 = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidBusyStatus);
 		if (ui32) {
 			prop = icalproperty_new_transp (get_transp_from_prop (*ui32));
 			icalcomponent_add_property (ical_comp, prop);
@@ -899,7 +899,7 @@ exchange_mapi_cal_util_mapi_props_to_comp (ExchangeMapiConnection *conn, mapi_id
 					param = icalparameter_new_cn (name);
 					icalproperty_add_parameter (prop, param);
 
-					ui32 = exchange_mapi_util_find_array_propval (properties, PidLidResponseStatus);
+					ui32 = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidResponseStatus);
 					param = icalparameter_new_partstat (get_partstat_from_trackstatus (ui32 ? *ui32 : olResponseNone));
 					icalproperty_add_parameter (prop, param);
 
@@ -945,9 +945,9 @@ exchange_mapi_cal_util_mapi_props_to_comp (ExchangeMapiConnection *conn, mapi_id
 			}
 		}
 
-		b = (const bool *)find_mapi_SPropValue_data(properties, PidLidRecurring);
+		b = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidRecurring);
 		if (b && *b) {
-			stream = exchange_mapi_util_find_stream (streams, PidLidAppointmentRecur);
+			stream = exchange_mapi_util_find_stream_namedid (streams, conn, fid, PidLidAppointmentRecur);
 			if (stream) {
 				icaltimezone *recur_zone;
 				const gchar *recur_tz_location;
@@ -961,12 +961,12 @@ exchange_mapi_cal_util_mapi_props_to_comp (ExchangeMapiConnection *conn, mapi_id
 			}
 		}
 
-		b = (const bool *)find_mapi_SPropValue_data(properties, PidLidReminderSet);
+		b = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidReminderSet);
 		if (b && *b) {
 			struct timeval start, displaytime;
 
-			if ((get_mapi_SPropValue_array_date_timeval (&start, properties, PidLidReminderTime) == MAPI_E_SUCCESS)
-			 && (get_mapi_SPropValue_array_date_timeval (&displaytime, properties, PidLidReminderSignalTime) == MAPI_E_SUCCESS)) {
+			if ((exchange_mapi_util_find_array_datetime_namedid (&start, properties, conn, fid, PidLidReminderTime) == MAPI_E_SUCCESS)
+			 && (exchange_mapi_util_find_array_datetime_namedid (&displaytime, properties, conn, fid, PidLidReminderSignalTime) == MAPI_E_SUCCESS)) {
 				ECalComponentAlarm *e_alarm = e_cal_component_alarm_new ();
 				ECalComponentAlarmTrigger trigger;
 
@@ -987,38 +987,38 @@ exchange_mapi_cal_util_mapi_props_to_comp (ExchangeMapiConnection *conn, mapi_id
 		const uint64_t *status = NULL;
 
 		/* NOTE: Exchange tasks are DATE values, not DATE-TIME values, but maybe someday, we could expect Exchange to support it;) */
-		if (get_mapi_SPropValue_array_date_timeval (&t, properties, PidLidTaskStartDate) == MAPI_E_SUCCESS)
+		if (exchange_mapi_util_find_array_datetime_namedid (&t, properties, conn, fid, PidLidTaskStartDate) == MAPI_E_SUCCESS)
 			icalcomponent_set_dtstart (ical_comp, icaltime_from_timet_with_zone (t.tv_sec, 1, default_zone));
-		if (get_mapi_SPropValue_array_date_timeval (&t, properties, PidLidTaskDueDate) == MAPI_E_SUCCESS)
+		if (exchange_mapi_util_find_array_datetime_namedid (&t, properties, conn, fid, PidLidTaskDueDate) == MAPI_E_SUCCESS)
 			icalcomponent_set_due (ical_comp, icaltime_from_timet_with_zone (t.tv_sec, 1, default_zone));
 
-		status = (const uint64_t *)find_mapi_SPropValue_data(properties, PidLidTaskStatus);
+		status = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidTaskStatus);
 		if (status) {
 			icalcomponent_set_status (ical_comp, get_taskstatus_from_prop(*status));
 			if (*status == olTaskComplete
-			&& get_mapi_SPropValue_array_date_timeval (&t, properties, PidLidTaskDateCompleted) == MAPI_E_SUCCESS) {
+			&& exchange_mapi_util_find_array_datetime_namedid (&t, properties, conn, fid, PidLidTaskDateCompleted) == MAPI_E_SUCCESS) {
 				prop = icalproperty_new_completed (icaltime_from_timet_with_zone (t.tv_sec, 1, default_zone));
 				icalcomponent_add_property (ical_comp, prop);
 			}
 		}
 
-		complete = (const double *)find_mapi_SPropValue_data(properties, PidLidPercentComplete);
+		complete = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidPercentComplete);
 		if (complete) {
 			prop = icalproperty_new_percentcomplete ((gint)(*complete * 100 + 1e-9));
 			icalcomponent_add_property (ical_comp, prop);
 		}
 
-		b = (const bool *)find_mapi_SPropValue_data(properties, PidLidTaskFRecurring);
+		b = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidTaskFRecurring);
 		if (b && *b) {
 			/* FIXME: Evolution does not support recurring tasks */
 			g_warning ("Encountered a recurring task.");
 		}
 
-		b = (const bool *)find_mapi_SPropValue_data(properties, PidLidReminderSet);
+		b = exchange_mapi_util_find_array_namedid (properties, conn, fid, PidLidReminderSet);
 		if (b && *b) {
 			struct timeval abs;
 
-			if (get_mapi_SPropValue_array_date_timeval (&abs, properties, PidLidReminderTime) == MAPI_E_SUCCESS) {
+			if (exchange_mapi_util_find_array_datetime_namedid (&abs, properties, conn, fid, PidLidReminderTime) == MAPI_E_SUCCESS) {
 				ECalComponentAlarm *e_alarm = e_cal_component_alarm_new ();
 				ECalComponentAlarmTrigger trigger;
 
@@ -1264,9 +1264,9 @@ task_build_name_id (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *mem
 		{ PidLidTaskOwner, 0 },
 		{ PidLidTaskAssigner, 0 },
 		{ PidLidTaskFRecurring, 0 },
-		{ PidLidTaskRole, 0 },
 		{ PidLidTaskOwnership, 0 },
-		{ PidLidTaskAcceptanceState, 0 }
+		{ PidLidTaskAcceptanceState, 0 },
+		{ PidLidTaskRole, 0 }
 	};
 
 	if (!props)
@@ -1369,7 +1369,7 @@ exchange_mapi_cal_utils_write_props_cb (ExchangeMapiConnection *conn, mapi_id_t
 		} G_STMT_END
 
 	#define set_named_value(named_id, val) G_STMT_START { \
-		if (!exchange_mapi_utils_add_spropvalue_named_id (conn, fid, mem_ctx, values, n_values, named_id, val)) \
+		if (!exchange_mapi_utils_add_spropvalue_namedid (conn, fid, mem_ctx, values, n_values, named_id, val)) \
 			return FALSE;	\
 		} G_STMT_END
 
@@ -1387,7 +1387,7 @@ exchange_mapi_cal_utils_write_props_cb (ExchangeMapiConnection *conn, mapi_id_t
 									\
 		exchange_mapi_util_time_t_to_filetime (dtval, &filetime); \
 									\
-		if (!exchange_mapi_utils_add_spropvalue_named_id (conn, fid, mem_ctx, values, n_values, named_id, &filetime)) \
+		if (!exchange_mapi_utils_add_spropvalue_namedid (conn, fid, mem_ctx, values, n_values, named_id, &filetime)) \
 			return FALSE;	\
 		} G_STMT_END
 
diff --git a/src/libexchangemapi/exchange-mapi-connection.c b/src/libexchangemapi/exchange-mapi-connection.c
index 124ea7a..5dc46a7 100644
--- a/src/libexchangemapi/exchange-mapi-connection.c
+++ b/src/libexchangemapi/exchange-mapi-connection.c
@@ -1252,8 +1252,6 @@ exchange_mapi_util_get_attachments (ExchangeMapiConnection *conn, mapi_id_t fid,
 			goto loop_cleanup;
 		}
 
-		mapi_SPropValue_array_named (&obj_attach, &properties);
-
 		az = 0;
 		attachment = g_new0 (ExchangeMAPIAttachment, 1);
 		attachment->cValues = properties.cValues;
@@ -1770,7 +1768,7 @@ exchange_mapi_connection_fetch_items   (ExchangeMapiConnection *conn, mapi_id_t
 			}
 
 			if (propsTagArray && propsTagArray->cValues) {
-				struct SPropValue *lpProps;
+				struct SPropValue *lpProps = NULL;
 				struct SPropTagArray *tags;
 				uint32_t prop_count = 0, k, ll;
 				/* we need to make a local copy of the tag array
@@ -1784,7 +1782,6 @@ exchange_mapi_connection_fetch_items   (ExchangeMapiConnection *conn, mapi_id_t
 				if (ms != MAPI_E_SUCCESS)
 					make_mapi_error (perror, "GetProps", ms);
 
-				MAPIFreeBuffer (tags);
 				properties_array.lpProps = talloc_zero_array (mem_ctx, struct mapi_SPropValue,
 									 prop_count + 1);
 				properties_array.cValues = prop_count;
@@ -1831,8 +1828,6 @@ exchange_mapi_connection_fetch_items   (ExchangeMapiConnection *conn, mapi_id_t
 				FetchItemsCallbackData *item_data;
 
 				if ((options & MAPI_OPTIONS_DONT_OPEN_MESSAGE) == 0) {
-					mapi_SPropValue_array_named (&obj_message, &properties_array);
-
 					if ((options & MAPI_OPTIONS_FETCH_GENERIC_STREAMS) != 0) {
 						uint32_t z;
 						const uint32_t *cpid = exchange_mapi_util_find_array_propval (&properties_array, PR_INTERNET_CPID);
@@ -1980,8 +1975,6 @@ exchange_mapi_connection_fetch_object_props (ExchangeMapiConnection *conn, mapi_
 	}
 
 	if (ms == MAPI_E_SUCCESS) {
-		mapi_SPropValue_array_named (obj_message, &properties_array);
-
 		if ((options & MAPI_OPTIONS_FETCH_GENERIC_STREAMS)) {
 			uint32_t z;
 
diff --git a/src/libexchangemapi/exchange-mapi-mail-utils.c b/src/libexchangemapi/exchange-mapi-mail-utils.c
index f3de312..5ff3da1 100644
--- a/src/libexchangemapi/exchange-mapi-mail-utils.c
+++ b/src/libexchangemapi/exchange-mapi-mail-utils.c
@@ -1621,7 +1621,7 @@ mapi_mail_utils_create_item_build_props (ExchangeMapiConnection *conn, mapi_id_t
 	}
 	
 	if (item->pid_name_content_type) {
-		if (!exchange_mapi_utils_add_spropvalue_named_id (conn, fid, mem_ctx, values, n_values, PidNameContentType, item->pid_name_content_type))
+		if (!exchange_mapi_utils_add_spropvalue_namedid (conn, fid, mem_ctx, values, n_values, PidNameContentType, item->pid_name_content_type))
 			return FALSE;
 	}
 
diff --git a/src/libexchangemapi/exchange-mapi-utils.c b/src/libexchangemapi/exchange-mapi-utils.c
index b6c650c..e712c5f 100644
--- a/src/libexchangemapi/exchange-mapi-utils.c
+++ b/src/libexchangemapi/exchange-mapi-utils.c
@@ -255,6 +255,35 @@ exchange_mapi_util_find_array_namedid (struct mapi_SPropValue_array *properties,
 	return res;
 }
 
+enum MAPISTATUS
+exchange_mapi_util_find_array_datetime_propval (struct timeval *tv, struct mapi_SPropValue_array *properties, uint32_t proptag)
+{
+	g_return_val_if_fail (tv != NULL, MAPI_E_INVALID_PARAMETER);
+	g_return_val_if_fail (properties != NULL, MAPI_E_INVALID_PARAMETER);
+
+	return get_mapi_SPropValue_array_date_timeval (tv, properties, proptag);
+}
+
+enum MAPISTATUS
+exchange_mapi_util_find_array_datetime_namedid (struct timeval *tv, struct mapi_SPropValue_array *properties, ExchangeMapiConnection *conn, mapi_id_t fid, uint32_t namedid)
+{
+	enum MAPISTATUS res = MAPI_E_NOT_FOUND;
+	uint32_t proptag;
+
+	g_return_val_if_fail (tv != NULL, MAPI_E_INVALID_PARAMETER);
+	g_return_val_if_fail (properties != NULL, MAPI_E_INVALID_PARAMETER);
+	g_return_val_if_fail (conn != NULL, MAPI_E_INVALID_PARAMETER);
+
+	proptag = exchange_mapi_connection_resolve_named_prop (conn, fid, namedid, NULL);
+	if (proptag != MAPI_E_RESERVED)
+		res = exchange_mapi_util_find_array_datetime_propval (tv, properties, proptag);
+
+	if (res == MAPI_E_NOT_FOUND)
+		res = exchange_mapi_util_find_array_datetime_propval (tv, properties, namedid);
+
+	return res;
+}
+
 ExchangeMAPIStream *
 exchange_mapi_util_find_stream (GSList *stream_list, uint32_t proptag)
 {
@@ -269,6 +298,27 @@ exchange_mapi_util_find_stream (GSList *stream_list, uint32_t proptag)
 	return NULL;
 }
 
+ExchangeMAPIStream *
+exchange_mapi_util_find_stream_namedid (GSList *stream_list, ExchangeMapiConnection *conn, mapi_id_t fid, uint32_t namedid)
+{
+	uint32_t proptag;
+	gconstpointer res = NULL;
+
+	g_return_val_if_fail (conn != NULL, NULL);
+
+	if (!stream_list)
+		return NULL;
+
+	proptag = exchange_mapi_connection_resolve_named_prop (conn, fid, namedid, NULL);
+	if (proptag != MAPI_E_RESERVED)
+		res = exchange_mapi_util_find_stream (stream_list, proptag);
+
+	if (!res)
+		res = exchange_mapi_util_find_stream (stream_list, namedid);
+
+	return (ExchangeMAPIStream *) res;
+}
+
 void
 exchange_mapi_util_free_attachment_list (GSList **attach_list)
 {
@@ -1058,25 +1108,14 @@ exchange_mapi_utils_add_spropvalue (TALLOC_CTX *mem_ctx, struct SPropValue **val
 	g_return_val_if_fail (values_array != NULL, FALSE);
 	g_return_val_if_fail (n_values != NULL, FALSE);
 
-	if ((prop_tag & 0xFFFF) == PT_DOUBLE) {
-		uint64_t zero = 0;
-
-		/* add an empty fake value and rewrite it */
-		*values_array = add_SPropValue (mem_ctx, *values_array, n_values, PROP_TAG(PT_LONG, 0x0001), &zero);
-
-		((*values_array)[(*n_values) - 1]).ulPropTag = prop_tag;
-		((*values_array)[(*n_values) - 1]).dwAlignPad = 0;
-		memcpy (&((*values_array)[(*n_values) - 1]).value.dbl, prop_value, 8);
-	} else {
-		*values_array = add_SPropValue (mem_ctx, *values_array, n_values, prop_tag, prop_value);
-	}
+	*values_array = add_SPropValue (mem_ctx, *values_array, n_values, prop_tag, prop_value);
 
 	return TRUE;
 }
 
 /* similar as exchange_mapi_utils_add_spropvalue, just here is not used prop_tag, but named id */
 gboolean
-exchange_mapi_utils_add_spropvalue_named_id (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *mem_ctx, struct SPropValue **values_array, uint32_t *n_values, uint32_t named_id, gconstpointer prop_value)
+exchange_mapi_utils_add_spropvalue_namedid (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *mem_ctx, struct SPropValue **values_array, uint32_t *n_values, uint32_t named_id, gconstpointer prop_value)
 {
 	uint32_t prop_tag;
 
diff --git a/src/libexchangemapi/exchange-mapi-utils.h b/src/libexchangemapi/exchange-mapi-utils.h
index 703ca99..51c32fc 100644
--- a/src/libexchangemapi/exchange-mapi-utils.h
+++ b/src/libexchangemapi/exchange-mapi-utils.h
@@ -26,15 +26,11 @@
 
 #include "exchange-mapi-connection.h"
 
-gchar *
-exchange_mapi_util_mapi_id_to_string (mapi_id_t id);
-gboolean
-exchange_mapi_util_mapi_id_from_string (const gchar *str, mapi_id_t *id);
+gchar *  exchange_mapi_util_mapi_id_to_string (mapi_id_t id);
+gboolean exchange_mapi_util_mapi_id_from_string (const gchar *str, mapi_id_t *id);
 
-gchar *
-exchange_mapi_util_mapi_ids_to_uid (mapi_id_t fid, mapi_id_t mid);
-gboolean
-exchange_mapi_util_mapi_ids_from_uid (const gchar *str, mapi_id_t *fid, mapi_id_t *mid);
+gchar *  exchange_mapi_util_mapi_ids_to_uid (mapi_id_t fid, mapi_id_t mid);
+gboolean exchange_mapi_util_mapi_ids_from_uid (const gchar *str, mapi_id_t *fid, mapi_id_t *mid);
 
 gconstpointer exchange_mapi_util_find_SPropVal_array_propval (struct SPropValue *values, uint32_t proptag);
 gconstpointer exchange_mapi_util_find_SPropVal_array_namedid (struct SPropValue *values, ExchangeMapiConnection *conn, mapi_id_t fid, uint32_t namedid);
@@ -43,27 +39,24 @@ gconstpointer exchange_mapi_util_find_row_namedid (struct SRow *aRow, ExchangeMa
 gconstpointer exchange_mapi_util_find_array_propval (struct mapi_SPropValue_array *properties, uint32_t proptag);
 gconstpointer exchange_mapi_util_find_array_namedid (struct mapi_SPropValue_array *properties, ExchangeMapiConnection *conn, mapi_id_t fid, uint32_t namedid);
 
-ExchangeMAPIStream *
-exchange_mapi_util_find_stream (GSList *stream_list, uint32_t proptag);
+enum MAPISTATUS exchange_mapi_util_find_array_datetime_propval (struct timeval *tv, struct mapi_SPropValue_array *properties, uint32_t proptag);
+enum MAPISTATUS exchange_mapi_util_find_array_datetime_namedid (struct timeval *tv, struct mapi_SPropValue_array *properties, ExchangeMapiConnection *conn, mapi_id_t fid, uint32_t namedid);
 
-void
-exchange_mapi_util_free_attachment_list (GSList **attach_list);
-void
-exchange_mapi_util_free_recipient_list (GSList **recip_list);
-void
-exchange_mapi_util_free_stream_list (GSList **stream_list);
+ExchangeMAPIStream *exchange_mapi_util_find_stream (GSList *stream_list, uint32_t proptag);
+ExchangeMAPIStream *exchange_mapi_util_find_stream_namedid (GSList *stream_list, ExchangeMapiConnection *conn, mapi_id_t fid, uint32_t namedid);
 
-void
-exchange_mapi_debug_property_dump (struct mapi_SPropValue_array *properties);
+void exchange_mapi_util_free_attachment_list (GSList **attach_list);
+void exchange_mapi_util_free_recipient_list (GSList **recip_list);
+void exchange_mapi_util_free_stream_list (GSList **stream_list);
+
+void exchange_mapi_debug_property_dump (struct mapi_SPropValue_array *properties);
 
 void	 exchange_mapi_util_recip_entryid_generate_smtp (TALLOC_CTX *mem_ctx, struct Binary_r *entryid, const gchar *display_name, const gchar *email);
 void	 exchange_mapi_util_recip_entryid_generate_ex  (TALLOC_CTX *mem_ctx, struct Binary_r *entryid, const gchar *exchange_dn);
 gboolean exchange_mapi_util_recip_entryid_decode (ExchangeMapiConnection *conn, const struct Binary_r *entyrid, gchar **display_name, gchar **email);
 
-gchar *
-exchange_lf_to_crlf (const gchar *in);
-gchar *
-exchange_crlf_to_lf (const gchar *in);
+gchar *exchange_lf_to_crlf (const gchar *in);
+gchar *exchange_crlf_to_lf (const gchar *in);
 
 gchar *exchange_mapi_util_profile_name (const gchar *username, const gchar *domain, const gchar *hostname, gboolean migrate);
 
@@ -71,7 +64,7 @@ gboolean exchange_mapi_utils_add_props_to_props_array (TALLOC_CTX *mem_ctx, stru
 gboolean exchange_mapi_utils_add_named_ids_to_props_array (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *mem_ctx, struct SPropTagArray *props, ResolveNamedIDsData *named_ids_list, guint named_ids_n_elems);
 
 gboolean exchange_mapi_utils_add_spropvalue (TALLOC_CTX *mem_ctx, struct SPropValue **values_array, uint32_t *n_values, uint32_t prop_tag, gconstpointer prop_value);
-gboolean exchange_mapi_utils_add_spropvalue_named_id (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *mem_ctx, struct SPropValue **values_array, uint32_t *n_values, uint32_t named_id, gconstpointer prop_value);
+gboolean exchange_mapi_utils_add_spropvalue_namedid (ExchangeMapiConnection *conn, mapi_id_t fid, TALLOC_CTX *mem_ctx, struct SPropValue **values_array, uint32_t *n_values, uint32_t named_id, gconstpointer prop_value);
 
 uint32_t exchange_mapi_utils_push_crc32 (uint32_t crc32, uint8_t *bytes, uint32_t n_bytes);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]