From: raster Date: Thu, 1 Dec 2011 09:37:46 +0000 (+0000) Subject: e_dbus really should check returns of making containers as if it fails X-Git-Tag: 2.0_alpha~10^2~28 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=28d2bb3eb0d8bc3704cb80b1899315bf5a3bfb24;p=framework%2Fuifw%2Fedbus.git e_dbus really should check returns of making containers as if it fails future additions to the container are using uninitialized memory... and this could be oh so bad. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@65764 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/bin/test.c b/src/bin/test.c index 249cd4a..3b298c1 100644 --- a/src/bin/test.c +++ b/src/bin/test.c @@ -46,9 +46,15 @@ copy_message(DBusMessageIter *from, DBusMessageIter *to) char *sig; dbus_message_iter_recurse(from, &fsub); sig = dbus_message_iter_get_signature(&fsub); - dbus_message_iter_open_container(to, type, sig, &tsub); - copy_message(&fsub, &tsub); - dbus_message_iter_close_container(to, &tsub); + if (dbus_message_iter_open_container(to, type, sig, &tsub)) + { + copy_message(&fsub, &tsub); + dbus_message_iter_close_container(to, &tsub); + } + else + { + printf("ERR: container open failed\n"); + } } } dbus_message_iter_next(from); diff --git a/src/lib/bluez/e_bluez_element.c b/src/lib/bluez/e_bluez_element.c index 9ec91b0..9578761 100644 --- a/src/lib/bluez/e_bluez_element.c +++ b/src/lib/bluez/e_bluez_element.c @@ -1495,28 +1495,44 @@ e_bluez_element_property_dict_set_full(E_Bluez_Element *element, const char *pro return EINA_FALSE; } - dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &variant); - - snprintf(typestr, sizeof(typestr), - (DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING - DBUS_TYPE_STRING_AS_STRING - "%c" - DBUS_DICT_ENTRY_END_CHAR_AS_STRING), - type); - - dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, typestr, &dict); - dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry); - - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); - - if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) - dbus_message_iter_append_basic(&entry, type, &value); + if (dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &variant)) + { + snprintf(typestr, sizeof(typestr), + (DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + "%c" + DBUS_DICT_ENTRY_END_CHAR_AS_STRING), + type); + + if (dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, typestr, &dict)) + { + if (dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry)) + { + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + + if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) + dbus_message_iter_append_basic(&entry, type, &value); + else + dbus_message_iter_append_basic(&entry, type, value); + + dbus_message_iter_close_container(&dict, &entry); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(&variant, &dict); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(&itr, &variant); + } else - dbus_message_iter_append_basic(&entry, type, value); - - dbus_message_iter_close_container(&dict, &entry); - dbus_message_iter_close_container(&variant, &dict); - dbus_message_iter_close_container(&itr, &variant); + { + ERR("dbus_message_iter_open_container() failed"); + } return e_bluez_element_message_send (element, name, NULL, msg, &element->_pending.property_set, cb, data); @@ -1561,23 +1577,28 @@ e_bluez_element_property_set_full(E_Bluez_Element *element, const char *prop, in typestr[0] = type; typestr[1] = '\0'; - dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &v); - if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) - { - dbus_message_iter_append_basic(&v, type, &value); - } - else if (type == DBUS_TYPE_BOOLEAN) + if (dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &v)) { - unsigned int b = *(char *)value; - dbus_message_iter_append_basic(&v, type, &b); + if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) + { + dbus_message_iter_append_basic(&v, type, &value); + } + else if (type == DBUS_TYPE_BOOLEAN) + { + unsigned int b = *(char *)value; + dbus_message_iter_append_basic(&v, type, &b); + } + else + { + dbus_message_iter_append_basic(&v, type, value); + } + dbus_message_iter_close_container(&itr, &v); } else { - dbus_message_iter_append_basic(&v, type, value); + ERR("dbus_message_iter_open_container() failed"); } - - dbus_message_iter_close_container(&itr, &v); - + return e_bluez_element_message_send (element, name, NULL, msg, &element->_pending.property_set, cb, data); } diff --git a/src/lib/connman0_7x/e_connman_element.c b/src/lib/connman0_7x/e_connman_element.c index f47679e..4a5f7c0 100644 --- a/src/lib/connman0_7x/e_connman_element.c +++ b/src/lib/connman0_7x/e_connman_element.c @@ -1465,28 +1465,43 @@ e_connman_element_property_dict_set_full(E_Connman_Element *element, const char return EINA_FALSE; } - dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &variant); - - snprintf(typestr, sizeof(typestr), - (DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING - DBUS_TYPE_STRING_AS_STRING - "%c" - DBUS_DICT_ENTRY_END_CHAR_AS_STRING), - type); - - dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, typestr, &dict); - dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry); - - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); - - if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) - dbus_message_iter_append_basic(&entry, type, &value); + if (dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &variant)) + { + snprintf(typestr, sizeof(typestr), + (DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + "%c" + DBUS_DICT_ENTRY_END_CHAR_AS_STRING), + type); + if (dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, typestr, &dict)) + { + if (dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry)) + { + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + + if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) + dbus_message_iter_append_basic(&entry, type, &value); + else + dbus_message_iter_append_basic(&entry, type, value); + + dbus_message_iter_close_container(&dict, &entry); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(&variant, &dict); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(&itr, &variant); + } else - dbus_message_iter_append_basic(&entry, type, value); - - dbus_message_iter_close_container(&dict, &entry); - dbus_message_iter_close_container(&variant, &dict); - dbus_message_iter_close_container(&itr, &variant); + { + ERR("dbus_message_iter_open_container() failed"); + } return e_connman_element_message_send (element, name, NULL, msg, &element->_pending.property_set, cb, data); @@ -1531,23 +1546,29 @@ e_connman_element_property_set_full(E_Connman_Element *element, const char *prop typestr[0] = type; typestr[1] = '\0'; - dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &v); - if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) - { - dbus_message_iter_append_basic(&v, type, &value); - } - else if (type == DBUS_TYPE_BOOLEAN) + if (dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &v)) { - unsigned int b = *(char *)value; - dbus_message_iter_append_basic(&v, type, &b); + if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) + { + dbus_message_iter_append_basic(&v, type, &value); + } + else if (type == DBUS_TYPE_BOOLEAN) + { + unsigned int b = *(char *)value; + dbus_message_iter_append_basic(&v, type, &b); + } + else + { + dbus_message_iter_append_basic(&v, type, value); + } + + dbus_message_iter_close_container(&itr, &v); } else { - dbus_message_iter_append_basic(&v, type, value); + ERR("dbus_message_iter_open_container() failed"); } - dbus_message_iter_close_container(&itr, &v); - return e_connman_element_message_send (element, name, NULL, msg, &element->_pending.property_set, cb, data); } @@ -1591,33 +1612,42 @@ e_connman_element_property_array_set_full(E_Connman_Element *element, const char dbus_message_iter_init_append(msg, &itr); dbus_message_iter_append_basic(&itr, DBUS_TYPE_STRING, &prop); - dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, array_sig, - &variant); - dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, type_sig, - &array); - - if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) + if (dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, array_sig, &variant)) { - unsigned int i; - for (i = 0; i < count; i++) + if (dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, type_sig, &array)) + { + if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) + { + unsigned int i; + for (i = 0; i < count; i++) + { + const void *entry = values[i]; + dbus_message_iter_append_basic(&array, type, &entry); + } + } + else + { + unsigned int i; + for (i = 0; i < count; i++) + { + const void *entry = values[i]; + dbus_message_iter_append_basic(&array, type, entry); + } + } + + dbus_message_iter_close_container(&variant, &array); + } + else { - const void *entry = values[i]; - dbus_message_iter_append_basic(&array, type, &entry); + ERR("dbus_message_iter_open_container() failed"); } + dbus_message_iter_close_container(&itr, &variant); } else { - unsigned int i; - for (i = 0; i < count; i++) - { - const void *entry = values[i]; - dbus_message_iter_append_basic(&array, type, entry); - } + ERR("dbus_message_iter_open_container() failed"); } - - dbus_message_iter_close_container(&variant, &array); - dbus_message_iter_close_container(&itr, &variant); - + return e_connman_element_message_send(element, name, NULL, msg, &element->_pending.property_set, cb, data); diff --git a/src/lib/connman0_7x/e_connman_service.c b/src/lib/connman0_7x/e_connman_service.c index 9638b4f..0c6c320 100644 --- a/src/lib/connman0_7x/e_connman_service.c +++ b/src/lib/connman0_7x/e_connman_service.c @@ -1158,57 +1158,81 @@ e_connman_service_ipv4_configure_manual(E_Connman_Element *service, const char * dbus_message_iter_append_basic (&itr, DBUS_TYPE_STRING, &e_connman_prop_ipv4_configuration); - dbus_message_iter_open_container - (&itr, DBUS_TYPE_VARIANT, - (DBUS_TYPE_ARRAY_AS_STRING - DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING - DBUS_TYPE_STRING_AS_STRING - DBUS_TYPE_STRING_AS_STRING - DBUS_DICT_ENTRY_END_CHAR_AS_STRING), - &variant); - dbus_message_iter_open_container - (&variant, DBUS_TYPE_ARRAY, - (DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING - DBUS_TYPE_STRING_AS_STRING - DBUS_TYPE_STRING_AS_STRING - DBUS_DICT_ENTRY_END_CHAR_AS_STRING), - &dict); - - dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry); - dbus_message_iter_append_basic - (&entry, DBUS_TYPE_STRING, &e_connman_prop_method); - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &method); - dbus_message_iter_close_container(&dict, &entry); - - dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry); - dbus_message_iter_append_basic - (&entry, DBUS_TYPE_STRING, &e_connman_prop_address); - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &address); - dbus_message_iter_close_container(&dict, &entry); - - if (netmask) + if (dbus_message_iter_open_container + (&itr, DBUS_TYPE_VARIANT, + (DBUS_TYPE_ARRAY_AS_STRING + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING), + &variant)) { - dbus_message_iter_open_container - (&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry); - dbus_message_iter_append_basic - (&entry, DBUS_TYPE_STRING, &e_connman_prop_netmask); - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &netmask); - dbus_message_iter_close_container(&dict, &entry); + if (dbus_message_iter_open_container + (&variant, DBUS_TYPE_ARRAY, + (DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING), + &dict)) + { + if (dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry)) + { + dbus_message_iter_append_basic + (&entry, DBUS_TYPE_STRING, &e_connman_prop_method); + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &method); + dbus_message_iter_close_container(&dict, &entry); + } + if (dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry)) + { + dbus_message_iter_append_basic + (&entry, DBUS_TYPE_STRING, &e_connman_prop_address); + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &address); + dbus_message_iter_close_container(&dict, &entry); + } + if (netmask) + { + if (dbus_message_iter_open_container + (&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry)) + { + dbus_message_iter_append_basic + (&entry, DBUS_TYPE_STRING, &e_connman_prop_netmask); + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &netmask); + dbus_message_iter_close_container(&dict, &entry); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + } + + if (gateway) + { + if (dbus_message_iter_open_container + (&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry)) + { + dbus_message_iter_append_basic + (&entry, DBUS_TYPE_STRING, &e_connman_prop_gateway); + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &gateway); + dbus_message_iter_close_container(&dict, &entry); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + } + dbus_message_iter_close_container(&variant, &dict); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(&itr, &variant); } - - if (gateway) + else { - dbus_message_iter_open_container - (&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry); - dbus_message_iter_append_basic - (&entry, DBUS_TYPE_STRING, &e_connman_prop_gateway); - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &gateway); - dbus_message_iter_close_container(&dict, &entry); + ERR("dbus_message_iter_open_container() failed"); } - dbus_message_iter_close_container(&variant, &dict); - dbus_message_iter_close_container(&itr, &variant); - return e_connman_element_message_send (service, name, NULL, msg, &service->_pending.property_set, cb, data); } diff --git a/src/lib/dbus/e_dbus_interfaces.c b/src/lib/dbus/e_dbus_interfaces.c index ce52513..741a493 100644 --- a/src/lib/dbus/e_dbus_interfaces.c +++ b/src/lib/dbus/e_dbus_interfaces.c @@ -150,9 +150,15 @@ e_dbus_properties_set(E_DBus_Connection *conn, const char *destination, const ch dbus_message_iter_init_append(msg, &iter); sig[0] = value_type; sig[1] = 0; - dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, sig, &sub); - dbus_message_iter_append_basic(&sub, value_type, value); - dbus_message_iter_close_container(&iter, &sub); + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, sig, &sub)) + { + dbus_message_iter_append_basic(&sub, value_type, value); + dbus_message_iter_close_container(&iter, &sub); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } ret = e_dbus_message_send(conn, msg, cb_return, -1, (void *)data); dbus_message_unref(msg); diff --git a/src/lib/dbus/e_dbus_object.c b/src/lib/dbus/e_dbus_object.c index e03da35..bb3befd 100644 --- a/src/lib/dbus/e_dbus_object.c +++ b/src/lib/dbus/e_dbus_object.c @@ -134,9 +134,15 @@ cb_properties_get(E_DBus_Object *obj, DBusMessage *msg) { reply = dbus_message_new_method_return(msg); dbus_message_iter_init_append(msg, &iter); - dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, e_dbus_basic_type_as_string(type), &sub); - dbus_message_iter_append_basic(&sub, type, &value); - dbus_message_iter_close_container(&iter, &sub); + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, e_dbus_basic_type_as_string(type), &sub)) + { + dbus_message_iter_append_basic(&sub, type, &value); + dbus_message_iter_close_container(&iter, &sub); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } return reply; } else diff --git a/src/lib/hal/e_hal_device.c b/src/lib/hal/e_hal_device.c index eb86779..a70bbc4 100644 --- a/src/lib/hal/e_hal_device.c +++ b/src/lib/hal/e_hal_device.c @@ -269,18 +269,23 @@ e_hal_device_volume_mount(E_DBus_Connection *conn, const char *udi, const char * dbus_message_iter_init_append(msg, &iter); dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &mount_point); dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &fstype); - dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter); - - if (options) + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter)) { - const char *opt; - - EINA_LIST_FOREACH(options, l, opt) + if (options) { - dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + const char *opt; + + EINA_LIST_FOREACH(options, l, opt) + { + dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + } } + dbus_message_iter_close_container(&iter, &subiter); + } + else + { + ERR("dbus_message_iter_open_container() failed"); } - dbus_message_iter_close_container(&iter, &subiter) ; ret = e_dbus_method_call_send(conn, msg, NULL, cb_func, NULL, -1, data); dbus_message_unref(msg); @@ -309,17 +314,23 @@ e_hal_device_volume_unmount(E_DBus_Connection *conn, const char *udi, Eina_List msg = e_hal_device_volume_call_new(udi, "Unmount"); dbus_message_iter_init_append(msg, &iter); - dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter); - if (options) + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter)) { - const char *opt; - - EINA_LIST_FOREACH(options, l, opt) + if (options) { - dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + const char *opt; + + EINA_LIST_FOREACH(options, l, opt) + { + dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + } } + dbus_message_iter_close_container(&iter, &subiter); + } + else + { + ERR("dbus_message_iter_open_container() failed"); } - dbus_message_iter_close_container(&iter, &subiter) ; ret = e_dbus_method_call_send(conn, msg, NULL, cb_func, NULL, -1, data); dbus_message_unref(msg); @@ -346,17 +357,23 @@ e_hal_device_volume_eject(E_DBus_Connection *conn, const char *udi, Eina_List *o msg = e_hal_device_volume_call_new(udi, "Eject"); dbus_message_iter_init_append(msg, &iter); - dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter); - if (options) + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter)) { - const char *opt; - - EINA_LIST_FOREACH(options, l, opt) + if (options) { - dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + const char *opt; + + EINA_LIST_FOREACH(options, l, opt) + { + dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + } } + dbus_message_iter_close_container(&iter, &subiter); + } + else + { + ERR("dbus_message_iter_open_container() failed"); } - dbus_message_iter_close_container(&iter, &subiter) ; ret = e_dbus_method_call_send(conn, msg, NULL, cb_func, NULL, -1, data); dbus_message_unref(msg); diff --git a/src/lib/notification/daemon.c b/src/lib/notification/daemon.c index f9c08f6..8db6889 100644 --- a/src/lib/notification/daemon.c +++ b/src/lib/notification/daemon.c @@ -7,12 +7,6 @@ #include "e_notify_private.h" #include -#define DBG(...) EINA_LOG_DOM_DBG(log_dom, __VA_ARGS__) -#define INF(...) EINA_LOG_DOM_INFO(log_dom, __VA_ARGS__) -#define WRN(...) EINA_LOG_DOM_WARN(log_dom, __VA_ARGS__) -#define ERR(...) EINA_LOG_DOM_ERR(log_dom, __VA_ARGS__) -#define CRIT(...) EINA_LOG_DOM_CRITICAL(log_dom, __VA_ARGS__) -static int log_dom = -1; static int init_count = 0; static E_DBus_Interface *daemon_iface = NULL; @@ -78,14 +72,6 @@ e_notification_daemon_init(void) { if (init_count) return ++init_count; if (!e_dbus_init()) return 0; - log_dom = eina_log_domain_register - ("e_dbus_notification_daemon", E_DBUS_COLOR_DEFAULT); - if (log_dom < 0) - { - ERR("Impossible to create e_dbus_notification_daemon domain"); - e_dbus_shutdown(); - return 0; - } daemon_iface = e_dbus_interface_new(E_NOTIFICATION_INTERFACE); @@ -96,7 +82,6 @@ EAPI int e_notification_daemon_shutdown(void) { if (--init_count) return init_count; - eina_log_domain_unregister(log_dom); e_dbus_shutdown(); return 0; } diff --git a/src/lib/notification/e_notify_private.h b/src/lib/notification/e_notify_private.h index 2de5bd1..dfff1bc 100644 --- a/src/lib/notification/e_notify_private.h +++ b/src/lib/notification/e_notify_private.h @@ -42,11 +42,22 @@ void e_notify_unmarshal_notify_hints(E_Notification *n, DBusMessageIter *iter); void e_notify_marshal_hint_image(DBusMessageIter *iter, E_Notification_Image *img); E_Notification_Image * e_notify_unmarshal_hint_image(DBusMessageIter *iter); +extern int _e_dbus_notify_log_dom; #ifndef E_DBUS_COLOR_DEFAULT #define E_DBUS_COLOR_DEFAULT EINA_COLOR_CYAN #endif +#undef DBG +#undef INF +#undef WRN +#undef ERR + +#define DBG(...) EINA_LOG_DOM_DBG(_e_dbus_notify_log_dom, __VA_ARGS__) +#define INF(...) EINA_LOG_DOM_INFO(_e_dbus_notify_log_dom, __VA_ARGS__) +#define WRN(...) EINA_LOG_DOM_WARN(_e_dbus_notify_log_dom, __VA_ARGS__) +#define ERR(...) EINA_LOG_DOM_ERR(_e_dbus_notify_log_dom, __VA_ARGS__) + struct E_Notification_Image { int width; diff --git a/src/lib/notification/marshal.c b/src/lib/notification/marshal.c index 062a16c..4046d5d 100644 --- a/src/lib/notification/marshal.c +++ b/src/lib/notification/marshal.c @@ -12,12 +12,24 @@ e_notify_marshal_dict_variant(DBusMessageIter *iter, const char *key, char *type { DBusMessageIter entry, variant; - dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, "sv", &entry); - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); - dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, type_str, &variant); - func(&variant, data); - dbus_message_iter_close_container(&entry, &variant); - dbus_message_iter_close_container(iter, &entry); + if (dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, "sv", &entry)) + { + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + if (dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, type_str, &variant)) + { + func(&variant, data); + dbus_message_iter_close_container(&entry, &variant); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(iter, &entry); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } } void @@ -25,12 +37,24 @@ e_notify_marshal_dict_string(DBusMessageIter *iter, const char *key, const char { DBusMessageIter entry, variant; - dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, "sv", &entry); - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); - dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, "s", &variant); - dbus_message_iter_append_basic(&variant, DBUS_TYPE_STRING, &value); - dbus_message_iter_close_container(&entry, &variant); - dbus_message_iter_close_container(iter, &entry); + if (dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, "sv", &entry)) + { + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + if (dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, "s", &variant)) + { + dbus_message_iter_append_basic(&variant, DBUS_TYPE_STRING, &value); + dbus_message_iter_close_container(&entry, &variant); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(iter, &entry); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } } void @@ -40,12 +64,24 @@ e_notify_marshal_dict_byte(DBusMessageIter *iter, const char *key, char value) if (!key || !value) return; - dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, &entry); - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); - dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, "y", &variant); - dbus_message_iter_append_basic(&variant, DBUS_TYPE_BYTE, &value); - dbus_message_iter_close_container(&entry, &variant); - dbus_message_iter_close_container(iter, &entry); + if (dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, &entry)) + { + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + if (dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, "y", &variant)) + { + dbus_message_iter_append_basic(&variant, DBUS_TYPE_BYTE, &value); + dbus_message_iter_close_container(&entry, &variant); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(iter, &entry); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } } void @@ -55,12 +91,24 @@ e_notify_marshal_dict_int(DBusMessageIter *iter, const char *key, int value) if (!key || !value) return; - dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, "sv", &entry); - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); - dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, "i", &variant); - dbus_message_iter_append_basic(&variant, DBUS_TYPE_INT32, &value); - dbus_message_iter_close_container(&entry, &variant); - dbus_message_iter_close_container(iter, &entry); + if (dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, "sv", &entry)) + { + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + if (dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, "i", &variant)) + { + dbus_message_iter_append_basic(&variant, DBUS_TYPE_INT32, &value); + dbus_message_iter_close_container(&entry, &variant); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(iter, &entry); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } } void @@ -69,12 +117,16 @@ e_notify_marshal_string_array(DBusMessageIter *iter, const char **strings) const char **str; DBusMessageIter arr; - dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, "s", &arr); - - for (str = strings; *str; str++) - dbus_message_iter_append_basic(&arr, DBUS_TYPE_STRING, str); - - dbus_message_iter_close_container(iter, &arr); + if (dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, "s", &arr)) + { + for (str = strings; *str; str++) + dbus_message_iter_append_basic(&arr, DBUS_TYPE_STRING, str); + dbus_message_iter_close_container(iter, &arr); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } } void @@ -84,12 +136,16 @@ e_notify_marshal_string_list_as_array(DBusMessageIter *iter, Eina_List *strings) DBusMessageIter arr; Eina_List *l; - dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, "s", &arr); - - EINA_LIST_FOREACH (strings, l, str) - dbus_message_iter_append_basic(&arr, DBUS_TYPE_STRING, &str); - - dbus_message_iter_close_container(iter, &arr); + if (dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, "s", &arr)) + { + EINA_LIST_FOREACH (strings, l, str) + dbus_message_iter_append_basic(&arr, DBUS_TYPE_STRING, &str); + dbus_message_iter_close_container(iter, &arr); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } } Eina_List * @@ -333,39 +389,50 @@ e_notify_marshal_notify(E_Notification *n) ); dbus_message_iter_init_append(msg, &iter); - dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "s", &sub); - if (n->actions) + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "s", &sub)) { - E_Notification_Action *action; - EINA_LIST_FOREACH (n->actions, l, action) + if (n->actions) { - dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &(action->id)); - dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &(action->name)); + E_Notification_Action *action; + EINA_LIST_FOREACH (n->actions, l, action) + { + dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &(action->id)); + dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &(action->name)); + } } + dbus_message_iter_close_container(&iter, &sub); + } + else + { + ERR("dbus_message_iter_open_container() failed"); } - dbus_message_iter_close_container(&iter, &sub); /* hints */ - dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub); - if (n->hints.urgency) /* we only need to send this if its non-zero*/ - e_notify_marshal_dict_byte(&sub, "urgency", n->hints.urgency); - if (n->hints.category) - e_notify_marshal_dict_string(&sub, "category", n->hints.category); - if (n->hints.desktop) - e_notify_marshal_dict_string(&sub, "desktop_entry", n->hints.desktop); - if (n->hints.image_data) - e_notify_marshal_dict_variant(&sub, "image-data", "(iiibiiay)", E_DBUS_VARIANT_MARSHALLER(e_notify_marshal_hint_image), n->hints.image_data); - if (n->hints.sound_file) - e_notify_marshal_dict_string(&sub, "sound-file", n->hints.sound_file); - if (n->hints.suppress_sound) /* we only need to send this if its true */ - e_notify_marshal_dict_byte(&sub, "suppress-sound", n->hints.suppress_sound); - if (n->hints.x > -1 && n->hints.y > -1) + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &sub)) { - e_notify_marshal_dict_int(&sub, "x", n->hints.x); - e_notify_marshal_dict_int(&sub, "y", n->hints.y); + if (n->hints.urgency) /* we only need to send this if its non-zero*/ + e_notify_marshal_dict_byte(&sub, "urgency", n->hints.urgency); + if (n->hints.category) + e_notify_marshal_dict_string(&sub, "category", n->hints.category); + if (n->hints.desktop) + e_notify_marshal_dict_string(&sub, "desktop_entry", n->hints.desktop); + if (n->hints.image_data) + e_notify_marshal_dict_variant(&sub, "image-data", "(iiibiiay)", E_DBUS_VARIANT_MARSHALLER(e_notify_marshal_hint_image), n->hints.image_data); + if (n->hints.sound_file) + e_notify_marshal_dict_string(&sub, "sound-file", n->hints.sound_file); + if (n->hints.suppress_sound) /* we only need to send this if its true */ + e_notify_marshal_dict_byte(&sub, "suppress-sound", n->hints.suppress_sound); + if (n->hints.x > -1 && n->hints.y > -1) + { + e_notify_marshal_dict_int(&sub, "x", n->hints.x); + e_notify_marshal_dict_int(&sub, "y", n->hints.y); + } + dbus_message_iter_close_container(&iter, &sub); + } + else + { + ERR("dbus_message_iter_open_container() failed"); } - - dbus_message_iter_close_container(&iter, &sub); dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &(n->expire_timeout)); return msg; } @@ -571,17 +638,29 @@ e_notify_marshal_hint_image(DBusMessageIter *iter, E_Notification_Image *img) int data_len = 0; data_len = ((img->height - 1) * img->rowstride) + (img->width * (((img->channels * img->bits_per_sample) + 7) / 8)); - dbus_message_iter_open_container(iter, DBUS_TYPE_STRUCT, NULL, &sub); - dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->width)); - dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->height)); - dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->rowstride)); - dbus_message_iter_append_basic(&sub, DBUS_TYPE_BOOLEAN, &(img->has_alpha)); - dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->bits_per_sample)); - dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->channels)); - dbus_message_iter_open_container(&sub, DBUS_TYPE_ARRAY, "y", &arr); - dbus_message_iter_append_fixed_array(&arr, DBUS_TYPE_BYTE, &(img->data), data_len); - dbus_message_iter_close_container(&sub, &arr); - dbus_message_iter_close_container(iter, &sub); + if (dbus_message_iter_open_container(iter, DBUS_TYPE_STRUCT, NULL, &sub)) + { + dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->width)); + dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->height)); + dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->rowstride)); + dbus_message_iter_append_basic(&sub, DBUS_TYPE_BOOLEAN, &(img->has_alpha)); + dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->bits_per_sample)); + dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(img->channels)); + if (dbus_message_iter_open_container(&sub, DBUS_TYPE_ARRAY, "y", &arr)) + { + dbus_message_iter_append_fixed_array(&arr, DBUS_TYPE_BYTE, &(img->data), data_len); + dbus_message_iter_close_container(&sub, &arr); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(iter, &sub); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } } E_Notification_Image * diff --git a/src/lib/notification/notification.c b/src/lib/notification/notification.c index f6dbf66..f4d0862 100644 --- a/src/lib/notification/notification.c +++ b/src/lib/notification/notification.c @@ -10,6 +10,15 @@ static Eina_List *e_notification_action_list_new(void); static E_Notification_Action *e_notification_action_new(const char *id, const char *name); +int _e_dbus_notify_log_dom = -1; + +static void +loginit(void) +{ + if (_e_dbus_notify_log_dom == -1) + _e_dbus_notify_log_dom = eina_log_domain_register("e_dbus_notify", E_DBUS_COLOR_DEFAULT); +} + /* (con|de)structor */ EAPI E_Notification * @@ -17,6 +26,7 @@ e_notification_full_new(const char *app_name, unsigned int replaces_id, const ch { E_Notification *n; + loginit(); n = e_notification_new(); if (!n) return NULL; @@ -35,6 +45,8 @@ EAPI E_Notification * e_notification_new(void) { E_Notification *n; + + loginit(); n = calloc(1, sizeof(E_Notification)); if (!n) return NULL; n->refcount = 1; @@ -45,18 +57,21 @@ e_notification_new(void) EAPI void e_notification_ref(E_Notification *n) { + loginit(); n->refcount++; } EAPI void e_notification_unref(E_Notification *n) { + loginit(); if (--n->refcount == 0) e_notification_free(n); } EAPI void e_notification_free(E_Notification *n) { + loginit(); if (!n) return; eina_stringshare_del(n->app_name); @@ -78,30 +93,35 @@ e_notification_free(E_Notification *n) EAPI void e_notification_id_set(E_Notification *note, unsigned int id) { + loginit(); note->id = id; } EAPI void e_notification_app_name_set(E_Notification *note, const char *app_name) { + loginit(); eina_stringshare_replace(¬e->app_name, app_name); } EAPI void e_notification_app_icon_set(E_Notification *note, const char *app_icon) { + loginit(); eina_stringshare_replace(¬e->app_icon, app_icon); } EAPI void e_notification_summary_set(E_Notification *note, const char *summary) { + loginit(); eina_stringshare_replace(¬e->summary, summary); } EAPI void e_notification_body_set(E_Notification *note, const char *body) { + loginit(); eina_stringshare_replace(¬e->body, body); } @@ -110,6 +130,7 @@ e_notification_action_add(E_Notification *n, const char *action_id, const char * { E_Notification_Action *a; + loginit(); if (!n->actions) n->actions = e_notification_action_list_new(); @@ -120,18 +141,21 @@ e_notification_action_add(E_Notification *n, const char *action_id, const char * EAPI void e_notification_replaces_id_set(E_Notification *note, int replaces_id) { + loginit(); note->replaces_id = replaces_id; } EAPI void e_notification_timeout_set(E_Notification *note, int timeout) { + loginit(); note->expire_timeout = timeout; } EAPI void e_notification_closed_set(E_Notification *note, unsigned char closed) { + loginit(); note->closed = closed; } @@ -139,54 +163,63 @@ e_notification_closed_set(E_Notification *note, unsigned char closed) EAPI unsigned int e_notification_id_get(E_Notification *note) { + loginit(); return note->id; } EAPI const char * e_notification_app_name_get(E_Notification *note) { + loginit(); return note->app_name; } EAPI const char * e_notification_app_icon_get(E_Notification *note) { + loginit(); return note->app_icon; } EAPI const char * e_notification_summary_get(E_Notification *note) { + loginit(); return note->summary; } EAPI const char * e_notification_body_get(E_Notification *note) { + loginit(); return note->body; } EAPI Eina_List * e_notification_actions_get(E_Notification *note) { + loginit(); return note->actions; } EAPI int e_notification_replaces_id_get(E_Notification *note) { + loginit(); return note->replaces_id; } EAPI int e_notification_timeout_get(E_Notification *note) { + loginit(); return note->expire_timeout; } EAPI unsigned char e_notification_closed_get(E_Notification *note) { + loginit(); return note->closed; } @@ -197,6 +230,7 @@ e_notification_action_list_new(void) { Eina_List *alist; + loginit(); alist = NULL; return alist; } @@ -205,6 +239,8 @@ static E_Notification_Action * e_notification_action_new(const char *id, const char *name) { E_Notification_Action *act; + + loginit(); act = malloc(sizeof(E_Notification_Action)); act->id = eina_stringshare_add(id); act->name = eina_stringshare_add(name); @@ -214,6 +250,7 @@ e_notification_action_new(const char *id, const char *name) EAPI const char * e_notification_action_id_get(E_Notification_Action *a) { + loginit(); EINA_SAFETY_ON_NULL_RETURN_VAL(a, NULL); return a->id; } @@ -221,6 +258,7 @@ e_notification_action_id_get(E_Notification_Action *a) EAPI const char * e_notification_action_name_get(E_Notification_Action *a) { + loginit(); EINA_SAFETY_ON_NULL_RETURN_VAL(a, NULL); return a->name; } @@ -229,6 +267,7 @@ e_notification_action_name_get(E_Notification_Action *a) EAPI void e_notification_hint_transient_set(E_Notification *n, Eina_Bool transient) { + loginit(); if (transient) n->hint_flags |= E_NOTIFICATION_HINT_TRANSIENT; else @@ -238,6 +277,7 @@ e_notification_hint_transient_set(E_Notification *n, Eina_Bool transient) EAPI void e_notification_hint_resident_set(E_Notification *n, Eina_Bool resident) { + loginit(); if (resident) n->hint_flags |= E_NOTIFICATION_HINT_RESIDENT; else @@ -247,6 +287,7 @@ e_notification_hint_resident_set(E_Notification *n, Eina_Bool resident) EAPI void e_notification_hint_action_icons_set(E_Notification *n, Eina_Bool action_icons) { + loginit(); if (action_icons) n->hint_flags |= E_NOTIFICATION_HINT_ACTION_ICONS; else @@ -256,6 +297,7 @@ e_notification_hint_action_icons_set(E_Notification *n, Eina_Bool action_icons) EAPI void e_notification_hint_urgency_set(E_Notification *n, char urgency) { + loginit(); n->hints.urgency = urgency; n->hint_flags |= E_NOTIFICATION_HINT_URGENCY; } @@ -263,12 +305,14 @@ e_notification_hint_urgency_set(E_Notification *n, char urgency) EAPI void e_notification_hint_image_path_set(E_Notification *n, const char *path) { + loginit(); eina_stringshare_replace(&n->hints.image_path, path); } EAPI void e_notification_hint_category_set(E_Notification *n, const char *category) { + loginit(); eina_stringshare_replace(&n->hints.category, category); n->hint_flags |= E_NOTIFICATION_HINT_CATEGORY; } @@ -276,6 +320,7 @@ e_notification_hint_category_set(E_Notification *n, const char *category) EAPI void e_notification_hint_desktop_set(E_Notification *n, const char *desktop) { + loginit(); eina_stringshare_replace(&n->hints.desktop, desktop); n->hint_flags |= E_NOTIFICATION_HINT_DESKTOP; } @@ -283,6 +328,7 @@ e_notification_hint_desktop_set(E_Notification *n, const char *desktop) EAPI void e_notification_hint_sound_file_set(E_Notification *n, const char *sound_file) { + loginit(); eina_stringshare_replace(&n->hints.sound_file, sound_file); n->hint_flags |= E_NOTIFICATION_HINT_SOUND_FILE; } @@ -290,6 +336,7 @@ e_notification_hint_sound_file_set(E_Notification *n, const char *sound_file) EAPI void e_notification_hint_suppress_sound_set(E_Notification *n, char suppress_sound) { + loginit(); n->hints.suppress_sound = suppress_sound; n->hint_flags |= E_NOTIFICATION_HINT_SUPPRESS_SOUND; } @@ -297,6 +344,7 @@ e_notification_hint_suppress_sound_set(E_Notification *n, char suppress_sound) EAPI void e_notification_hint_xy_set(E_Notification *n, int x, int y) { + loginit(); n->hints.x = x; n->hints.y = y; n->hint_flags |= E_NOTIFICATION_HINT_XY; @@ -305,48 +353,56 @@ e_notification_hint_xy_set(E_Notification *n, int x, int y) EAPI void e_notification_hint_image_data_set(E_Notification *n, E_Notification_Image *image) { + loginit(); n->hints.image_data = image; } EAPI char e_notification_hint_urgency_get(E_Notification *n) { + loginit(); return n->hint_flags & E_NOTIFICATION_HINT_URGENCY ? n->hints.urgency : 1; } EAPI const char * e_notification_hint_category_get(E_Notification *n) { + loginit(); return n->hints.category; } EAPI const char * e_notification_hint_desktop_get(E_Notification *n) { + loginit(); return n->hints.desktop; } EAPI const char * e_notification_hint_image_path_get(E_Notification *n) { + loginit(); return n->hints.image_path; } EAPI const char * e_notification_hint_sound_file_get(E_Notification *n) { + loginit(); return n->hints.sound_file; } EAPI char e_notification_hint_suppress_sound_get(E_Notification *n) { + loginit(); return n->hints.suppress_sound; } EAPI int e_notification_hint_xy_get(E_Notification *n, int *x, int *y) { + loginit(); if (x) *x = n->hints.x; if (y) *y = n->hints.y; @@ -356,12 +412,14 @@ e_notification_hint_xy_get(E_Notification *n, int *x, int *y) EAPI E_Notification_Image * e_notification_hint_image_data_get(E_Notification *n) { + loginit(); return n->hints.image_data; } EAPI E_Notification_Image * e_notification_hint_icon_data_get(E_Notification *n) { + loginit(); return n->hints.icon_data; } @@ -370,6 +428,7 @@ e_notification_image_new(void) { E_Notification_Image *img; + loginit(); img = calloc(1, sizeof(E_Notification_Image)); img->bits_per_sample = 8; return img; @@ -383,6 +442,7 @@ e_notification_image_init(E_Notification_Image *img, Evas_Object *obj) int rowstride; int *s; + loginit(); EINA_SAFETY_ON_NULL_RETURN_VAL(img, EINA_FALSE); EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE); @@ -426,6 +486,7 @@ e_notification_image_init(E_Notification_Image *img, Evas_Object *obj) EAPI void e_notification_image_free(E_Notification_Image *img) { + loginit(); if (!img) return; free(img->data); free(img); @@ -482,6 +543,7 @@ e_notification_image_evas_object_add(Evas *evas, E_Notification_Image *img) { Evas_Object *o = NULL; + loginit(); if ((!evas) || (!img)) return NULL; o = evas_object_image_filled_add(evas); evas_object_resize(o, img->width, img->height); diff --git a/src/lib/ofono/e_ofono_element.c b/src/lib/ofono/e_ofono_element.c index 78b85c4..6bc63db 100644 --- a/src/lib/ofono/e_ofono_element.c +++ b/src/lib/ofono/e_ofono_element.c @@ -1546,28 +1546,44 @@ e_ofono_element_property_dict_set_full(E_Ofono_Element *element, const char *pro return EINA_FALSE; } - dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &variant); - - snprintf(typestr, sizeof(typestr), - (DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING - DBUS_TYPE_STRING_AS_STRING - "%c" - DBUS_DICT_ENTRY_END_CHAR_AS_STRING), - type); - - dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, typestr, &dict); - dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry); - - dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); - - if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) - dbus_message_iter_append_basic(&entry, type, &value); + if (dbus_message_iter_open_container(&itr, DBUS_TYPE_VARIANT, typestr, &variant)) + { + snprintf(typestr, sizeof(typestr), + (DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + "%c" + DBUS_DICT_ENTRY_END_CHAR_AS_STRING), + type); + + if (dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, typestr, &dict)) + { + if (dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &entry)) + { + dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + + if ((type == DBUS_TYPE_STRING) || (type == DBUS_TYPE_OBJECT_PATH)) + dbus_message_iter_append_basic(&entry, type, &value); + else + dbus_message_iter_append_basic(&entry, type, value); + + dbus_message_iter_close_container(&dict, &entry); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(&variant, &dict); + } + else + { + ERR("dbus_message_iter_open_container() failed"); + } + dbus_message_iter_close_container(&itr, &variant); + } else - dbus_message_iter_append_basic(&entry, type, value); - - dbus_message_iter_close_container(&dict, &entry); - dbus_message_iter_close_container(&variant, &dict); - dbus_message_iter_close_container(&itr, &variant); + { + ERR("dbus_message_iter_open_container() failed"); + } return e_ofono_element_message_send (element, name, NULL, NULL, msg, diff --git a/src/lib/ukit/e_udisks.c b/src/lib/ukit/e_udisks.c index a7fa08b..7a0dd24 100644 --- a/src/lib/ukit/e_udisks.c +++ b/src/lib/ukit/e_udisks.c @@ -84,16 +84,21 @@ e_udisks_volume_mount(E_DBus_Connection *conn, const char *udi, const char *fsty dbus_message_iter_init_append(msg, &iter); dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &fstype); - dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter); - - if (options) + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter)) { - const char *opt; - - EINA_LIST_FOREACH(options, l, opt) - dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + if (options) + { + const char *opt; + + EINA_LIST_FOREACH(options, l, opt) + dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + } + dbus_message_iter_close_container(&iter, &subiter); + } + else + { + ERR("dbus_message_iter_open_container() failed"); } - dbus_message_iter_close_container(&iter, &subiter) ; ret = e_dbus_method_call_send(conn, msg, NULL, NULL, NULL, -1, NULL); dbus_message_unref(msg); @@ -124,16 +129,22 @@ e_udisks_volume_unmount(E_DBus_Connection *conn, const char *udi, Eina_List *opt msg = e_ukit_device_call_new(udi, "FilesystemUnmount"); dbus_message_iter_init_append(msg, &iter); - dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter); - if (options) + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter)) { - const char *opt; - - EINA_LIST_FOREACH(options, l, opt) - dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + if (options) + { + const char *opt; + + EINA_LIST_FOREACH(options, l, opt) + dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + } + dbus_message_iter_close_container(&iter, &subiter); } - dbus_message_iter_close_container(&iter, &subiter) ; - + else + { + ERR("dbus_message_iter_open_container() failed"); + } + ret = e_dbus_method_call_send(conn, msg, NULL, NULL, NULL, -1, NULL); dbus_message_unref(msg); return ret; @@ -161,16 +172,22 @@ e_udisks_volume_eject(E_DBus_Connection *conn, const char *udi, Eina_List *optio msg = e_ukit_device_call_new(udi, "DriveEject"); dbus_message_iter_init_append(msg, &iter); - dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter); - if (options) + if (dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &subiter)) { - const char *opt; - - EINA_LIST_FOREACH(options, l, opt) - dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + if (options) + { + const char *opt; + + EINA_LIST_FOREACH(options, l, opt) + dbus_message_iter_append_basic(&subiter, DBUS_TYPE_STRING, &opt); + } + dbus_message_iter_close_container(&iter, &subiter); } - dbus_message_iter_close_container(&iter, &subiter) ; - + else + { + ERR("dbus_message_iter_open_container() failed"); + } + ret = e_dbus_method_call_send(conn, msg, NULL, NULL, NULL, -1, NULL); dbus_message_unref(msg); return ret;