All pastes #746536 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-10-23 08:51 UTC
rendered paste body

gboolean
exchange_mapi_remove_items (uint32_t olFolder, mapi_id_t fid, GSList *mids)
{
	mapi_object_t obj_store;	
	mapi_object_t obj_folder;
	mapi_object_t obj_table;
	enum MAPISTATUS retval;
	mapi_object_t obj_message;
	struct SRowSet SRowSet;
	struct SPropTagArray *SPropTagArray;
	struct mapi_SPropValue_array properties_array;
	TALLOC_CTX *mem_ctx;
	int i=0;
	gpointer retobj = NULL;
	mapi_id_t *id_messages;
	GSList *tmp = mids;

	LOCK ();

	mem_ctx = talloc_init("Evolution");
	mapi_object_init(&obj_folder);
	mapi_object_init(&obj_store);
	mapi_object_init(&obj_message);

	retval = OpenMsgStore(&obj_store);
	if (retval != MAPI_E_SUCCESS) {
		g_warning ("remove items openmsgstore failed: %d\n", retval);
		UNLOCK ();
		return FALSE;
	}

	printf("Opening folder %016llx\n", fid);
	/* We now open the folder */
	retval = OpenFolder(&obj_store, fid, &obj_folder);
	if (retval != MAPI_E_SUCCESS) {
		g_warning ("remove items openfolder failed: %d\n", retval);
		UNLOCK ();
		return FALSE;
	}

	id_messages = talloc_array(mem_ctx, uint64_t, g_slist_length (mids));
	for (; tmp; tmp=tmp->next, i++) {
		struct folder_data *data = tmp->data;
		id_messages [i] = data->id;
		printf("ID here %016llx \n", data->id);
		printf("Deleting %016llx\n", id_messages[i]);
	}

	retval = DeleteMessage(&obj_folder, id_messages, i);
	if (retval != MAPI_E_SUCCESS) {
		g_warning ("remove items Delete Message %d %d failed: %d\n", i, g_slist_length(mids), retval);
		mapi_errstr("DeleteMessage ", GetLastError());		
		UNLOCK ();
		return FALSE;
	}

	mapi_object_release(&obj_folder);
	

	UNLOCK ();
	
	return TRUE;	
}