[evolution-mapi] Replace more obsolete code



commit d636cbaa7ed7939bb8b1f32ba7dfda97d283ff9d
Author: Milan Crha <mcrha redhat com>
Date:   Wed Jan 18 19:05:05 2012 +0100

    Replace more obsolete code

 .../e-mapi-subscribe-foreign-folder.c              |    2 +-
 src/camel/camel-mapi-store.c                       |   69 ++++--
 src/libexchangemapi/e-mapi-connection.c            |  269 ++++----------------
 src/libexchangemapi/e-mapi-connection.h            |   28 +--
 4 files changed, 108 insertions(+), 260 deletions(-)
---
diff --git a/src/account-setup-eplugin/e-mapi-subscribe-foreign-folder.c b/src/account-setup-eplugin/e-mapi-subscribe-foreign-folder.c
index e2e1dd5..44a2167 100644
--- a/src/account-setup-eplugin/e-mapi-subscribe-foreign-folder.c
+++ b/src/account-setup-eplugin/e-mapi-subscribe-foreign-folder.c
@@ -510,7 +510,7 @@ subscribe_foreign_response_cb (GObject *dialog,
 /* Opens dialog to subscribe to folders of other
    users in the given store */
 void
-e_mapi_subscribe_foreign_folder	(GtkWindow *parent,
+e_mapi_subscribe_foreign_folder (GtkWindow *parent,
 				 CamelSession *session,
 				 CamelStore *store)
 {
diff --git a/src/camel/camel-mapi-store.c b/src/camel/camel-mapi-store.c
index d2f4b8e..efff94c 100644
--- a/src/camel/camel-mapi-store.c
+++ b/src/camel/camel-mapi-store.c
@@ -1431,9 +1431,16 @@ mapi_store_rename_folder_sync (CamelStore *store,
 
 	if (tmp == NULL || g_str_equal (old_parent, new_parent)) {
 		gchar *folder_id;
+		gboolean status = FALSE;
+		mapi_object_t obj_folder;
+
+		if (cms_open_folder (mapi_store, priv->conn, old_fid, &obj_folder, cancellable, &local_error)) {
+			status = e_mapi_connection_rename_folder (priv->conn, &obj_folder, tmp ? tmp : new_name, cancellable, &local_error);
+			e_mapi_connection_close_folder (priv->conn, &obj_folder, cancellable, &local_error);
+		}
 
 		/* renaming in the same folder, thus no MoveFolder necessary */
-		if (!e_mapi_connection_rename_folder (priv->conn, old_fid, 0, tmp ? tmp : new_name, cancellable, &local_error)) {
+		if (!status) {
 			if (local_error) {
 				if (!e_mapi_utils_propagate_cancelled_error (local_error, error))
 					g_set_error (
@@ -1494,31 +1501,49 @@ mapi_store_rename_folder_sync (CamelStore *store,
 				}
 				camel_store_summary_info_free (mapi_store->summary, new_si);
 			}
-		} else if (!old_parent_fid_str || !new_parent_fid_str ||
-			   !e_mapi_util_mapi_id_from_string (old_parent_fid_str, &old_parent_fid) ||
-			   !e_mapi_util_mapi_id_from_string (new_parent_fid_str, &new_parent_fid) ||
-			   !e_mapi_connection_move_folder (priv->conn, old_fid, old_parent_fid, 0, new_parent_fid, 0, tmp, cancellable, &local_error)) {
-			camel_service_unlock (service, CAMEL_SERVICE_REC_CONNECT_LOCK);
-			if (local_error) {
-				if (!e_mapi_utils_propagate_cancelled_error (local_error, error))
+		} else {
+			gboolean status = FALSE;
+
+			if (old_parent_fid_str && new_parent_fid_str &&
+			   e_mapi_util_mapi_id_from_string (old_parent_fid_str, &old_parent_fid) &&
+			   e_mapi_util_mapi_id_from_string (new_parent_fid_str, &new_parent_fid)) {
+				mapi_object_t src_obj_folder, src_parent_obj_folder, des_obj_folder;
+
+				if (cms_open_folder (mapi_store, priv->conn, old_fid, &src_obj_folder, cancellable, &local_error)) {
+					if (cms_open_folder (mapi_store, priv->conn, old_parent_fid, &src_parent_obj_folder, cancellable, &local_error)) {
+						if (cms_open_folder (mapi_store, priv->conn, new_parent_fid, &des_obj_folder, cancellable, &local_error)) {
+							status = e_mapi_connection_move_folder (priv->conn, &src_obj_folder, &src_parent_obj_folder, &des_obj_folder, tmp, cancellable, &local_error);
+							e_mapi_connection_close_folder (priv->conn, &des_obj_folder, cancellable, &local_error);
+						}
+						e_mapi_connection_close_folder (priv->conn, &src_parent_obj_folder, cancellable, &local_error);
+					}
+					e_mapi_connection_close_folder (priv->conn, &src_obj_folder, cancellable, &local_error);
+				}
+			}
+
+			if (!status) {
+				camel_service_unlock (service, CAMEL_SERVICE_REC_CONNECT_LOCK);
+				if (local_error) {
+					if (!e_mapi_utils_propagate_cancelled_error (local_error, error))
+						g_set_error (
+							error, CAMEL_ERROR, CAMEL_ERROR_GENERIC,
+							_("Cannot rename MAPI folder '%s' to '%s': %s"),
+							old_name, new_name, local_error->message);
+					g_error_free (local_error);
+				} else {
 					g_set_error (
 						error, CAMEL_ERROR, CAMEL_ERROR_GENERIC,
-						_("Cannot rename MAPI folder '%s' to '%s': %s"),
-						old_name, new_name, local_error->message);
-				g_error_free (local_error);
+						_("Cannot rename MAPI folder '%s' to '%s'"),
+						old_name, new_name);
+				}
+				g_free (old_parent);
+				g_free (new_parent);
+				return FALSE;
 			} else {
-				g_set_error (
-					error, CAMEL_ERROR, CAMEL_ERROR_GENERIC,
-					_("Cannot rename MAPI folder '%s' to '%s'"),
-					old_name, new_name);
+				/* folder was moved, update all subfolders immediately, thus
+				   the next get_folder_info call will know about them */
+				mapi_rename_folder_infos (mapi_store, old_name, new_name);
 			}
-			g_free (old_parent);
-			g_free (new_parent);
-			return FALSE;
-		} else {
-			/* folder was moved, update all subfolders immediately, thus
-			   the next get_folder_info call will know about them */
-			mapi_rename_folder_infos (mapi_store, old_name, new_name);
 		}
 
 		folder_id = g_strdup (old_fid_str);
diff --git a/src/libexchangemapi/e-mapi-connection.c b/src/libexchangemapi/e-mapi-connection.c
index 1433506..a3bc2a1 100644
--- a/src/libexchangemapi/e-mapi-connection.c
+++ b/src/libexchangemapi/e-mapi-connection.c
@@ -838,38 +838,6 @@ e_mapi_connection_get_public_folder (EMapiConnection *conn,
 	return ms == MAPI_E_SUCCESS;
 }
 
-static enum MAPISTATUS
-open_folder (EMapiConnection *conn, uint32_t olFolder, mapi_id_t *fid, guint32 fid_options, mapi_object_t *obj_folder, GError **perror)
-{
-	enum MAPISTATUS ms;
-
-	CHECK_CORRECT_CONN_AND_GET_PRIV (conn, MAPI_E_INVALID_PARAMETER);
-	e_return_val_mapi_error_if_fail (obj_folder != NULL, MAPI_E_INVALID_PARAMETER, MAPI_E_INVALID_PARAMETER);
-	e_return_val_mapi_error_if_fail (fid != NULL, MAPI_E_INVALID_PARAMETER, MAPI_E_INVALID_PARAMETER);
-
-	if (*fid == 0) {
-		ms = GetDefaultFolder (&priv->msg_store, fid, olFolder);
-		if (ms != MAPI_E_SUCCESS) {
-			make_mapi_error (perror, "GetDefaultFolder", ms);
-			return ms;
-		}
-
-		fid_options = 0;
-	}
-
-	if ((fid_options & MAPI_OPTIONS_USE_PFSTORE) != 0) {
-		if (!ensure_public_store (priv, perror)) {
-			return MAPI_E_CALL_FAILED;
-		}
-	}
-
-	ms = OpenFolder (((fid_options & MAPI_OPTIONS_USE_PFSTORE) != 0 ? &priv->public_store : &priv->msg_store), *fid, obj_folder);
-	if (ms != MAPI_E_SUCCESS)
-		make_mapi_error (perror, "OpenFolder", ms);
-
-	return ms;
-}
-
 gboolean
 e_mapi_connection_peek_store (EMapiConnection *conn,
 			      gboolean public_store,
@@ -1219,7 +1187,7 @@ e_mapi_connection_get_folder_properties (EMapiConnection *conn,
 		}
 
 		if (named_ids_list) {
-			if (!e_mapi_connection_resolve_named_props (conn, mapi_object_get_id (obj_folder), named_ids_list, named_ids_len, cancellable, perror)) {
+			if (!e_mapi_connection_resolve_named_props (conn, obj_folder, named_ids_list, named_ids_len, cancellable, perror)) {
 				g_free (named_ids_list);
 				goto cleanup;
 			}
@@ -1539,7 +1507,7 @@ change_mapi_SRestriction_named_ids (EMapiConnection *conn,
 	if (!named_ids_list)
 		return TRUE;
 
-	res = e_mapi_connection_resolve_named_props (conn, mapi_object_get_id (obj_folder), named_ids_list, named_ids_len, cancellable, perror);
+	res = e_mapi_connection_resolve_named_props (conn, obj_folder, named_ids_list, named_ids_len, cancellable, perror);
 
 	if (res) {
 		GHashTable *replace_hash = prepare_maybe_replace_hash (named_ids_list, named_ids_len, TRUE);
@@ -1848,7 +1816,7 @@ ensure_additional_properties_cb (EMapiConnection *conn,
 
 		if (!e_mapi_util_find_array_propval (&object->properties, prop)) {
 			if (((prop >> 16) & 0xFFFF) >= 0x8000) {
-				prop = e_mapi_connection_resolve_named_prop (conn, mapi_object_get_id (eap->obj_folder), prop, cancellable, NULL);
+				prop = e_mapi_connection_resolve_named_prop (conn, eap->obj_folder, prop, cancellable, NULL);
 			}
 		} else {
 			prop = MAPI_E_RESERVED;
@@ -2239,7 +2207,7 @@ e_mapi_connection_fetch_object_internal (EMapiConnection *conn,
 	if (!e_mapi_util_find_array_propval (&object->properties, PidNameContentClass)) {
 		uint32_t prop = PidNameContentClass;
 
-		prop = e_mapi_connection_resolve_named_prop (conn, mapi_object_get_id (eap->obj_folder), prop, cancellable, NULL);
+		prop = e_mapi_connection_resolve_named_prop (conn, eap->obj_folder, prop, cancellable, NULL);
 		if (prop != MAPI_E_RESERVED) {
 			struct SPropTagArray *tags;
 			struct SPropValue *lpProps = NULL;
@@ -2794,7 +2762,7 @@ convert_mapi_props_to_props (EMapiConnection *conn,
 	if (named_ids_list) {
 		GHashTable *replace_hash = NULL;
 
-		res = e_mapi_connection_resolve_named_props (conn, mapi_object_get_id (obj_folder), named_ids_list, named_ids_len, cancellable, perror);
+		res = e_mapi_connection_resolve_named_props (conn, obj_folder, named_ids_list, named_ids_len, cancellable, perror);
 
 		if (res)
 			replace_hash = prepare_maybe_replace_hash (named_ids_list, named_ids_len, TRUE);
@@ -3128,7 +3096,7 @@ add_object_recipients (EMapiConnection *conn,
 	if (named_ids_list) {
 		GHashTable *replace_hash;
 
-		if (!e_mapi_connection_resolve_named_props (conn, mapi_object_get_id (obj_folder), named_ids_list, named_ids_len, cancellable, perror)) {
+		if (!e_mapi_connection_resolve_named_props (conn, obj_folder, named_ids_list, named_ids_len, cancellable, perror)) {
 			ms = MAPI_E_CALL_FAILED;
 			make_mapi_error (perror, "e_mapi_connection_resolve_named_props", ms);
 			goto cleanup;
@@ -3958,8 +3926,8 @@ e_mapi_connection_list_gal_objects (EMapiConnection *conn,
 			gather_mapi_SRestriction_named_ids (restrictions, &named_ids_list, &named_ids_len);
 
 			if (named_ids_list) {
-				/* use 0 for GAL as a folder ID parameter */
-				res = e_mapi_connection_resolve_named_props (conn, 0, named_ids_list, named_ids_len, cancellable, perror);
+				/* use NULL for GAL as a folder ID parameter */
+				res = e_mapi_connection_resolve_named_props (conn, NULL, named_ids_list, named_ids_len, cancellable, perror);
 
 				if (res) {
 					GHashTable *replace_hash = prepare_maybe_replace_hash (named_ids_list, named_ids_len, TRUE);
@@ -4160,7 +4128,8 @@ e_mapi_connection_transfer_gal_objects (EMapiConnection *conn,
 	if (named_ids_list) {
 		GHashTable *replace_hash;
 
-		if (!e_mapi_connection_resolve_named_props (conn, 0, named_ids_list, named_ids_len, cancellable, perror)) {
+		/* use NULL for GAL as a folder ID parameter */
+		if (!e_mapi_connection_resolve_named_props (conn, NULL, named_ids_list, named_ids_len, cancellable, perror)) {
 			ms = MAPI_E_CALL_FAILED;
 			make_mapi_error (perror, "e_mapi_connection_resolve_named_props", ms);
 			goto cleanup;
@@ -4495,32 +4464,24 @@ e_mapi_connection_remove_folder (EMapiConnection *conn,
 
 gboolean
 e_mapi_connection_rename_folder (EMapiConnection *conn,
-				 mapi_id_t fid,
-				 guint32 fid_options,
+				 mapi_object_t *obj_folder,
 				 const gchar *new_name,
 				 GCancellable *cancellable,
 				 GError **perror)
 {
-	enum MAPISTATUS ms;
-	mapi_object_t obj_folder;
+	enum MAPISTATUS ms = MAPI_E_RESERVED;
 	struct SPropValue *props = NULL;
 	TALLOC_CTX *mem_ctx;
-	gboolean result = FALSE;
 
 	CHECK_CORRECT_CONN_AND_GET_PRIV (conn, FALSE);
 	e_return_val_mapi_error_if_fail (priv->session != NULL, MAPI_E_INVALID_PARAMETER, FALSE);
+	e_return_val_mapi_error_if_fail (obj_folder != NULL, MAPI_E_INVALID_PARAMETER, FALSE);
+	e_return_val_mapi_error_if_fail (new_name != NULL, MAPI_E_INVALID_PARAMETER, FALSE);
 
-	e_mapi_debug_print("%s: Entering %s ", G_STRLOC, G_STRFUNC);
+	e_mapi_debug_print ("%s: Entering %s ", G_STRLOC, G_STRFUNC);
 
 	LOCK ();
 	mem_ctx = talloc_new (priv->session);
-	mapi_object_init(&obj_folder);
-
-	/* Open the folder to be renamed */
-	ms = open_folder (conn, 0, &fid, fid_options, &obj_folder, perror);
-	if (ms != MAPI_E_SUCCESS) {
-		goto cleanup;
-	}
 
 	if (g_cancellable_set_error_if_cancelled (cancellable, perror)) {
 		ms = MAPI_E_USER_CANCEL;
@@ -4528,111 +4489,65 @@ e_mapi_connection_rename_folder (EMapiConnection *conn,
 	}
 
 	props = talloc_zero(mem_ctx, struct SPropValue);
-	set_SPropValue_proptag (props, PR_DISPLAY_NAME_UNICODE, new_name);
+	set_SPropValue_proptag (props, PidTagDisplayName, new_name);
 
-	ms = SetProps (&obj_folder, MAPI_PROPS_SKIP_NAMEDID_CHECK, props, 1);
+	ms = SetProps (obj_folder, MAPI_PROPS_SKIP_NAMEDID_CHECK, props, 1);
 	if (ms != MAPI_E_SUCCESS) {
 		make_mapi_error (perror, "SetProps", ms);
 		goto cleanup;
 	}
 
-	result = TRUE;
-
  cleanup:
-	mapi_object_release(&obj_folder);
-	talloc_free(mem_ctx);
+	talloc_free (mem_ctx);
 	UNLOCK ();
 
-	e_mapi_debug_print("%s: Leaving %s ", G_STRLOC, G_STRFUNC);
+	e_mapi_debug_print ("%s: Leaving %s ", G_STRLOC, G_STRFUNC);
 
-	return result;
+	return ms == MAPI_E_SUCCESS;
 }
 
 /* moves folder 'src_fid' to folder 'des_fid' under name 'new_name' (no path in a new_name),
    'src_parent_fid' is folder ID of a parent of the src_fid */
 gboolean
 e_mapi_connection_move_folder  (EMapiConnection *conn,
-				mapi_id_t src_fid,
-				mapi_id_t src_parent_fid,
-				guint32 src_fid_options,
-				mapi_id_t des_fid,
-				guint32 des_fid_options,
+				mapi_object_t *src_obj_folder,
+				mapi_object_t *src_parent_obj_folder,
+				mapi_object_t *des_obj_folder,
 				const gchar *new_name,
 				GCancellable *cancellable,
 				GError **perror)
 {
-	enum MAPISTATUS ms;
-	mapi_object_t obj_src, obj_src_parent, obj_des;
-	gboolean result = FALSE;
+	enum MAPISTATUS ms = MAPI_E_RESERVED;
 
 	CHECK_CORRECT_CONN_AND_GET_PRIV (conn, FALSE);
 	e_return_val_mapi_error_if_fail (priv->session != NULL, MAPI_E_INVALID_PARAMETER, FALSE);
-
-	e_return_val_mapi_error_if_fail (src_fid != 0, MAPI_E_INVALID_PARAMETER, FALSE);
-	e_return_val_mapi_error_if_fail (src_parent_fid != 0, MAPI_E_INVALID_PARAMETER, FALSE);
-	e_return_val_mapi_error_if_fail (des_fid != 0, MAPI_E_INVALID_PARAMETER, FALSE);
+	e_return_val_mapi_error_if_fail (src_obj_folder != NULL, MAPI_E_INVALID_PARAMETER, FALSE);
+	e_return_val_mapi_error_if_fail (src_parent_obj_folder != NULL, MAPI_E_INVALID_PARAMETER, FALSE);
+	e_return_val_mapi_error_if_fail (des_obj_folder != NULL, MAPI_E_INVALID_PARAMETER, FALSE);
 	e_return_val_mapi_error_if_fail (new_name != NULL, MAPI_E_INVALID_PARAMETER, FALSE);
 	e_return_val_mapi_error_if_fail (strchr (new_name, '/') == NULL, MAPI_E_INVALID_PARAMETER, FALSE);
 
 	LOCK ();
 
-	mapi_object_init (&obj_src);
-	mapi_object_init (&obj_src_parent);
-	mapi_object_init (&obj_des);
-
-	ms = open_folder (conn, 0, &src_fid, src_fid_options, &obj_src, perror);
-	if (ms != MAPI_E_SUCCESS) {
-		goto cleanup;
-	}
-
-	if (g_cancellable_set_error_if_cancelled (cancellable, perror)) {
-		ms = MAPI_E_USER_CANCEL;
-		goto cleanup;
-	}
-
-	ms = open_folder (conn, 0, &src_parent_fid, src_fid_options, &obj_src_parent, perror);
-	if (ms != MAPI_E_SUCCESS) {
-		goto cleanup;
-	}
-
-	if (g_cancellable_set_error_if_cancelled (cancellable, perror)) {
-		ms = MAPI_E_USER_CANCEL;
-		goto cleanup;
-	}
-
-	ms = open_folder (conn, 0, &des_fid, des_fid_options, &obj_des, perror);
-	if (ms != MAPI_E_SUCCESS) {
-		goto cleanup;
-	}
-
 	if (g_cancellable_set_error_if_cancelled (cancellable, perror)) {
 		ms = MAPI_E_USER_CANCEL;
-		goto cleanup;
-	}
-
-	ms = MoveFolder (&obj_src, &obj_src_parent, &obj_des, (gchar *)new_name, TRUE);
-	if (ms != MAPI_E_SUCCESS) {
-		make_mapi_error (perror, "MoveFolder", ms);
-		goto cleanup;
+	} else {
+		ms = MoveFolder (src_obj_folder, src_parent_obj_folder, des_obj_folder, (gchar *) new_name, TRUE);
+		if (ms != MAPI_E_SUCCESS) {
+			make_mapi_error (perror, "MoveFolder", ms);
+		}
 	}
 
-	result = TRUE;
-
- cleanup:
-	mapi_object_release (&obj_des);
-	mapi_object_release (&obj_src_parent);
-	mapi_object_release (&obj_src);
-
 	UNLOCK ();
 
-	return result;
+	return ms == MAPI_E_SUCCESS;
 }
 
 /* named_ids_list contains pointers to EResolveNamedIDsData structure;
-   fid 0 is reserved for lookup in GAL */
+   obj_folder NULL is reserved for lookup in GAL */
 gboolean
 e_mapi_connection_resolve_named_props  (EMapiConnection *conn,
-					mapi_id_t fid,
+					mapi_object_t *obj_folder,
 					EResolveNamedIDsData *named_ids_list,
 					guint named_ids_n_elems,
 					GCancellable *cancellable,
@@ -4640,7 +4555,7 @@ e_mapi_connection_resolve_named_props  (EMapiConnection *conn,
 {
 	enum MAPISTATUS ms;
 	TALLOC_CTX *mem_ctx;
-	mapi_object_t obj_folder;
+	mapi_id_t fid;
 	struct mapi_nameid *nameid;
 	struct SPropTagArray *SPropTagArray;
 	guint i, j;
@@ -4655,6 +4570,11 @@ e_mapi_connection_resolve_named_props  (EMapiConnection *conn,
 	e_mapi_debug_print ("%s: Entering %s ", G_STRLOC, G_STRFUNC);
 
 	LOCK ();
+
+	fid = 0;
+	if (obj_folder)
+		fid = mapi_object_get_id (obj_folder);
+
 	if (priv->named_ids) {
 		gint64 i64 = fid;
 		GHashTable *ids = g_hash_table_lookup (priv->named_ids, &i64);
@@ -4683,18 +4603,11 @@ e_mapi_connection_resolve_named_props  (EMapiConnection *conn,
 	}
 
 	mem_ctx = talloc_new (priv->session);
-	mapi_object_init (&obj_folder);
 
 	nameid = mapi_nameid_new (mem_ctx);
 	SPropTagArray = talloc_zero (mem_ctx, struct SPropTagArray);
 
-	if (fid) {
-		/* Attempt to open the folder */
-		ms = open_folder (conn, 0, &fid, 0, &obj_folder, perror);
-		if (ms != MAPI_E_SUCCESS) {
-			goto cleanup;
-		}
-	} else {
+	if (!obj_folder) {
 		if (!priv->session->nspi || !priv->session->nspi->ctx) {
 			ms = MAPI_E_UNCONFIGURED;
 			goto cleanup;
@@ -4727,8 +4640,8 @@ e_mapi_connection_resolve_named_props  (EMapiConnection *conn,
 		goto cleanup;
 	}
 
-	if (fid) {
-		ms = mapi_nameid_GetIDsFromNames (nameid, &obj_folder, SPropTagArray);
+	if (obj_folder) {
+		ms = mapi_nameid_GetIDsFromNames (nameid, obj_folder, SPropTagArray);
 	} else {
 		/* lookup in GAL */
 		struct SPropTagArray *gal_tags;
@@ -4859,7 +4772,6 @@ e_mapi_connection_resolve_named_props  (EMapiConnection *conn,
  cleanup:
 	if (todo)
 		g_ptr_array_free (todo, TRUE);
-	mapi_object_release (&obj_folder);
 	talloc_free (mem_ctx);
 
 	UNLOCK ();
@@ -4872,96 +4784,23 @@ e_mapi_connection_resolve_named_props  (EMapiConnection *conn,
 /* returns MAPI_E_RESERVED on any error */
 uint32_t
 e_mapi_connection_resolve_named_prop (EMapiConnection *conn,
-				      mapi_id_t fid,
+				      mapi_object_t *obj_folder,
 				      uint32_t pidlid_propid,
 				      GCancellable *cancellable,
 				      GError **perror)
 {
-	enum MAPISTATUS ms;
-	TALLOC_CTX *mem_ctx;
-	mapi_object_t obj_folder;
-	struct mapi_nameid *nameid;
-	struct SPropTagArray *SPropTagArray;
-	uint32_t res = MAPI_E_RESERVED;
-
-	CHECK_CORRECT_CONN_AND_GET_PRIV (conn, res);
-	e_return_val_mapi_error_if_fail (priv->session != NULL, MAPI_E_INVALID_PARAMETER, res);
-
-	e_mapi_debug_print("%s: Entering %s ", G_STRLOC, G_STRFUNC);
-
-	LOCK ();
-
-	if (priv->named_ids) {
-		gint64 i64 = fid;
-		GHashTable *ids = g_hash_table_lookup (priv->named_ids, &i64);
-
-		if (ids) {
-			res = GPOINTER_TO_UINT (g_hash_table_lookup (ids, GUINT_TO_POINTER (pidlid_propid)));
-			if (res != 0) {
-				UNLOCK ();
-				e_mapi_debug_print ("%s: Leaving %s ", G_STRLOC, G_STRFUNC);
-
-				return res;
-			}
-
-			res = MAPI_E_RESERVED;
-		}
-	}
+	EResolveNamedIDsData named_ids_list[1];
 
-	mem_ctx = talloc_new (priv->session);
-	mapi_object_init(&obj_folder);
-
-	nameid = mapi_nameid_new(mem_ctx);
-	SPropTagArray = talloc_zero(mem_ctx, struct SPropTagArray);
-
-	/* Attempt to open the folder */
-	ms = open_folder (conn, 0, &fid, 0, &obj_folder, perror);
-	if (ms != MAPI_E_SUCCESS) {
-		goto cleanup;
-	}
-
-	if (g_cancellable_set_error_if_cancelled (cancellable, perror)) {
-		ms = MAPI_E_USER_CANCEL;
-		goto cleanup;
-	}
-
-	mapi_nameid_canonical_add (nameid, pidlid_propid);
-
-	ms = mapi_nameid_GetIDsFromNames(nameid, &obj_folder, SPropTagArray);
-	if (ms != MAPI_E_SUCCESS) {
-		make_mapi_error (perror, "mapi_nameid_GetIDsFromNames", ms);
-		goto cleanup;
-	}
-
-	res = SPropTagArray->aulPropTag[0];
-	if ((res & 0xFFFF) == PT_ERROR)
-		res = MAPI_E_RESERVED;
-
-	if (priv->named_ids) {
-		gint64 i64 = fid;
-		GHashTable *ids = g_hash_table_lookup (priv->named_ids, &i64);
-
-		if (!ids) {
-			gint64 *i64ptr = g_malloc (sizeof (gint64));
-
-			*i64ptr = fid;
-			ids = g_hash_table_new (g_direct_hash, g_direct_equal);
-
-			g_hash_table_insert (priv->named_ids, i64ptr, ids);
-		}
-
-		g_hash_table_insert (ids, GUINT_TO_POINTER (pidlid_propid), GUINT_TO_POINTER (res));
-	}
-
- cleanup:
-	mapi_object_release(&obj_folder);
-	talloc_free(mem_ctx);
+	CHECK_CORRECT_CONN_AND_GET_PRIV (conn, MAPI_E_RESERVED);
+	e_return_val_mapi_error_if_fail (priv->session != NULL, MAPI_E_INVALID_PARAMETER, MAPI_E_RESERVED);
 
-	UNLOCK ();
+	named_ids_list[0].pidlid_propid = pidlid_propid;
+	named_ids_list[0].propid = MAPI_E_RESERVED;
 
-	e_mapi_debug_print("%s: Leaving %s ", G_STRLOC, G_STRFUNC);
+	if (!e_mapi_connection_resolve_named_props (conn, obj_folder, named_ids_list, 1, cancellable, perror))
+		return MAPI_E_RESERVED;
 
-	return res;
+	return named_ids_list[0].propid;
 }
 
 /* returns named id, aka PidLid/PidName for a given proptag, which might be previously
@@ -5806,7 +5645,7 @@ e_mapi_connection_resolve_username (EMapiConnection *conn,
 		if (named_ids_list) {
 			GHashTable *replace_hash;
 
-			if (!e_mapi_connection_resolve_named_props (conn, 0, named_ids_list, named_ids_len, cancellable, perror)) {
+			if (!e_mapi_connection_resolve_named_props (conn, NULL, named_ids_list, named_ids_len, cancellable, perror)) {
 				goto cleanup;
 			}
 
diff --git a/src/libexchangemapi/e-mapi-connection.h b/src/libexchangemapi/e-mapi-connection.h
index dfd3d00..63d4797 100644
--- a/src/libexchangemapi/e-mapi-connection.h
+++ b/src/libexchangemapi/e-mapi-connection.h
@@ -48,19 +48,6 @@ typedef struct _EMapiConnection EMapiConnection;
 typedef struct _EMapiConnectionClass EMapiConnectionClass;
 typedef struct _EMapiConnectionPrivate EMapiConnectionPrivate;
 
-typedef enum {
-	MAPI_OPTIONS_FETCH_ATTACHMENTS = 1<<0,
-	MAPI_OPTIONS_FETCH_RECIPIENTS = 1<<1,
-	MAPI_OPTIONS_FETCH_BODY_STREAM = 1<<2,
-	MAPI_OPTIONS_FETCH_GENERIC_STREAMS = 1<<3,
-	MAPI_OPTIONS_FETCH_GAL = 1 <<4,
-	MAPI_OPTIONS_DONT_SUBMIT = 1<<5,
-	MAPI_OPTIONS_GETBESTBODY = 1<<6,
-	MAPI_OPTIONS_USE_PFSTORE = 1<<7,
-	MAPI_OPTIONS_DONT_OPEN_MESSAGE = 1<<8,
-	MAPI_OPTIONS_DELETE_ON_SUBMIT_FAILURE = 1<<9
-} ExchangeMAPIOptions;
-
 typedef struct {
 	uint32_t pidlid_propid; /* PidLid or PidName legacy property named ID to resolve */
 	uint32_t propid;	/* resolved prop ID; equals to MAPI_E_RESERVED when not found or other error */
@@ -350,17 +337,14 @@ gboolean		e_mapi_connection_empty_folder		(EMapiConnection *conn,
 								 GCancellable *cancellable,
 								 GError **perror);
 gboolean		e_mapi_connection_rename_folder		(EMapiConnection *conn,
-								 mapi_id_t fid,
-								 guint32 fid_options,
+								 mapi_object_t *obj_folder,
 								 const gchar *new_name,
 								 GCancellable *cancellable,
 								 GError **perror);
 gboolean		e_mapi_connection_move_folder		(EMapiConnection *conn,
-								 mapi_id_t src_fid,
-								 mapi_id_t src_parent_fid,
-								 guint32 src_fid_options,
-								 mapi_id_t des_fid,
-								 guint32 des_fid_options,
+								 mapi_object_t *src_obj_folder,
+								 mapi_object_t *src_parent_obj_folder,
+								 mapi_object_t *des_obj_folder,
 								 const gchar *new_name,
 								 GCancellable *cancellable,
 								 GError **perror);
@@ -402,13 +386,13 @@ gboolean		e_mapi_connection_get_pf_folders_list	(EMapiConnection *conn,
 GSList *		e_mapi_connection_peek_folders_list	(EMapiConnection *conn);
 
 gboolean		e_mapi_connection_resolve_named_props	(EMapiConnection *conn,
-								 mapi_id_t fid,
+								 mapi_object_t *obj_folder,
 								 EResolveNamedIDsData *named_ids_list,
 								 guint named_ids_n_elems,
 								 GCancellable *cancellable,
 								 GError **perror);
 uint32_t		e_mapi_connection_resolve_named_prop	(EMapiConnection *conn,
-								 mapi_id_t fid,
+								 mapi_object_t *obj_folder,
 								 uint32_t pidlid_propid,
 								 GCancellable *cancellable,
 								 GError **perror);



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