Better handling of dbus errors

Now print the error instead of silently fail
This commit is contained in:
Davide Andreoli 2021-04-23 11:11:33 +02:00
parent 33bf589e68
commit bb16f0d245
4 changed files with 36 additions and 16 deletions

View File

@ -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))

View File

@ -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

View File

@ -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);

View File

@ -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