davemds pushed a commit to branch master.

http://git.enlightenment.org/enlightenment/modules/places.git/commit/?id=bb16f0d2450419730e7d96f27b157cd7b9e36642

commit bb16f0d2450419730e7d96f27b157cd7b9e36642
Author: Dave Andreoli <d...@gurumeditation.it>
Date:   Fri Apr 23 11:11:33 2021 +0200

    Better handling of dbus errors
    
    Now print the error instead of silently fail
---
 src/backend_systemd.c | 14 +++++++-------
 src/backend_udisks1.c |  9 +++++++--
 src/backend_udisks2.c | 14 +++++++-------
 src/e_mod_main.h      | 15 +++++++++++++++
 4 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/src/backend_systemd.c b/src/backend_systemd.c
index 9d54354..42359ee 100644
--- a/src/backend_systemd.c
+++ b/src/backend_systemd.c
@@ -97,7 +97,7 @@ _places_sd_name_start(void *data, const Eldbus_Message *msg,
    Eldbus_Message *meth;
    Eldbus_Message_Iter *iter, *array;
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    printf("PLACES: systemd Up and running\n");
 
@@ -138,7 +138,7 @@ _places_sd_list_units_cb(void *data, const Eldbus_Message 
*msg, Eldbus_Pending *
    unsigned int job_id;
    
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    EINA_SAFETY_ON_FALSE_RETURN(
       eldbus_message_arguments_get(msg, "a(ssssssouso)", &units)
@@ -178,7 +178,7 @@ _places_sd_unit_new_cb(void *data, const Eldbus_Message 
*msg)
 {
    const char *id, *obj_path;
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
    EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_arguments_get(msg, "so", &id, 
&obj_path));
    
    // printf("PLACES: UnitNew(%s, %s)\n", id, obj_path);
@@ -201,7 +201,7 @@ _places_sd_unit_removed_cb(void *data, const Eldbus_Message 
*msg)
 {
    const char *id, *obj_path;
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
    EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_arguments_get(msg, "so", &id, 
&obj_path));
    
    // printf("PLACES: UnitRemoved(%s, %s)\n", id, obj_path);
@@ -277,7 +277,7 @@ _places_sd_mount_props_all_cb(void *data, const 
Eldbus_Message *msg, Eldbus_Pend
    Eldbus_Message_Iter *props;
 
    EINA_SAFETY_ON_NULL_RETURN(vol);
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    if (eldbus_message_arguments_get(msg, "a{sv}", &props))
    {
@@ -295,7 +295,7 @@ _places_sd_unit_props_all_cb(void *data, const 
Eldbus_Message *msg, Eldbus_Pendi
    Eldbus_Message_Iter *props;
 
    EINA_SAFETY_ON_NULL_RETURN(vol);
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    if (eldbus_message_arguments_get(msg, "a{sv}", &props))
    {
@@ -314,7 +314,7 @@ _places_sd_mount_props_changed_cb(void *data, const 
Eldbus_Message *msg)
    const char *iface;
 
    EINA_SAFETY_ON_NULL_RETURN(vol);
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    if (eldbus_message_arguments_get(msg, "sa{sv}as", &iface, 
                                     &changed_props, &invalidated_props))
diff --git a/src/backend_udisks1.c b/src/backend_udisks1.c
index efea547..7ba73f3 100644
--- a/src/backend_udisks1.c
+++ b/src/backend_udisks1.c
@@ -65,6 +65,7 @@ places_udisks1_shutdown(void)
    eldbus_shutdown();
 }
 
+
 /* Implementation */
 static void
 _places_udisks_name_start(void *data, const Eldbus_Message *msg,
@@ -73,6 +74,7 @@ _places_udisks_name_start(void *data, const Eldbus_Message 
*msg,
    Eldbus_Object *obj;
    unsigned flag;
 
+   PLACES_ON_MSG_ERROR_RETURN(msg);
    EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_arguments_get(msg, "u", &flag));
 
    obj = eldbus_object_get(_places_dbus_conn, UDISKS_BUS, UDISKS_PATH);
@@ -123,7 +125,7 @@ _places_udisks_enumerate_devices_cb(void *data, const 
Eldbus_Message *msg, Eldbu
    Eldbus_Message_Iter *ao;
    const char *devpath;
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
    EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_arguments_get(msg, "ao", &ao));
 
    while (eldbus_message_iter_get_and_next(ao, 'o', &devpath))
@@ -143,6 +145,7 @@ _places_udisks_device_add_cb(void *data, const 
Eldbus_Message *msg)
    Volume *vol;
    char *devpath;
 
+   PLACES_ON_MSG_ERROR_RETURN(msg);
    EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_arguments_get(msg, "o", 
&devpath));
    printf("PLACES udisks: DeviceAdded [%s]\n", devpath);
 
@@ -158,6 +161,7 @@ _places_udisks_device_del_cb(void *data, const 
Eldbus_Message *msg)
    Volume *vol;
    char *devpath;
 
+   PLACES_ON_MSG_ERROR_RETURN(msg);
    EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_arguments_get(msg, "o", 
&devpath));
 
    if ((vol = places_volume_by_id_get(devpath)))
@@ -171,6 +175,7 @@ _places_udisks_device_changed_cb(void *data, const 
Eldbus_Message *msg)
    Volume *vol = data;
 
    if (!vol) return;
+   PLACES_ON_MSG_ERROR_RETURN(msg);
    eldbus_proxy_property_get_all((Eldbus_Proxy *)vol->backend_data,
                                  _places_udisks_vol_props_cb, vol);
 }
@@ -202,7 +207,7 @@ _places_udisks_vol_props_cb(void *data, const 
Eldbus_Message *msg, Eldbus_Pendin
    Eina_Bool media_available = EINA_FALSE;
    unsigned long long size = 0;
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
    EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_arguments_get(msg, "a{sv}", 
&array));
 
    // collect usefull props iterating over the dict
diff --git a/src/backend_udisks2.c b/src/backend_udisks2.c
index 603049f..70303a0 100644
--- a/src/backend_udisks2.c
+++ b/src/backend_udisks2.c
@@ -180,7 +180,7 @@ _places_ud2_name_start(void *data, const Eldbus_Message 
*msg,
 {
    Eldbus_Proxy *proxy;
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    // get the UDisks2 ObjectManager object
    _places_ud2_object_manager = eldbus_object_get(_places_ud2_conn, 
@@ -210,7 +210,7 @@ _places_ud2_get_managed_objects_cb(void *data, const 
Eldbus_Message *msg, Eldbus
    Eldbus_Message_Iter *ifaces_array;
    const char *obj_path;
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    printf("PLACES: GetManagedObjects\n");
    if (!eldbus_message_arguments_get(msg, "a{oa{sa{sv}}}", &objs_array))
@@ -236,7 +236,7 @@ _places_ud2_interfaces_added_cb(void *data, const 
Eldbus_Message *msg)
    const char *obj_path;
    Eldbus_Message_Iter *ifaces_array;
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    if (eldbus_message_arguments_get(msg, "oa{sa{sv}}", &obj_path, 
&ifaces_array))
    {
@@ -256,7 +256,7 @@ _places_ud2_interfaces_removed_cb(void *data, const 
Eldbus_Message *msg)
    Eldbus_Message_Iter *array_ifaces;
    Volume *vol;
 
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    if (!eldbus_message_arguments_get(msg, "oas", &obj_path, &array_ifaces))
      return;
@@ -281,7 +281,7 @@ _places_ud2_block_props_changed_cb(void *data, const 
Eldbus_Message *msg)
    char *mount_point = NULL;
 
    EINA_SAFETY_ON_NULL_RETURN(vol);
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    if (!eldbus_message_arguments_get(msg, "sa{sv}as", &iface_name, 
                                      &changed_props, &invalidated_props))
@@ -322,7 +322,7 @@ _places_ud2_drive_props_changed_cb(void *data, const 
Eldbus_Message *msg)
    const char *iface_name;
 
    EINA_SAFETY_ON_NULL_RETURN(vol);
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
 
    if (!eldbus_message_arguments_get(msg, "sa{sv}as", &iface_name, 
                                      &changed_props, &invalidated_props))
@@ -466,7 +466,7 @@ _places_ud2_drive_props_cb(void *data, const Eldbus_Message 
*msg, Eldbus_Pending
    Eldbus_Message_Iter *props_array;
 
    EINA_SAFETY_ON_NULL_RETURN(vol);
-   EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL));
+   PLACES_ON_MSG_ERROR_RETURN(msg);
    EINA_SAFETY_ON_FALSE_RETURN(eldbus_message_arguments_get(msg, "a{sv}", 
&props_array));
    printf("PLACES: Drive properties for: %s\n", vol->id);
    _places_ud2_read_drive_properies(vol, props_array);
diff --git a/src/e_mod_main.h b/src/e_mod_main.h
index fabe600..5ff68d1 100644
--- a/src/e_mod_main.h
+++ b/src/e_mod_main.h
@@ -11,6 +11,21 @@
 #endif
 #define N_(string) (string)
 
+
+/* Check for dbus messages error */
+#define PLACES_ON_MSG_ERROR_RETURN(msg)                                     \
+   do                                                                       \
+   {                                                                        \
+      const char *err;                                                      \
+      if (eldbus_message_error_get(msg, NULL, &err))                        \
+      {                                                                     \
+         EINA_SAFETY_ERROR(err);                                            \
+         return;                                                            \
+      }                                                                     \
+   }                                                                        \
+   while (0)
+
+
 /* Macros used for config file versioning */
 #define MOD_CONFIG_FILE_EPOCH 0x0001
 #define MOD_CONFIG_FILE_GENERATION 0x0090

-- 


Reply via email to