[evolution-data-server/gnome-3-8] Automatically strip D-Bus info from error messages.
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/gnome-3-8] Automatically strip D-Bus info from error messages.
- Date: Tue, 16 Apr 2013 02:41:17 +0000 (UTC)
commit fd5632a266fe91a44a783f387de7a511cf8d2e3c
Author: Matthew Barnes <mbarnes redhat com>
Date: Mon Apr 15 18:54:41 2013 -0400
Automatically strip D-Bus info from error messages.
I mistakenly assumed code generated by the gdbus-codegen tool would
automatically strip off the D-Bus error name from error messages, but
that apparently is not possible according to my discussion with David
Zeuthen in [1], since it would break g_dbus_error_is_remote_error().
Distinguishing between local and remote errors strikes me as a rarely
needed corner case, and is certainly not worth the extra step imposed
on applications when dealing with something as fundamental as GError.
This commit prevents the D-Bus error name from leaking through in any
Evolution-Data-Server client-facing library functions.
Also rename any stack-allocated GError pointers to 'local_error' to
help distinguish them from GError "out" parameters which are always
named 'error'. This is just to improve variable name consistency.
[1] https://bugzilla.gnome.org/697819
(cherry picked from commit 5115e6118bc030d2437d7fa73bb50f1fd31e28d3)
Conflicts:
addressbook/libebook/e-book-client-view.c
addressbook/libebook/e-book-client.c
calendar/libecal/e-cal-client-view.c
addressbook/libebook/e-book-client-view.c | 63 ++--
addressbook/libebook/e-book-client.c | 324 +++++++++++-------
calendar/libecal/e-cal-client-view.c | 41 ++-
calendar/libecal/e-cal-client.c | 530 ++++++++++++++++++------------
libebackend/e-user-prompter.c | 31 +-
libedataserver/e-source-registry.c | 118 ++++---
libedataserver/e-source.c | 163 +++++----
7 files changed, 755 insertions(+), 515 deletions(-)
---
diff --git a/addressbook/libebook/e-book-client-view.c b/addressbook/libebook/e-book-client-view.c
index c26dc38..a66bade 100644
--- a/addressbook/libebook/e-book-client-view.c
+++ b/addressbook/libebook/e-book-client-view.c
@@ -305,18 +305,18 @@ direct_contacts_ready (GObject *source_object,
{
NotificationData *data = (NotificationData *) user_data;
GSList *contacts = NULL;
- GError *error = NULL;
+ GError *local_error = NULL;
e_data_book_get_contacts_finish (
E_DATA_BOOK (source_object),
- result, &contacts, &error);
+ result, &contacts, &local_error);
- if (error != NULL) {
+ if (local_error != NULL) {
g_warn_if_fail (contacts == NULL);
g_warning (
"Error fetching contacts directly: %s\n",
- error->message);
- g_error_free (error);
+ local_error->message);
+ g_error_free (local_error);
} else if (data->signum == OBJECTS_ADDED) {
/* Takes ownership of the linked list. */
@@ -347,18 +347,18 @@ direct_contacts_fetch (EBookClientView *view,
*/
if (!view->priv->complete) {
GSList *contacts = NULL;
- GError *error = NULL;
+ GError *local_error = NULL;
e_data_book_get_contacts_sync (
- view->priv->direct_book,
- sexp, &contacts, NULL, &error);
+ view->priv->direct_book, sexp,
+ &contacts, NULL, &local_error);
- if (error != NULL) {
+ if (local_error != NULL) {
g_warn_if_fail (contacts == NULL);
g_warning (
"Error fetching contacts directly: %s\n",
- error->message);
- g_error_free (error);
+ local_error->message);
+ g_error_free (local_error);
} else if (signum == OBJECTS_ADDED) {
/* Takes ownership of the linked list. */
@@ -565,14 +565,15 @@ book_client_view_dispose_cb (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
{
- GError *error = NULL;
+ GError *local_error = NULL;
e_gdbus_book_view_call_dispose_finish (
- G_DBUS_PROXY (source_object), result, &error);
+ G_DBUS_PROXY (source_object), result, &local_error);
- if (error != NULL) {
- g_warning ("%s: %s", G_STRFUNC, error->message);
- g_error_free (error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_warning ("%s: %s", G_STRFUNC, local_error->message);
+ g_error_free (local_error);
}
}
@@ -999,20 +1000,20 @@ void
e_book_client_view_start (EBookClientView *view,
GError **error)
{
- gboolean success;
GError *local_error = NULL;
g_return_if_fail (E_IS_BOOK_CLIENT_VIEW (view));
view->priv->running = TRUE;
- success = e_gdbus_book_view_call_start_sync (
+ e_gdbus_book_view_call_start_sync (
view->priv->dbus_proxy, NULL, &local_error);
- if (!success)
- view->priv->running = FALSE;
- e_client_unwrap_dbus_error (
- E_CLIENT (view->priv->client), local_error, error);
+ if (local_error != NULL) {
+ view->priv->running = FALSE;
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ }
}
/**
@@ -1035,8 +1036,10 @@ e_book_client_view_stop (EBookClientView *view,
e_gdbus_book_view_call_stop_sync (
view->priv->dbus_proxy, NULL, &local_error);
- e_client_unwrap_dbus_error (
- E_CLIENT (view->priv->client), local_error, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ }
}
/**
@@ -1061,8 +1064,10 @@ e_book_client_view_set_flags (EBookClientView *view,
e_gdbus_book_view_call_set_flags_sync (
view->priv->dbus_proxy, flags, NULL, &local_error);
- e_client_unwrap_dbus_error (
- E_CLIENT (view->priv->client), local_error, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ }
}
/**
@@ -1113,7 +1118,9 @@ e_book_client_view_set_fields_of_interest (EBookClientView *view,
NULL, &local_error);
g_strfreev (strv);
- e_client_unwrap_dbus_error (
- E_CLIENT (view->priv->client), local_error, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ }
}
diff --git a/addressbook/libebook/e-book-client.c b/addressbook/libebook/e-book-client.c
index e7cbb1a..a2ab374 100644
--- a/addressbook/libebook/e-book-client.c
+++ b/addressbook/libebook/e-book-client.c
@@ -668,13 +668,22 @@ book_client_open_sync (EClient *client,
GError **error)
{
EBookClient *book_client;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_BOOK_CLIENT (client), FALSE);
book_client = E_BOOK_CLIENT (client);
- return e_dbus_address_book_call_open_sync (
- book_client->priv->dbus_proxy, cancellable, error);
+ e_dbus_address_book_call_open_sync (
+ book_client->priv->dbus_proxy, cancellable, &local_error);
+
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
static gboolean
@@ -683,13 +692,22 @@ book_client_refresh_sync (EClient *client,
GError **error)
{
EBookClient *book_client;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_BOOK_CLIENT (client), FALSE);
book_client = E_BOOK_CLIENT (client);
- return e_dbus_address_book_call_refresh_sync (
- book_client->priv->dbus_proxy, cancellable, error);
+ e_dbus_address_book_call_refresh_sync (
+ book_client->priv->dbus_proxy, cancellable, &local_error);
+
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
static void
@@ -707,7 +725,7 @@ book_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
const gchar *uid;
gchar *object_path = NULL;
gulong handler_id;
- GError *error = NULL;
+ GError *local_error = NULL;
priv = E_BOOK_CLIENT_GET_PRIVATE (source_object);
@@ -715,15 +733,17 @@ book_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
source = e_client_get_source (client);
uid = e_source_get_uid (source);
- connection = g_bus_get_sync (G_BUS_TYPE_SESSION, cancellable, &error);
+ connection = g_bus_get_sync (
+ G_BUS_TYPE_SESSION, cancellable, &local_error);
/* Sanity check. */
g_return_if_fail (
- ((connection != NULL) && (error == NULL)) ||
- ((connection == NULL) && (error != NULL)));
+ ((connection != NULL) && (local_error == NULL)) ||
+ ((connection == NULL) && (local_error != NULL)));
- if (error != NULL) {
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
return;
}
@@ -732,31 +752,33 @@ book_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
G_DBUS_PROXY_FLAGS_NONE,
ADDRESS_BOOK_DBUS_SERVICE_NAME,
"/org/gnome/evolution/dataserver/AddressBookFactory",
- cancellable, &error);
+ cancellable, &local_error);
/* Sanity check. */
g_return_if_fail (
- ((factory_proxy != NULL) && (error == NULL)) ||
- ((factory_proxy == NULL) && (error != NULL)));
+ ((factory_proxy != NULL) && (local_error == NULL)) ||
+ ((factory_proxy == NULL) && (local_error != NULL)));
- if (error != NULL) {
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
g_object_unref (connection);
return;
}
e_dbus_address_book_factory_call_open_address_book_sync (
- factory_proxy, uid, &object_path, cancellable, &error);
+ factory_proxy, uid, &object_path, cancellable, &local_error);
g_object_unref (factory_proxy);
/* Sanity check. */
g_return_if_fail (
- ((object_path != NULL) && (error == NULL)) ||
- ((object_path == NULL) && (error != NULL)));
+ ((object_path != NULL) && (local_error == NULL)) ||
+ ((object_path == NULL) && (local_error != NULL)));
- if (error != NULL) {
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
g_object_unref (connection);
return;
}
@@ -765,17 +787,18 @@ book_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
connection,
G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
ADDRESS_BOOK_DBUS_SERVICE_NAME,
- object_path, cancellable, &error);
+ object_path, cancellable, &local_error);
g_free (object_path);
/* Sanity check. */
g_return_if_fail (
- ((priv->dbus_proxy != NULL) && (error == NULL)) ||
- ((priv->dbus_proxy == NULL) && (error != NULL)));
+ ((priv->dbus_proxy != NULL) && (local_error == NULL)) ||
+ ((priv->dbus_proxy == NULL) && (local_error != NULL)));
- if (error != NULL) {
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
g_object_unref (connection);
return;
}
@@ -949,7 +972,7 @@ e_book_client_connect_sync (ESource *source,
GError **error)
{
EBookClient *client;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_SOURCE (source), NULL);
@@ -957,14 +980,15 @@ e_book_client_connect_sync (ESource *source,
E_TYPE_BOOK_CLIENT,
"source", source, NULL);
- success = g_initable_init (
- G_INITABLE (client), cancellable, error);
+ g_initable_init (G_INITABLE (client), cancellable, &local_error);
- if (success)
- success = e_dbus_address_book_call_open_sync (
- client->priv->dbus_proxy, cancellable, error);
+ if (local_error == NULL)
+ e_dbus_address_book_call_open_sync (
+ client->priv->dbus_proxy, cancellable, &local_error);
- if (!success) {
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
g_prefix_error (
error, _("Unable to connect to '%s': "),
e_source_get_display_name (source));
@@ -982,15 +1006,17 @@ book_client_connect_open_cb (GObject *source_object,
gpointer user_data)
{
GSimpleAsyncResult *simple;
- GError *error = NULL;
+ GError *local_error = NULL;
simple = G_SIMPLE_ASYNC_RESULT (user_data);
e_dbus_address_book_call_open_finish (
- E_DBUS_ADDRESS_BOOK (source_object), result, &error);
+ E_DBUS_ADDRESS_BOOK (source_object), result, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
+ }
g_simple_async_result_complete (simple);
@@ -1006,15 +1032,15 @@ book_client_connect_init_cb (GObject *source_object,
GSimpleAsyncResult *simple;
EBookClientPrivate *priv;
ConnectClosure *closure;
- GError *error = NULL;
+ GError *local_error = NULL;
simple = G_SIMPLE_ASYNC_RESULT (user_data);
g_async_initable_init_finish (
- G_ASYNC_INITABLE (source_object), result, &error);
+ G_ASYNC_INITABLE (source_object), result, &local_error);
- if (error != NULL) {
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_simple_async_result_take_error (simple, local_error);
g_simple_async_result_complete (simple);
goto exit;
}
@@ -1470,7 +1496,7 @@ book_client_add_contact_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -1478,10 +1504,10 @@ book_client_add_contact_thread (GSimpleAsyncResult *simple,
E_BOOK_CLIENT (source_object),
async_context->contact,
&async_context->uid,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -1635,7 +1661,7 @@ book_client_add_contacts_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -1643,10 +1669,10 @@ book_client_add_contacts_thread (GSimpleAsyncResult *simple,
E_BOOK_CLIENT (source_object),
async_context->object_list,
&async_context->string_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -1778,8 +1804,8 @@ e_book_client_add_contacts_sync (EBookClient *client,
GSList *link;
gchar **strv;
gchar **uids = NULL;
- gboolean success;
gint ii = 0;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_BOOK_CLIENT (client), FALSE);
g_return_val_if_fail (contacts != NULL, FALSE);
@@ -1796,20 +1822,23 @@ e_book_client_add_contacts_sync (EBookClient *client,
g_free (string);
}
- success = e_dbus_address_book_call_create_contacts_sync (
+ e_dbus_address_book_call_create_contacts_sync (
client->priv->dbus_proxy,
(const gchar * const *) strv,
- &uids, cancellable, error);
+ &uids, cancellable, &local_error);
g_strfreev (strv);
/* Sanity check. */
g_return_val_if_fail (
- (success && (uids != NULL)) ||
- (!success && (uids == NULL)), FALSE);
+ ((uids != NULL) && (local_error == NULL)) ||
+ ((uids == NULL) && (local_error != NULL)), FALSE);
- if (!success)
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
return FALSE;
+ }
/* XXX We should have passed the string array directly
* back to the caller instead of building a linked
@@ -1839,17 +1868,17 @@ book_client_modify_contact_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_book_client_modify_contact_sync (
E_BOOK_CLIENT (source_object),
async_context->contact,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -1963,17 +1992,17 @@ book_client_modify_contacts_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_book_client_modify_contacts_sync (
E_BOOK_CLIENT (source_object),
async_context->object_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -2074,8 +2103,8 @@ e_book_client_modify_contacts_sync (EBookClient *client,
{
GSList *link;
gchar **strv;
- gboolean success;
gint ii = 0;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_BOOK_CLIENT (client), FALSE);
g_return_val_if_fail (contacts != NULL, FALSE);
@@ -2092,14 +2121,20 @@ e_book_client_modify_contacts_sync (EBookClient *client,
g_free (string);
}
- success = e_dbus_address_book_call_modify_contacts_sync (
+ e_dbus_address_book_call_modify_contacts_sync (
client->priv->dbus_proxy,
(const gchar * const *) strv,
- cancellable, error);
+ cancellable, &local_error);
g_strfreev (strv);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_book_client_remove_contact() */
@@ -2109,17 +2144,17 @@ book_client_remove_contact_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_book_client_remove_contact_sync (
E_BOOK_CLIENT (source_object),
async_context->contact,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -2236,17 +2271,17 @@ book_client_remove_contact_by_uid_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_book_client_remove_contact_by_uid_sync (
E_BOOK_CLIENT (source_object),
async_context->uid,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -2360,17 +2395,17 @@ book_client_remove_contacts_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_book_client_remove_contacts_sync (
E_BOOK_CLIENT (source_object),
async_context->string_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -2476,8 +2511,8 @@ e_book_client_remove_contacts_sync (EBookClient *client,
GError **error)
{
gchar **strv;
- gboolean success;
gint ii = 0;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_BOOK_CLIENT (client), FALSE);
g_return_val_if_fail (uids != NULL, FALSE);
@@ -2488,14 +2523,20 @@ e_book_client_remove_contacts_sync (EBookClient *client,
uids = g_slist_next (uids);
}
- success = e_dbus_address_book_call_remove_contacts_sync (
+ e_dbus_address_book_call_remove_contacts_sync (
client->priv->dbus_proxy,
(const gchar * const *) strv,
- cancellable, error);
+ cancellable, &local_error);
g_strfreev (strv);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_book_client_get_contact() */
@@ -2505,7 +2546,7 @@ book_client_get_contact_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -2513,10 +2554,10 @@ book_client_get_contact_thread (GSimpleAsyncResult *simple,
E_BOOK_CLIENT (source_object),
async_context->uid,
&async_context->contact,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -2633,27 +2674,30 @@ e_book_client_get_contact_sync (EBookClient *client,
{
gchar *utf8_uid;
gchar *vcard = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_BOOK_CLIENT (client), FALSE);
g_return_val_if_fail (uid != NULL, FALSE);
g_return_val_if_fail (out_contact != NULL, FALSE);
- if (client->priv->direct_book != NULL)
+ if (client->priv->direct_book != NULL) {
+ /* Direct backend is not using D-Bus (obviously),
+ * so no need to strip D-Bus info from the error. */
return e_data_book_get_contact_sync (
client->priv->direct_book, uid,
out_contact, cancellable, error);
+ }
utf8_uid = e_util_utf8_make_valid (uid);
- success = e_dbus_address_book_call_get_contact_sync (
- client->priv->dbus_proxy,
- utf8_uid, &vcard, cancellable, error);
+ e_dbus_address_book_call_get_contact_sync (
+ client->priv->dbus_proxy, utf8_uid,
+ &vcard, cancellable, &local_error);
/* Sanity check. */
g_return_val_if_fail (
- (success && (vcard != NULL)) ||
- (!success && (vcard == NULL)), FALSE);
+ ((vcard != NULL) && (local_error == NULL)) ||
+ ((vcard == NULL) && (local_error != NULL)), FALSE);
if (vcard != NULL) {
*out_contact =
@@ -2663,7 +2707,13 @@ e_book_client_get_contact_sync (EBookClient *client,
g_free (utf8_uid);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_book_client_get_contacts() */
@@ -2673,7 +2723,7 @@ book_client_get_contacts_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -2681,10 +2731,10 @@ book_client_get_contacts_thread (GSimpleAsyncResult *simple,
E_BOOK_CLIENT (source_object),
async_context->sexp,
&async_context->object_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -2809,29 +2859,32 @@ e_book_client_get_contacts_sync (EBookClient *client,
{
gchar *utf8_sexp;
gchar **vcards = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_BOOK_CLIENT (client), FALSE);
g_return_val_if_fail (sexp != NULL, FALSE);
g_return_val_if_fail (out_contacts != NULL, FALSE);
- if (client->priv->direct_book != NULL)
+ if (client->priv->direct_book != NULL) {
+ /* Direct backend is not using D-Bus (obviously),
+ * so no need to strip D-Bus info from the error. */
return e_data_book_get_contacts_sync (
client->priv->direct_book,
sexp, out_contacts, cancellable, error);
+ }
utf8_sexp = e_util_utf8_make_valid (sexp);
- success = e_dbus_address_book_call_get_contact_list_sync (
- client->priv->dbus_proxy,
- utf8_sexp, &vcards, cancellable, error);
+ e_dbus_address_book_call_get_contact_list_sync (
+ client->priv->dbus_proxy, utf8_sexp,
+ &vcards, cancellable, &local_error);
g_free (utf8_sexp);
/* Sanity check. */
g_return_val_if_fail (
- (success && (vcards != NULL)) ||
- (!success && (vcards == NULL)), FALSE);
+ ((vcards != NULL) && (local_error == NULL)) ||
+ ((vcards == NULL) && (local_error != NULL)), FALSE);
if (vcards != NULL) {
EContact *contact;
@@ -2848,7 +2901,13 @@ e_book_client_get_contacts_sync (EBookClient *client,
g_strfreev (vcards);
}
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_book_client_get_contacts_uids() */
@@ -2858,7 +2917,7 @@ book_client_get_contacts_uids_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -2866,10 +2925,10 @@ book_client_get_contacts_uids_thread (GSimpleAsyncResult *simple,
E_BOOK_CLIENT (source_object),
async_context->sexp,
&async_context->string_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -2994,29 +3053,32 @@ e_book_client_get_contacts_uids_sync (EBookClient *client,
{
gchar *utf8_sexp;
gchar **uids = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_BOOK_CLIENT (client), FALSE);
g_return_val_if_fail (sexp != NULL, FALSE);
g_return_val_if_fail (out_contact_uids != NULL, FALSE);
- if (client->priv->direct_book != NULL)
+ if (client->priv->direct_book != NULL) {
+ /* Direct backend is not using D-Bus (obviously),
+ * so no need to strip D-Bus info from the error. */
return e_data_book_get_contacts_uids_sync (
client->priv->direct_book, sexp,
out_contact_uids, cancellable, error);
+ }
utf8_sexp = e_util_utf8_make_valid (sexp);
- success = e_dbus_address_book_call_get_contact_list_uids_sync (
- client->priv->dbus_proxy,
- utf8_sexp, &uids, cancellable, error);
+ e_dbus_address_book_call_get_contact_list_uids_sync (
+ client->priv->dbus_proxy, utf8_sexp,
+ &uids, cancellable, &local_error);
g_free (utf8_sexp);
/* Sanity check. */
g_return_val_if_fail (
- (success && (uids != NULL)) ||
- (!success && (uids == NULL)), FALSE);
+ ((uids != NULL) && (local_error == NULL)) ||
+ ((uids == NULL) && (local_error != NULL)), FALSE);
/* XXX We should have passed the string array directly
* back to the caller instead of building a linked
@@ -3036,7 +3098,13 @@ e_book_client_get_contacts_uids_sync (EBookClient *client,
g_free (uids);
}
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_book_client_get_view() */
@@ -3049,7 +3117,7 @@ book_client_get_view_in_dbus_thread (GSimpleAsyncResult *simple,
AsyncContext *async_context;
gchar *utf8_sexp;
gchar *object_path = NULL;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -3057,14 +3125,14 @@ book_client_get_view_in_dbus_thread (GSimpleAsyncResult *simple,
e_dbus_address_book_call_get_view_sync (
client->priv->dbus_proxy, utf8_sexp,
- &object_path, cancellable, &error);
+ &object_path, cancellable, &local_error);
g_free (utf8_sexp);
/* Sanity check. */
g_return_if_fail (
- ((object_path != NULL) && (error == NULL)) ||
- ((object_path == NULL) && (error != NULL)));
+ ((object_path != NULL) && (local_error == NULL)) ||
+ ((object_path == NULL) && (local_error != NULL)));
if (object_path != NULL) {
GDBusConnection *connection;
@@ -3075,7 +3143,7 @@ book_client_get_view_in_dbus_thread (GSimpleAsyncResult *simple,
client_view = g_initable_new (
E_TYPE_BOOK_CLIENT_VIEW,
- cancellable, &error,
+ cancellable, &local_error,
"client", client,
"connection", connection,
"object-path", object_path,
@@ -3084,16 +3152,18 @@ book_client_get_view_in_dbus_thread (GSimpleAsyncResult *simple,
/* Sanity check. */
g_return_if_fail (
- ((client_view != NULL) && (error == NULL)) ||
- ((client_view == NULL) && (error != NULL)));
+ ((client_view != NULL) && (local_error == NULL)) ||
+ ((client_view == NULL) && (local_error != NULL)));
async_context->client_view = client_view;
g_free (object_path);
}
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
+ }
}
/**
diff --git a/calendar/libecal/e-cal-client-view.c b/calendar/libecal/e-cal-client-view.c
index ce48269..5dd4270 100644
--- a/calendar/libecal/e-cal-client-view.c
+++ b/calendar/libecal/e-cal-client-view.c
@@ -426,14 +426,15 @@ cal_client_view_dispose_cb (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
{
- GError *error = NULL;
+ GError *local_error = NULL;
e_gdbus_cal_view_call_dispose_finish (
- G_DBUS_PROXY (source_object), result, &error);
+ G_DBUS_PROXY (source_object), result, &local_error);
- if (error != NULL) {
- g_warning ("%s: %s", G_STRFUNC, error->message);
- g_error_free (error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_warning ("%s: %s", G_STRFUNC, local_error->message);
+ g_error_free (local_error);
}
}
@@ -853,20 +854,20 @@ void
e_cal_client_view_start (ECalClientView *view,
GError **error)
{
- gboolean success;
GError *local_error = NULL;
g_return_if_fail (E_IS_CAL_CLIENT_VIEW (view));
view->priv->running = TRUE;
- success = e_gdbus_cal_view_call_start_sync (
+ e_gdbus_cal_view_call_start_sync (
view->priv->dbus_proxy, NULL, &local_error);
- if (!success)
- view->priv->running = FALSE;
- e_client_unwrap_dbus_error (
- E_CLIENT (view->priv->client), local_error, error);
+ if (local_error != NULL) {
+ view->priv->running = FALSE;
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ }
}
/**
@@ -891,8 +892,10 @@ e_cal_client_view_stop (ECalClientView *view,
e_gdbus_cal_view_call_stop_sync (
view->priv->dbus_proxy, NULL, &local_error);
- e_client_unwrap_dbus_error (
- E_CLIENT (view->priv->client), local_error, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ }
}
/**
@@ -931,8 +934,10 @@ e_cal_client_view_set_fields_of_interest (ECalClientView *view,
NULL, &local_error);
g_strfreev (strv);
- e_client_unwrap_dbus_error (
- E_CLIENT (view->priv->client), local_error, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ }
}
/**
@@ -957,6 +962,8 @@ e_cal_client_view_set_flags (ECalClientView *view,
e_gdbus_cal_view_call_set_flags_sync (
view->priv->dbus_proxy, flags, NULL, &local_error);
- e_client_unwrap_dbus_error (
- E_CLIENT (view->priv->client), local_error, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ }
}
diff --git a/calendar/libecal/e-cal-client.c b/calendar/libecal/e-cal-client.c
index 0a10e48..a5615a9 100644
--- a/calendar/libecal/e-cal-client.c
+++ b/calendar/libecal/e-cal-client.c
@@ -945,13 +945,22 @@ cal_client_open_sync (EClient *client,
GError **error)
{
ECalClient *cal_client;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
cal_client = E_CAL_CLIENT (client);
- return e_dbus_calendar_call_open_sync (
- cal_client->priv->dbus_proxy, cancellable, error);
+ e_dbus_calendar_call_open_sync (
+ cal_client->priv->dbus_proxy, cancellable, &local_error);
+
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
static gboolean
@@ -960,13 +969,22 @@ cal_client_refresh_sync (EClient *client,
GError **error)
{
ECalClient *cal_client;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
cal_client = E_CAL_CLIENT (client);
- return e_dbus_calendar_call_refresh_sync (
- cal_client->priv->dbus_proxy, cancellable, error);
+ e_dbus_calendar_call_refresh_sync (
+ cal_client->priv->dbus_proxy, cancellable, &local_error);
+
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
static void
@@ -984,7 +1002,7 @@ cal_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
const gchar *uid;
gchar *object_path = NULL;
gulong handler_id;
- GError *error = NULL;
+ GError *local_error = NULL;
priv = E_CAL_CLIENT_GET_PRIVATE (source_object);
@@ -992,15 +1010,17 @@ cal_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
source = e_client_get_source (client);
uid = e_source_get_uid (source);
- connection = g_bus_get_sync (G_BUS_TYPE_SESSION, cancellable, &error);
+ connection = g_bus_get_sync (
+ G_BUS_TYPE_SESSION, cancellable, &local_error);
/* Sanity check. */
g_return_if_fail (
- ((connection != NULL) && (error == NULL)) ||
- ((connection == NULL) && (error != NULL)));
+ ((connection != NULL) && (local_error == NULL)) ||
+ ((connection == NULL) && (local_error != NULL)));
- if (error != NULL) {
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
return;
}
@@ -1009,15 +1029,16 @@ cal_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
G_DBUS_PROXY_FLAGS_NONE,
CALENDAR_DBUS_SERVICE_NAME,
"/org/gnome/evolution/dataserver/CalendarFactory",
- cancellable, &error);
+ cancellable, &local_error);
/* Sanity check. */
g_return_if_fail (
- ((factory_proxy != NULL) && (error == NULL)) ||
- ((factory_proxy == NULL) && (error != NULL)));
+ ((factory_proxy != NULL) && (local_error == NULL)) ||
+ ((factory_proxy == NULL) && (local_error != NULL)));
- if (error != NULL) {
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
g_object_unref (connection);
return;
}
@@ -1026,17 +1047,17 @@ cal_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
case E_CAL_CLIENT_SOURCE_TYPE_EVENTS:
e_dbus_calendar_factory_call_open_calendar_sync (
factory_proxy, uid, &object_path,
- cancellable, &error);
+ cancellable, &local_error);
break;
case E_CAL_CLIENT_SOURCE_TYPE_TASKS:
e_dbus_calendar_factory_call_open_task_list_sync (
factory_proxy, uid, &object_path,
- cancellable, &error);
+ cancellable, &local_error);
break;
case E_CAL_CLIENT_SOURCE_TYPE_MEMOS:
e_dbus_calendar_factory_call_open_memo_list_sync (
factory_proxy, uid, &object_path,
- cancellable, &error);
+ cancellable, &local_error);
break;
default:
g_return_if_reached ();
@@ -1046,11 +1067,12 @@ cal_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
/* Sanity check. */
g_return_if_fail (
- ((object_path != NULL) && (error == NULL)) ||
- ((object_path == NULL) && (error != NULL)));
+ ((object_path != NULL) && (local_error == NULL)) ||
+ ((object_path == NULL) && (local_error != NULL)));
if (object_path == NULL) {
- g_simple_async_result_take_error (simple, error);
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
g_object_unref (connection);
return;
}
@@ -1059,17 +1081,18 @@ cal_client_init_in_dbus_thread (GSimpleAsyncResult *simple,
connection,
G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
CALENDAR_DBUS_SERVICE_NAME,
- object_path, cancellable, &error);
+ object_path, cancellable, &local_error);
g_free (object_path);
/* Sanity check. */
g_return_if_fail (
- ((priv->dbus_proxy != NULL) && (error == NULL)) ||
- ((priv->dbus_proxy == NULL) && (error != NULL)));
+ ((priv->dbus_proxy != NULL) && (local_error == NULL)) ||
+ ((priv->dbus_proxy == NULL) && (local_error != NULL)));
- if (error != NULL) {
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
g_object_unref (connection);
return;
}
@@ -1461,7 +1484,7 @@ e_cal_client_connect_sync (ESource *source,
GError **error)
{
ECalClient *client;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_SOURCE (source), NULL);
g_return_val_if_fail (
@@ -1474,14 +1497,15 @@ e_cal_client_connect_sync (ESource *source,
"source", source,
"source-type", source_type, NULL);
- success = g_initable_init (
- G_INITABLE (client), cancellable, error);
+ g_initable_init (G_INITABLE (client), cancellable, &local_error);
- if (success)
- success = e_dbus_calendar_call_open_sync (
- client->priv->dbus_proxy, cancellable, error);
+ if (local_error == NULL)
+ e_dbus_calendar_call_open_sync (
+ client->priv->dbus_proxy, cancellable, &local_error);
- if (!success) {
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
g_prefix_error (
error,_("Unable to connect to '%s': "),
e_source_get_display_name (source));
@@ -1499,15 +1523,17 @@ cal_client_connect_open_cb (GObject *source_object,
gpointer user_data)
{
GSimpleAsyncResult *simple;
- GError *error = NULL;
+ GError *local_error = NULL;
simple = G_SIMPLE_ASYNC_RESULT (user_data);
e_dbus_calendar_call_open_finish (
- E_DBUS_CALENDAR (source_object), result, &error);
+ E_DBUS_CALENDAR (source_object), result, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
+ }
g_simple_async_result_complete (simple);
@@ -1523,15 +1549,15 @@ cal_client_connect_init_cb (GObject *source_object,
GSimpleAsyncResult *simple;
ECalClientPrivate *priv;
ConnectClosure *closure;
- GError *error = NULL;
+ GError *local_error = NULL;
simple = G_SIMPLE_ASYNC_RESULT (user_data);
g_async_initable_init_finish (
- G_ASYNC_INITABLE (source_object), result, &error);
+ G_ASYNC_INITABLE (source_object), result, &local_error);
- if (error != NULL) {
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_simple_async_result_take_error (simple, local_error);
g_simple_async_result_complete (simple);
goto exit;
}
@@ -1986,17 +2012,18 @@ e_cal_client_resolve_tzid_cb (const gchar *tzid,
{
ECalClient *client = data;
icaltimezone *zone = NULL;
- GError *error = NULL;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), NULL);
- e_cal_client_get_timezone_sync (client, tzid, &zone, NULL, &error);
+ e_cal_client_get_timezone_sync (
+ client, tzid, &zone, NULL, &local_error);
- if (error != NULL) {
+ if (local_error != NULL) {
g_debug (
"%s: Failed to find '%s' timezone: %s",
- G_STRFUNC, tzid, error->message);
- g_error_free (error);
+ G_STRFUNC, tzid, local_error->message);
+ g_error_free (local_error);
}
return zone;
@@ -2420,16 +2447,16 @@ get_objects_sync (ECalClient *client,
/* Generate objects */
if (uid && *uid) {
- GError *error = NULL;
+ GError *local_error = NULL;
e_cal_client_get_objects_for_uid_sync (
- client, uid, &objects, NULL, &error);
+ client, uid, &objects, NULL, &local_error);
- if (error != NULL) {
+ if (local_error != NULL) {
g_warning (
"Failed to get recurrence objects "
- "for uid: %s\n", error->message);
- g_clear_error (&error);
+ "for uid: %s\n", local_error->message);
+ g_error_free (local_error);
return NULL;
}
} else {
@@ -2506,7 +2533,7 @@ got_objects_for_uid_cb (GObject *source_object,
{
struct get_objects_async_data *goad = user_data;
GSList *objects = NULL;
- GError *error = NULL;
+ GError *local_error = NULL;
g_return_if_fail (source_object != NULL);
g_return_if_fail (result != NULL);
@@ -2514,17 +2541,17 @@ got_objects_for_uid_cb (GObject *source_object,
g_return_if_fail (goad->client == E_CAL_CLIENT (source_object));
e_cal_client_get_objects_for_uid_finish (
- goad->client, result, &objects, &error);
+ goad->client, result, &objects, &local_error);
- if (error != NULL) {
- if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) ||
- g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
+ if (local_error != NULL) {
+ if (g_error_matches (local_error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) ||
+ g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
free_get_objects_async_data (goad);
- g_clear_error (&error);
+ g_error_free (local_error);
return;
}
- g_clear_error (&error);
+ g_clear_error (&local_error);
objects = NULL;
}
@@ -2541,7 +2568,7 @@ got_object_list_as_comps_cb (GObject *source_object,
{
struct get_objects_async_data *goad = user_data;
GSList *objects = NULL;
- GError *error = NULL;
+ GError *local_error = NULL;
g_return_if_fail (source_object != NULL);
g_return_if_fail (result != NULL);
@@ -2549,17 +2576,17 @@ got_object_list_as_comps_cb (GObject *source_object,
g_return_if_fail (goad->client == E_CAL_CLIENT (source_object));
e_cal_client_get_object_list_as_comps_finish (
- goad->client, result, &objects, &error);
+ goad->client, result, &objects, &local_error);
- if (error != NULL) {
- if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) ||
- g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
+ if (local_error != NULL) {
+ if (g_error_matches (local_error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) ||
+ g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
free_get_objects_async_data (goad);
- g_clear_error (&error);
+ g_error_free (local_error);
return;
}
- g_clear_error (&error);
+ g_clear_error (&local_error);
objects = NULL;
}
@@ -3163,17 +3190,17 @@ cal_client_get_default_object_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_cal_client_get_default_object_sync (
E_CAL_CLIENT (source_object),
&async_context->out_comp,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -3327,7 +3354,7 @@ cal_client_get_object_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -3336,10 +3363,10 @@ cal_client_get_object_thread (GSimpleAsyncResult *simple,
async_context->uid,
async_context->rid,
&async_context->out_comp,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -3481,7 +3508,7 @@ e_cal_client_get_object_sync (ECalClient *client,
gchar *utf8_uid;
gchar *utf8_rid;
gchar *string = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (uid != NULL, FALSE);
@@ -3493,20 +3520,23 @@ e_cal_client_get_object_sync (ECalClient *client,
utf8_uid = e_util_utf8_make_valid (uid);
utf8_rid = e_util_utf8_make_valid (rid);
- success = e_dbus_calendar_call_get_object_sync (
+ e_dbus_calendar_call_get_object_sync (
client->priv->dbus_proxy, utf8_uid, utf8_rid,
- &string, cancellable, error);
+ &string, cancellable, &local_error);
g_free (utf8_uid);
g_free (utf8_rid);
/* Sanity check. */
g_return_val_if_fail (
- (success && (string != NULL)) ||
- (!success && (string == NULL)), FALSE);
+ ((string != NULL) && (local_error == NULL)) ||
+ ((string == NULL) && (local_error != NULL)), FALSE);
- if (!success)
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
return FALSE;
+ }
icalcomp = icalparser_parse_string (string);
@@ -3582,7 +3612,7 @@ cal_client_get_objects_for_uid_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -3590,10 +3620,10 @@ cal_client_get_objects_for_uid_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->uid,
&async_context->object_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -3720,7 +3750,7 @@ e_cal_client_get_objects_for_uid_sync (ECalClient *client,
icalcomponent_kind kind;
gchar *utf8_uid;
gchar *string = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (uid != NULL, FALSE);
@@ -3728,19 +3758,22 @@ e_cal_client_get_objects_for_uid_sync (ECalClient *client,
utf8_uid = e_util_utf8_make_valid (uid);
- success = e_dbus_calendar_call_get_object_sync (
+ e_dbus_calendar_call_get_object_sync (
client->priv->dbus_proxy, utf8_uid, "",
- &string, cancellable, error);
+ &string, cancellable, &local_error);
g_free (utf8_uid);
/* Sanity check. */
g_return_val_if_fail (
- (success && (string != NULL)) ||
- (!success && (string == NULL)), FALSE);
+ ((string != NULL) && (local_error == NULL)) ||
+ ((string == NULL) && (local_error != NULL)), FALSE);
- if (!success)
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
return FALSE;
+ }
icalcomp = icalparser_parse_string (string);
@@ -3813,7 +3846,7 @@ cal_client_get_object_list_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -3821,10 +3854,10 @@ cal_client_get_object_list_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->sexp,
&async_context->comp_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -3946,8 +3979,8 @@ e_cal_client_get_object_list_sync (ECalClient *client,
GSList *tmp = NULL;
gchar *utf8_sexp;
gchar **strv = NULL;
- gboolean success;
gint ii;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (sexp != NULL, FALSE);
@@ -3955,19 +3988,22 @@ e_cal_client_get_object_list_sync (ECalClient *client,
utf8_sexp = e_util_utf8_make_valid (sexp);
- success = e_dbus_calendar_call_get_object_list_sync (
+ e_dbus_calendar_call_get_object_list_sync (
client->priv->dbus_proxy, utf8_sexp,
- &strv, cancellable, error);
+ &strv, cancellable, &local_error);
g_free (utf8_sexp);
/* Sanity check. */
g_return_val_if_fail (
- (success && (strv != NULL)) ||
- (!success && (strv == NULL)), FALSE);
+ ((strv != NULL) && (local_error == NULL)) ||
+ ((strv == NULL) && (local_error != NULL)), FALSE);
- if (!success)
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
return FALSE;
+ }
for (ii = 0; strv[ii] != NULL; ii++) {
icalcomponent *icalcomp;
@@ -3991,7 +4027,7 @@ cal_client_get_object_list_as_comps_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -3999,10 +4035,10 @@ cal_client_get_object_list_as_comps_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->sexp,
&async_context->object_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -4175,7 +4211,7 @@ cal_client_get_free_busy_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -4184,10 +4220,10 @@ cal_client_get_free_busy_thread (GSimpleAsyncResult *simple,
async_context->start,
async_context->end,
async_context->string_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -4302,8 +4338,8 @@ e_cal_client_get_free_busy_sync (ECalClient *client,
GError **error)
{
gchar **strv;
- gboolean success;
gint ii = 0;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (start > 0, FALSE);
@@ -4315,15 +4351,21 @@ e_cal_client_get_free_busy_sync (ECalClient *client,
users = g_slist_next (users);
}
- success = e_dbus_calendar_call_get_free_busy_sync (
+ e_dbus_calendar_call_get_free_busy_sync (
client->priv->dbus_proxy,
(gint64) start, (gint64) end,
(const gchar * const *) strv,
- cancellable, error);
+ cancellable, &local_error);
g_strfreev (strv);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_cal_client_create_object() */
@@ -4333,7 +4375,7 @@ cal_client_create_object_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -4341,10 +4383,10 @@ cal_client_create_object_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->in_comp,
&async_context->uid,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -4495,7 +4537,7 @@ cal_client_create_objects_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -4503,10 +4545,10 @@ cal_client_create_objects_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->comp_list,
&async_context->string_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -4631,8 +4673,8 @@ e_cal_client_create_objects_sync (ECalClient *client,
{
gchar **strv;
gchar **uids = NULL;
- gboolean success;
gint ii = 0;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (icalcomps != NULL, FALSE);
@@ -4649,17 +4691,17 @@ e_cal_client_create_objects_sync (ECalClient *client,
icalcomps = g_slist_next (icalcomps);
}
- success = e_dbus_calendar_call_create_objects_sync (
+ e_dbus_calendar_call_create_objects_sync (
client->priv->dbus_proxy,
(const gchar * const *) strv,
- &uids, cancellable, error);
+ &uids, cancellable, &local_error);
g_strfreev (strv);
/* Sanity check. */
g_return_val_if_fail (
- (success && (uids != NULL)) ||
- (!success && (uids == NULL)), FALSE);
+ ((uids != NULL) && (local_error == NULL)) ||
+ ((uids == NULL) && (local_error != NULL)), FALSE);
if (uids != NULL) {
GSList *tmp = NULL;
@@ -4675,7 +4717,13 @@ e_cal_client_create_objects_sync (ECalClient *client,
g_strfreev (uids);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_cal_client_modify_object() */
@@ -4685,7 +4733,7 @@ cal_client_modify_object_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -4693,10 +4741,10 @@ cal_client_modify_object_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->in_comp,
async_context->mod,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -4828,7 +4876,7 @@ cal_client_modify_objects_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -4836,10 +4884,10 @@ cal_client_modify_objects_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->comp_list,
async_context->mod,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -4959,9 +5007,9 @@ e_cal_client_modify_objects_sync (ECalClient *client,
GFlagsClass *flags_class;
GFlagsValue *flags_value;
GString *flags;
- gboolean success;
gchar **strv;
gint ii = 0;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (comps != NULL, FALSE);
@@ -4988,17 +5036,23 @@ e_cal_client_modify_objects_sync (ECalClient *client,
comps = g_slist_next (comps);
}
- success = e_dbus_calendar_call_modify_objects_sync (
+ e_dbus_calendar_call_modify_objects_sync (
client->priv->dbus_proxy,
(const gchar * const *) strv,
- flags->str, cancellable, error);
+ flags->str, cancellable, &local_error);
g_strfreev (strv);
g_type_class_unref (flags_class);
g_string_free (flags, TRUE);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_cal_client_remove_object() */
@@ -5008,7 +5062,7 @@ cal_client_remove_object_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -5017,10 +5071,10 @@ cal_client_remove_object_thread (GSimpleAsyncResult *simple,
async_context->uid,
async_context->rid,
async_context->mod,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -5155,7 +5209,7 @@ cal_client_remove_objects_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -5163,10 +5217,10 @@ cal_client_remove_objects_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->string_list,
async_context->mod,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -5284,7 +5338,7 @@ e_cal_client_remove_objects_sync (ECalClient *client,
GFlagsValue *flags_value;
GString *flags;
guint n_valid_uids = 0;
- gboolean success = TRUE;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (ids != NULL, FALSE);
@@ -5315,13 +5369,12 @@ e_cal_client_remove_objects_sync (ECalClient *client,
* backward-compatibility, even though INVALID_ARG might
* be more appropriate. */
if (*id->uid == '\0') {
- g_set_error_literal (
- error, E_CAL_CLIENT_ERROR,
+ local_error = g_error_new_literal (
+ E_CAL_CLIENT_ERROR,
E_CAL_CLIENT_ERROR_OBJECT_NOT_FOUND,
e_cal_client_error_to_string (
E_CAL_CLIENT_ERROR_OBJECT_NOT_FOUND));
n_valid_uids = 0;
- success = FALSE;
break;
}
@@ -5340,10 +5393,10 @@ e_cal_client_remove_objects_sync (ECalClient *client,
}
if (n_valid_uids > 0) {
- success = e_dbus_calendar_call_remove_objects_sync (
+ e_dbus_calendar_call_remove_objects_sync (
client->priv->dbus_proxy,
g_variant_builder_end (&builder),
- flags->str, cancellable, error);
+ flags->str, cancellable, &local_error);
} else {
g_variant_builder_clear (&builder);
}
@@ -5351,7 +5404,13 @@ e_cal_client_remove_objects_sync (ECalClient *client,
g_type_class_unref (flags_class);
g_string_free (flags, TRUE);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_cal_client_receive_objects() */
@@ -5361,17 +5420,17 @@ cal_client_receive_objects_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_cal_client_receive_objects_sync (
E_CAL_CLIENT (source_object),
async_context->in_comp,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -5476,21 +5535,27 @@ e_cal_client_receive_objects_sync (ECalClient *client,
{
gchar *ical_string;
gchar *utf8_ical_string;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
ical_string = icalcomponent_as_ical_string_r (icalcomp);
utf8_ical_string = e_util_utf8_make_valid (ical_string);
- success = e_dbus_calendar_call_receive_objects_sync (
- client->priv->dbus_proxy,
- utf8_ical_string, cancellable, error);
+ e_dbus_calendar_call_receive_objects_sync (
+ client->priv->dbus_proxy, utf8_ical_string,
+ cancellable, &local_error);
g_free (utf8_ical_string);
g_free (ical_string);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_cal_client_send_objects() */
@@ -5500,7 +5565,7 @@ cal_client_send_objects_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -5509,10 +5574,10 @@ cal_client_send_objects_thread (GSimpleAsyncResult *simple,
async_context->in_comp,
&async_context->string_list,
&async_context->out_comp,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -5650,7 +5715,7 @@ e_cal_client_send_objects_sync (ECalClient *client,
gchar *utf8_ical_string;
gchar **users = NULL;
gchar *out_ical_string = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (icalcomp != NULL, FALSE);
@@ -5660,20 +5725,22 @@ e_cal_client_send_objects_sync (ECalClient *client,
ical_string = icalcomponent_as_ical_string_r (icalcomp);
utf8_ical_string = e_util_utf8_make_valid (ical_string);
- success = e_dbus_calendar_call_send_objects_sync (
- client->priv->dbus_proxy, utf8_ical_string,
- &users, &out_ical_string, cancellable, error);
+ e_dbus_calendar_call_send_objects_sync (
+ client->priv->dbus_proxy, utf8_ical_string, &users,
+ &out_ical_string, cancellable, &local_error);
g_free (utf8_ical_string);
g_free (ical_string);
/* Sanity check. */
g_return_val_if_fail (
- (success && (out_ical_string != NULL)) ||
- (!success && (out_ical_string == NULL)), FALSE);
+ ((out_ical_string != NULL) && (local_error == NULL)) ||
+ ((out_ical_string == NULL) && (local_error != NULL)), FALSE);
- if (!success) {
+ if (local_error != NULL) {
g_warn_if_fail (users == NULL);
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
return FALSE;
}
@@ -5717,7 +5784,7 @@ cal_client_get_attachment_uris_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -5726,10 +5793,10 @@ cal_client_get_attachment_uris_thread (GSimpleAsyncResult *simple,
async_context->uid,
async_context->rid,
&async_context->string_list,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -5854,7 +5921,7 @@ e_cal_client_get_attachment_uris_sync (ECalClient *client,
gchar *utf8_uid;
gchar *utf8_rid;
gchar **uris = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (uid != NULL, FALSE);
@@ -5866,17 +5933,17 @@ e_cal_client_get_attachment_uris_sync (ECalClient *client,
utf8_uid = e_util_utf8_make_valid (uid);
utf8_rid = e_util_utf8_make_valid (rid);
- success = e_dbus_calendar_call_get_attachment_uris_sync (
- client->priv->dbus_proxy, utf8_uid,
- utf8_rid, &uris, cancellable, error);
+ e_dbus_calendar_call_get_attachment_uris_sync (
+ client->priv->dbus_proxy, utf8_uid, utf8_rid,
+ &uris, cancellable, &local_error);
g_free (utf8_uid);
g_free (utf8_rid);
/* Sanity check. */
g_return_val_if_fail (
- (success && (uris != NULL)) ||
- (!success && (uris == NULL)), FALSE);
+ ((uris != NULL) && (local_error == NULL)) ||
+ ((uris == NULL) && (local_error != NULL)), FALSE);
if (uris != NULL) {
GSList *tmp = NULL;
@@ -5890,7 +5957,13 @@ e_cal_client_get_attachment_uris_sync (ECalClient *client,
*out_attachment_uris = g_slist_reverse (tmp);
}
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_cal_client_discard_alarm() */
@@ -5900,7 +5973,7 @@ cal_client_discard_alarm_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -5909,10 +5982,10 @@ cal_client_discard_alarm_thread (GSimpleAsyncResult *simple,
async_context->uid,
async_context->rid,
async_context->auid,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -6025,7 +6098,7 @@ e_cal_client_discard_alarm_sync (ECalClient *client,
gchar *utf8_uid;
gchar *utf8_rid;
gchar *utf8_auid;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (uid != NULL, FALSE);
@@ -6038,15 +6111,22 @@ e_cal_client_discard_alarm_sync (ECalClient *client,
utf8_rid = e_util_utf8_make_valid (rid);
utf8_auid = e_util_utf8_make_valid (auid);
- success = e_dbus_calendar_call_discard_alarm_sync (
- client->priv->dbus_proxy, utf8_uid,
- utf8_rid, utf8_auid, cancellable, error);
+ e_dbus_calendar_call_discard_alarm_sync (
+ client->priv->dbus_proxy,
+ utf8_uid, utf8_rid, utf8_auid,
+ cancellable, &local_error);
g_free (utf8_uid);
g_free (utf8_rid);
g_free (utf8_auid);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for e_cal_client_get_view() */
@@ -6059,7 +6139,7 @@ cal_client_get_view_in_dbus_thread (GSimpleAsyncResult *simple,
AsyncContext *async_context;
gchar *utf8_sexp;
gchar *object_path = NULL;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -6067,14 +6147,14 @@ cal_client_get_view_in_dbus_thread (GSimpleAsyncResult *simple,
e_dbus_calendar_call_get_view_sync (
client->priv->dbus_proxy, utf8_sexp,
- &object_path, cancellable, &error);
+ &object_path, cancellable, &local_error);
g_free (utf8_sexp);
/* Sanity check. */
g_return_if_fail (
- ((object_path != NULL) && (error == NULL)) ||
- ((object_path == NULL) && (error != NULL)));
+ ((object_path != NULL) && (local_error == NULL)) ||
+ ((object_path == NULL) && (local_error != NULL)));
if (object_path != NULL) {
GDBusConnection *connection;
@@ -6085,7 +6165,7 @@ cal_client_get_view_in_dbus_thread (GSimpleAsyncResult *simple,
client_view = g_initable_new (
E_TYPE_CAL_CLIENT_VIEW,
- cancellable, &error,
+ cancellable, &local_error,
"client", client,
"connection", connection,
"object-path", object_path,
@@ -6093,16 +6173,18 @@ cal_client_get_view_in_dbus_thread (GSimpleAsyncResult *simple,
/* Sanity check. */
g_return_if_fail (
- ((client_view != NULL) && (error == NULL)) ||
- ((client_view == NULL) && (error != NULL)));
+ ((client_view != NULL) && (local_error == NULL)) ||
+ ((client_view == NULL) && (local_error != NULL)));
async_context->client_view = client_view;
g_free (object_path);
}
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_simple_async_result_take_error (simple, local_error);
+ }
}
/**
@@ -6248,7 +6330,7 @@ cal_client_get_timezone_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -6256,10 +6338,10 @@ cal_client_get_timezone_thread (GSimpleAsyncResult *simple,
E_CAL_CLIENT (source_object),
async_context->tzid,
&async_context->zone,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -6379,7 +6461,7 @@ e_cal_client_get_timezone_sync (ECalClient *client,
icaltimezone *zone;
gchar *utf8_tzid;
gchar *string = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (tzid != NULL, FALSE);
@@ -6394,19 +6476,22 @@ e_cal_client_get_timezone_sync (ECalClient *client,
utf8_tzid = e_util_utf8_make_valid (tzid);
- success = e_dbus_calendar_call_get_timezone_sync (
+ e_dbus_calendar_call_get_timezone_sync (
client->priv->dbus_proxy, utf8_tzid,
- &string, cancellable, error);
+ &string, cancellable, &local_error);
g_free (utf8_tzid);
/* Sanity check. */
g_return_val_if_fail (
- (success && (string != NULL)) ||
- (!success && (string == NULL)), FALSE);
+ ((string != NULL) && (local_error == NULL)) ||
+ ((string == NULL) && (local_error != NULL)), FALSE);
- if (!success)
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
return FALSE;
+ }
icalcomp = icalparser_parse_string (string);
@@ -6453,17 +6538,17 @@ cal_client_add_timezone_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_cal_client_add_timezone_sync (
E_CAL_CLIENT (source_object),
async_context->zone,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -6574,7 +6659,7 @@ e_cal_client_add_timezone_sync (ECalClient *client,
icalcomponent *icalcomp;
gchar *zone_str;
gchar *utf8_zone_str;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (zone != NULL, FALSE);
@@ -6593,12 +6678,19 @@ e_cal_client_add_timezone_sync (ECalClient *client,
zone_str = icalcomponent_as_ical_string_r (icalcomp);
utf8_zone_str = e_util_utf8_make_valid (zone_str);
- success = e_dbus_calendar_call_add_timezone_sync (
- client->priv->dbus_proxy, utf8_zone_str, cancellable, error);
+ e_dbus_calendar_call_add_timezone_sync (
+ client->priv->dbus_proxy, utf8_zone_str,
+ cancellable, &local_error);
g_free (zone_str);
g_free (utf8_zone_str);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
diff --git a/libebackend/e-user-prompter.c b/libebackend/e-user-prompter.c
index 127b9fd..59fe0cb 100644
--- a/libebackend/e-user-prompter.c
+++ b/libebackend/e-user-prompter.c
@@ -143,7 +143,7 @@ user_prompter_prompt_invoke (EDBusUserPrompter *dbus_prompter,
{
GPtrArray *captions;
GList *list, *link;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (dbus_prompter != NULL, FALSE);
g_return_val_if_fail (async_data != NULL, FALSE);
@@ -161,7 +161,7 @@ user_prompter_prompt_invoke (EDBusUserPrompter *dbus_prompter,
/* NULL-terminated array */
g_ptr_array_add (captions, NULL);
- success = e_dbus_user_prompter_call_prompt_sync (
+ e_dbus_user_prompter_call_prompt_sync (
dbus_prompter,
async_data->type ? async_data->type : "",
async_data->title ? async_data->title : "",
@@ -170,12 +170,17 @@ user_prompter_prompt_invoke (EDBusUserPrompter *dbus_prompter,
async_data->use_markup,
(const gchar *const *) captions->pdata,
&async_data->prompt_id,
- cancellable,
- error);
+ cancellable, &local_error);
g_ptr_array_free (captions, TRUE);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
static void
@@ -201,24 +206,30 @@ user_prompter_extension_prompt_invoke (EDBusUserPrompter *dbus_prompter,
GCancellable *cancellable,
GError **error)
{
- gboolean success;
gchar **params;
+ GError *local_error = NULL;
g_return_val_if_fail (dbus_prompter != NULL, FALSE);
g_return_val_if_fail (async_data != NULL, FALSE);
params = e_named_parameters_to_strv (async_data->in_parameters);
- success = e_dbus_user_prompter_call_extension_prompt_sync (
+
+ e_dbus_user_prompter_call_extension_prompt_sync (
dbus_prompter,
async_data->dialog_name,
(const gchar *const *) params,
&async_data->prompt_id,
- cancellable,
- error);
+ cancellable, &local_error);
g_strfreev (params);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
static void
diff --git a/libedataserver/e-source-registry.c b/libedataserver/e-source-registry.c
index ebcd59a..bfcdfce 100644
--- a/libedataserver/e-source-registry.c
+++ b/libedataserver/e-source-registry.c
@@ -126,7 +126,6 @@ struct _AuthContext {
ESourceAuthenticationResult auth_result;
GcrSecretExchange *secret_exchange;
gboolean authenticating;
- gboolean success;
GError **error;
};
@@ -565,24 +564,24 @@ source_registry_new_source (ESourceRegistry *registry,
GMainContext *main_context;
ESource *source;
const gchar *object_path;
- GError *error = NULL;
+ GError *local_error = NULL;
/* We don't want the ESource emitting "changed" signals from
* the manager thread, so we pass it the same main context the
* registry uses for scheduling signal emissions. */
main_context = registry->priv->main_context;
- source = e_source_new (dbus_object, main_context, &error);
+ source = e_source_new (dbus_object, main_context, &local_error);
object_path = g_dbus_object_get_object_path (dbus_object);
/* The likelihood of an error here is slim, so it's
* sufficient to just print a warning if one occurs. */
- if (error != NULL) {
+ if (local_error != NULL) {
g_warn_if_fail (source == NULL);
g_critical (
"ESourceRegistry: Failed to create a "
"data source object for path '%s': %s",
- object_path, error->message);
- g_error_free (error);
+ object_path, local_error->message);
+ g_error_free (local_error);
return NULL;
}
@@ -1049,6 +1048,7 @@ source_registry_initable_init (GInitable *initable,
{
ESourceRegistry *registry;
ThreadClosure *closure;
+ GError *local_error = NULL;
registry = E_SOURCE_REGISTRY (initable);
@@ -1083,6 +1083,7 @@ source_registry_initable_init (GInitable *initable,
/* Check for error in the manager thread. */
if (closure->error != NULL) {
+ g_dbus_error_strip_remote_error (closure->error);
g_propagate_error (error, closure->error);
closure->error = NULL;
return FALSE;
@@ -1116,10 +1117,13 @@ source_registry_initable_init (GInitable *initable,
G_DBUS_PROXY_FLAGS_NONE,
SOURCES_DBUS_SERVICE_NAME,
DBUS_OBJECT_PATH,
- cancellable, error);
+ cancellable, &local_error);
- if (registry->priv->dbus_source_manager == NULL)
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
return FALSE;
+ }
/* Allow authentication prompts for all exported data sources
* when a new EDBusSourceManagerProxy is created. The thought
@@ -1465,7 +1469,7 @@ source_registry_authenticate_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -1473,10 +1477,10 @@ source_registry_authenticate_thread (GSimpleAsyncResult *simple,
E_SOURCE_REGISTRY (object),
async_context->source,
async_context->auth,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/* Helper for e_source_registry_authenticate_sync() */
@@ -1513,7 +1517,6 @@ source_registry_authenticate_respond_cb (AuthContext *auth_context)
auth_context->dbus_auth,
NULL, &non_fatal_error);
g_main_loop_quit (auth_context->main_loop);
- auth_context->success = FALSE;
/* If an error occurred while attempting to authenticate,
* tell the server to cancel the authentication session. */
@@ -1523,7 +1526,6 @@ source_registry_authenticate_respond_cb (AuthContext *auth_context)
auth_context->cancellable,
&non_fatal_error);
g_main_loop_quit (auth_context->main_loop);
- auth_context->success = FALSE;
/* If the password was accepted, let the server know so it
* can close any authentication dialogs and save the user
@@ -1534,7 +1536,6 @@ source_registry_authenticate_respond_cb (AuthContext *auth_context)
auth_context->cancellable,
&non_fatal_error);
g_main_loop_quit (auth_context->main_loop);
- auth_context->success = TRUE;
/* If the password was rejected, let the server know so it can
* indicate failure and request a different password, and then
@@ -1549,6 +1550,7 @@ source_registry_authenticate_respond_cb (AuthContext *auth_context)
/* Leave breadcrumbs if something went wrong,
* but don't fail the whole operation over it. */
if (non_fatal_error != NULL) {
+ g_dbus_error_strip_remote_error (non_fatal_error);
g_warning ("%s: %s", G_STRFUNC, non_fatal_error->message);
g_error_free (non_fatal_error);
}
@@ -1627,7 +1629,6 @@ source_registry_authenticate_dismissed_cb (EDBusAuthenticator *dbus_auth,
}
g_main_loop_quit (auth_context->main_loop);
- auth_context->success = FALSE;
}
/* Helper for e_source_registry_authenticate_sync() */
@@ -1644,7 +1645,7 @@ source_registry_call_authenticate_for_source (ESourceRegistry *registry,
gchar *prompt_title = NULL;
gchar *prompt_message = NULL;
gchar *prompt_description = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_object_ref (source);
@@ -1691,10 +1692,10 @@ source_registry_call_authenticate_for_source (ESourceRegistry *registry,
&prompt_message,
&prompt_description);
- success = e_dbus_source_manager_call_authenticate_sync (
+ e_dbus_source_manager_call_authenticate_sync (
registry->priv->dbus_source_manager, uid,
prompt_title, prompt_message, prompt_description,
- out_object_path, cancellable, error);
+ out_object_path, cancellable, &local_error);
g_free (prompt_title);
g_free (prompt_message);
@@ -1702,7 +1703,13 @@ source_registry_call_authenticate_for_source (ESourceRegistry *registry,
g_object_unref (source);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/**
@@ -1741,7 +1748,7 @@ e_source_registry_authenticate_sync (ESourceRegistry *registry,
EDBusAuthenticator *dbus_auth;
gchar *encryption_key;
gchar *object_path = NULL;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), FALSE);
g_return_val_if_fail (E_IS_SOURCE (source), FALSE);
@@ -1750,11 +1757,13 @@ e_source_registry_authenticate_sync (ESourceRegistry *registry,
/* This extracts authentication prompt details for the ESource
* before initiating an authentication session with the server,
* so split it out of the main algorithm for clarity's sake. */
- success = source_registry_call_authenticate_for_source (
- registry, auth, source, &object_path, cancellable, error);
+ source_registry_call_authenticate_for_source (
+ registry, auth, source, &object_path,
+ cancellable, &local_error);
- if (!success) {
+ if (local_error != NULL) {
g_warn_if_fail (object_path == NULL);
+ g_propagate_error (error, local_error);
return FALSE;
}
@@ -1767,20 +1776,23 @@ e_source_registry_authenticate_sync (ESourceRegistry *registry,
G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_NONE,
SOURCES_DBUS_SERVICE_NAME,
- object_path, cancellable, error);
+ object_path, cancellable, &local_error);
g_free (object_path);
- if (dbus_auth == NULL) {
- success = FALSE;
+ /* Sanity check. */
+ g_return_val_if_fail (
+ ((dbus_auth != NULL) && (local_error == NULL)) ||
+ ((dbus_auth == NULL) && (local_error != NULL)), FALSE);
+
+ if (local_error != NULL)
goto exit;
- }
auth_context = g_slice_new0 (AuthContext);
auth_context->auth = g_object_ref (auth);
auth_context->dbus_auth = dbus_auth; /* takes ownership */
auth_context->main_loop = g_main_loop_new (main_context, FALSE);
- auth_context->error = error;
+ auth_context->error = &local_error;
/* This just needs to be something other than
* E_SOURCE_AUTHENTICATION_ERROR so we don't trip
@@ -1810,15 +1822,13 @@ e_source_registry_authenticate_sync (ESourceRegistry *registry,
* authentication session. This must happen AFTER we've
* connected to the response signal since the server may
* already have a response ready and waiting for us. */
- success = e_dbus_authenticator_call_ready_sync (
- dbus_auth, encryption_key, cancellable, error);
+ e_dbus_authenticator_call_ready_sync (
+ dbus_auth, encryption_key, cancellable, &local_error);
g_free (encryption_key);
- if (success) {
+ if (local_error == NULL)
g_main_loop_run (auth_context->main_loop);
- success = auth_context->success;
- }
auth_context_free (auth_context);
@@ -1832,7 +1842,13 @@ exit:
g_main_context_unref (main_context);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/**
@@ -1935,17 +1951,17 @@ source_registry_commit_source_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_source_registry_commit_source_sync (
E_SOURCE_REGISTRY (object),
async_context->source,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/**
@@ -2106,17 +2122,17 @@ source_registry_create_sources_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_source_registry_create_sources_sync (
E_SOURCE_REGISTRY (object),
async_context->list_of_sources,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
/* Helper for e_source_registry_create_sources_sync() */
@@ -2191,7 +2207,7 @@ e_source_registry_create_sources_sync (ESourceRegistry *registry,
GVariant *variant;
GList *link;
gulong object_added_id;
- gboolean success;
+ GError *local_error = NULL;
g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), FALSE);
@@ -2231,9 +2247,9 @@ e_source_registry_create_sources_sync (ESourceRegistry *registry,
create_context);
/* This function sinks the floating GVariant reference. */
- success = e_dbus_source_manager_call_create_sources_sync (
+ e_dbus_source_manager_call_create_sources_sync (
registry->priv->dbus_source_manager,
- variant, cancellable, error);
+ variant, cancellable, &local_error);
g_variant_builder_clear (&builder);
@@ -2241,7 +2257,7 @@ e_source_registry_create_sources_sync (ESourceRegistry *registry,
* But also set a short timeout to avoid getting stuck here in
* case the registry service adds sources to its orphan table,
* which prevents them from being exported over D-Bus. */
- if (success) {
+ if (local_error == NULL) {
GSource *timeout_source;
timeout_source = g_timeout_source_new_seconds (2);
@@ -2262,7 +2278,13 @@ e_source_registry_create_sources_sync (ESourceRegistry *registry,
g_main_context_pop_thread_default (create_context->main_context);
create_context_free (create_context);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/**
diff --git a/libedataserver/e-source.c b/libedataserver/e-source.c
index fe9bc50..251c3a1 100644
--- a/libedataserver/e-source.c
+++ b/libedataserver/e-source.c
@@ -387,7 +387,7 @@ source_set_property_from_key_file (GObject *object,
{
gchar *key;
GValue *value;
- GError *error = NULL;
+ GError *local_error = NULL;
value = g_slice_new0 (GValue);
key = e_source_parameter_to_key (pspec->name);
@@ -401,8 +401,8 @@ source_set_property_from_key_file (GObject *object,
gint v_int;
v_int = g_key_file_get_integer (
- key_file, group_name, key, &error);
- if (error == NULL) {
+ key_file, group_name, key, &local_error);
+ if (local_error == NULL) {
g_value_init (value, G_TYPE_INT);
g_value_set_int (value, v_int);
}
@@ -411,8 +411,8 @@ source_set_property_from_key_file (GObject *object,
gint64 v_int64;
v_int64 = g_key_file_get_int64 (
- key_file, group_name, key, &error);
- if (error == NULL) {
+ key_file, group_name, key, &local_error);
+ if (local_error == NULL) {
g_value_init (value, G_TYPE_INT64);
g_value_set_int64 (value, v_int64);
}
@@ -422,8 +422,8 @@ source_set_property_from_key_file (GObject *object,
gchar *v_str;
v_str = g_key_file_get_string (
- key_file, group_name, key, &error);
- if (error == NULL) {
+ key_file, group_name, key, &local_error);
+ if (local_error == NULL) {
v_uint64 = g_ascii_strtoull (v_str, NULL, 16);
g_value_init (value, G_TYPE_UINT64);
@@ -436,8 +436,8 @@ source_set_property_from_key_file (GObject *object,
gboolean v_boolean;
v_boolean = g_key_file_get_boolean (
- key_file, group_name, key, &error);
- if (error == NULL) {
+ key_file, group_name, key, &local_error);
+ if (local_error == NULL) {
g_value_init (value, G_TYPE_BOOLEAN);
g_value_set_boolean (value, v_boolean);
}
@@ -446,8 +446,8 @@ source_set_property_from_key_file (GObject *object,
gchar *nick;
nick = g_key_file_get_string (
- key_file, group_name, key, &error);
- if (error == NULL) {
+ key_file, group_name, key, &local_error);
+ if (local_error == NULL) {
GParamSpecEnum *enum_pspec;
GEnumValue *enum_value;
@@ -466,8 +466,8 @@ source_set_property_from_key_file (GObject *object,
gdouble v_double;
v_double = g_key_file_get_double (
- key_file, group_name, key, &error);
- if (error == NULL) {
+ key_file, group_name, key, &local_error);
+ if (local_error == NULL) {
g_value_init (value, G_TYPE_DOUBLE);
g_value_set_double (value, v_double);
}
@@ -477,8 +477,8 @@ source_set_property_from_key_file (GObject *object,
/* Get the localized string if present. */
v_string = g_key_file_get_locale_string (
- key_file, group_name, key, NULL, &error);
- if (error == NULL) {
+ key_file, group_name, key, NULL, &local_error);
+ if (local_error == NULL) {
g_value_init (value, G_TYPE_STRING);
g_value_take_string (value, v_string);
}
@@ -487,8 +487,8 @@ source_set_property_from_key_file (GObject *object,
gchar **strv;
strv = g_key_file_get_string_list (
- key_file, group_name, key, NULL, &error);
- if (error == NULL) {
+ key_file, group_name, key, NULL, &local_error);
+ if (local_error == NULL) {
g_value_init (value, G_TYPE_STRV);
g_value_take_boxed (value, strv);
}
@@ -498,8 +498,8 @@ source_set_property_from_key_file (GObject *object,
/* Create the GFile from the URI string. */
uri = g_key_file_get_locale_string (
- key_file, group_name, key, NULL, &error);
- if (error == NULL) {
+ key_file, group_name, key, NULL, &local_error);
+ if (local_error == NULL) {
GFile *file = NULL;
if (uri != NULL && *uri != '\0')
file = g_file_new_for_uri (uri);
@@ -516,10 +516,10 @@ source_set_property_from_key_file (GObject *object,
/* If a value could not be retrieved from the key
* file, restore the property to its default value. */
- if (error != NULL) {
+ if (local_error != NULL) {
g_value_init (value, pspec->value_type);
g_param_value_set_default (pspec, value);
- g_error_free (error);
+ g_error_free (local_error);
}
if (G_IS_VALUE (value)) {
@@ -646,17 +646,18 @@ source_notify_dbus_data_cb (EDBusSource *dbus_source,
GParamSpec *pspec,
ESource *source)
{
- GError *error = NULL;
+ GError *local_error = NULL;
g_rec_mutex_lock (&source->priv->lock);
/* Since the source data came from a GKeyFile structure on the
* server-side, this should never fail. But we'll print error
* messages to the terminal just in case. */
- if (!source_parse_dbus_data (source, &error)) {
- g_return_if_fail (error != NULL);
- g_warning ("%s", error->message);
- g_error_free (error);
+ source_parse_dbus_data (source, &local_error);
+
+ if (local_error != NULL) {
+ g_warning ("%s", local_error->message);
+ g_error_free (local_error);
}
g_rec_mutex_unlock (&source->priv->lock);
@@ -926,7 +927,7 @@ source_remove_sync (ESource *source,
{
EDBusSourceRemovable *dbus_interface = NULL;
GDBusObject *dbus_object;
- gboolean success;
+ GError *local_error = NULL;
dbus_object = e_source_ref_dbus_object (source);
if (dbus_object != NULL) {
@@ -945,12 +946,18 @@ source_remove_sync (ESource *source,
return FALSE;
}
- success = e_dbus_source_removable_call_remove_sync (
- dbus_interface, cancellable, error);
+ e_dbus_source_removable_call_remove_sync (
+ dbus_interface, cancellable, &local_error);
g_object_unref (dbus_interface);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for source_remove() */
@@ -959,12 +966,12 @@ source_remove_thread (GSimpleAsyncResult *simple,
GObject *object,
GCancellable *cancellable)
{
- GError *error = NULL;
+ GError *local_error = NULL;
- e_source_remove_sync (E_SOURCE (object), cancellable, &error);
+ e_source_remove_sync (E_SOURCE (object), cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
static void
@@ -1011,8 +1018,8 @@ source_write_sync (ESource *source,
{
EDBusSourceWritable *dbus_interface = NULL;
GDBusObject *dbus_object;
- gboolean success;
gchar *data;
+ GError *local_error = NULL;
dbus_object = e_source_ref_dbus_object (source);
if (dbus_object != NULL) {
@@ -1033,14 +1040,20 @@ source_write_sync (ESource *source,
data = e_source_to_string (source, NULL);
- success = e_dbus_source_writable_call_write_sync (
- dbus_interface, data, cancellable, error);
+ e_dbus_source_writable_call_write_sync (
+ dbus_interface, data, cancellable, &local_error);
g_free (data);
g_object_unref (dbus_interface);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for source_write() */
@@ -1049,12 +1062,12 @@ source_write_thread (GSimpleAsyncResult *simple,
GObject *object,
GCancellable *cancellable)
{
- GError *error = NULL;
+ GError *local_error = NULL;
- e_source_write_sync (E_SOURCE (object), cancellable, &error);
+ e_source_write_sync (E_SOURCE (object), cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
static void
@@ -1103,7 +1116,7 @@ source_remote_create_sync (ESource *source,
EDBusSourceRemoteCreatable *dbus_interface = NULL;
GDBusObject *dbus_object;
gchar *uid, *data;
- gboolean success;
+ GError *local_error = NULL;
dbus_object = e_source_ref_dbus_object (source);
if (dbus_object != NULL) {
@@ -1126,15 +1139,21 @@ source_remote_create_sync (ESource *source,
uid = e_source_dup_uid (scratch_source);
data = e_source_to_string (scratch_source, NULL);
- success = e_dbus_source_remote_creatable_call_create_sync (
- dbus_interface, uid, data, cancellable, error);
+ e_dbus_source_remote_creatable_call_create_sync (
+ dbus_interface, uid, data, cancellable, &local_error);
g_free (data);
g_free (uid);
g_object_unref (dbus_interface);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for source_remote_create() */
@@ -1144,17 +1163,17 @@ source_remote_create_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
e_source_remote_create_sync (
E_SOURCE (object),
async_context->scratch_source,
- cancellable, &error);
+ cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
static void
@@ -1210,7 +1229,7 @@ source_remote_delete_sync (ESource *source,
{
EDBusSourceRemoteDeletable *dbus_interface = NULL;
GDBusObject *dbus_object;
- gboolean success;
+ GError *local_error = NULL;
dbus_object = e_source_ref_dbus_object (source);
if (dbus_object != NULL) {
@@ -1230,12 +1249,18 @@ source_remote_delete_sync (ESource *source,
return FALSE;
}
- success = e_dbus_source_remote_deletable_call_delete_sync (
- dbus_interface, cancellable, error);
+ e_dbus_source_remote_deletable_call_delete_sync (
+ dbus_interface, cancellable, &local_error);
g_object_unref (dbus_interface);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for source_remote_delete() */
@@ -1244,13 +1269,13 @@ source_remote_delete_thread (GSimpleAsyncResult *simple,
GObject *object,
GCancellable *cancellable)
{
- GError *error = NULL;
+ GError *local_error = NULL;
e_source_remote_delete_sync (
- E_SOURCE (object), cancellable, &error);
+ E_SOURCE (object), cancellable, &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
static void
@@ -1300,7 +1325,7 @@ source_get_oauth2_access_token_sync (ESource *source,
{
EDBusSourceOAuth2Support *dbus_interface = NULL;
GDBusObject *dbus_object;
- gboolean success;
+ GError *local_error = NULL;
dbus_object = e_source_ref_dbus_object (source);
if (dbus_object != NULL) {
@@ -1320,13 +1345,19 @@ source_get_oauth2_access_token_sync (ESource *source,
return FALSE;
}
- success = e_dbus_source_oauth2_support_call_get_access_token_sync (
+ e_dbus_source_oauth2_support_call_get_access_token_sync (
dbus_interface, out_access_token,
- out_expires_in, cancellable, error);
+ out_expires_in, cancellable, &local_error);
g_object_unref (dbus_interface);
- return success;
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return TRUE;
}
/* Helper for source_get_oauth2_access_token() */
@@ -1336,7 +1367,7 @@ source_get_oauth2_access_token_thread (GSimpleAsyncResult *simple,
GCancellable *cancellable)
{
AsyncContext *async_context;
- GError *error = NULL;
+ GError *local_error = NULL;
async_context = g_simple_async_result_get_op_res_gpointer (simple);
@@ -1344,10 +1375,10 @@ source_get_oauth2_access_token_thread (GSimpleAsyncResult *simple,
E_SOURCE (object), cancellable,
&async_context->access_token,
&async_context->expires_in,
- &error);
+ &local_error);
- if (error != NULL)
- g_simple_async_result_take_error (simple, error);
+ if (local_error != NULL)
+ g_simple_async_result_take_error (simple, local_error);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]