Fixed a couple of D-BUS 0.3x bugs. Several remain though.

This commit is contained in:
Christian Hammond 2005-07-17 01:25:52 +00:00
parent 621266fc7b
commit 55d6f9dfcc
3 changed files with 93 additions and 31 deletions

View File

@ -1,3 +1,9 @@
Sat Jul 16 02:51:42 PDT 2005 Christian Hammond <chipx86@gnupdate.org>
* libnotify/dbus-compat.h:
* libnotify/notify.c:
- Fixed a couple of D-BUS 0.3x bugs. Several remain though.
Tue Jul 12 12:29:08 PDT 2005 Christian Hammond <chipx86@chipx86.com> Tue Jul 12 12:29:08 PDT 2005 Christian Hammond <chipx86@chipx86.com>
* AUTHORS: * AUTHORS:

View File

@ -40,20 +40,59 @@
dbus_message_iter_append_basic((iter), DBUS_TYPE_DOUBLE, &(val)) dbus_message_iter_append_basic((iter), DBUS_TYPE_DOUBLE, &(val))
# define _notify_dbus_message_iter_append_byte_array(iter, data, len) \ # define _notify_dbus_message_iter_append_byte_array(iter, data, len) \
dbus_message_iter_append_fixed_array((iter), DBUS_TYPE_BYTE, &(data), \ { \
(len)) DBusMessageIter array_iter; \
dbus_message_iter_open_container((iter), DBUS_TYPE_ARRAY, \
DBUS_TYPE_BYTE_AS_STRING, \
&array_iter); \
dbus_message_iter_append_fixed_array(&array_iter, DBUS_TYPE_BYTE, \
&(data), (len)); \
dbus_message_iter_close_container((iter), &array_iter); \
}
# define _notify_dbus_message_iter_append_boolean_array(iter, data, len) \ # define _notify_dbus_message_iter_append_boolean_array(iter, data, len) \
dbus_message_iter_append_fixed_array((iter), DBUS_TYPE_BOOLEAN, &(data), \ { \
(len)) DBusMessageIter array_iter; \
dbus_message_iter_open_container((iter), DBUS_TYPE_ARRAY, \
DBUS_TYPE_BOOLEAN_AS_STRING, \
&array_iter); \
dbus_message_iter_append_fixed_array(&array_iter, DBUS_TYPE_BOOLEAN, \
&(data), (len)); \
dbus_message_iter_close_container((iter), &array_iter); \
}
# define _notify_dbus_message_iter_append_int32_array(iter, data, len) \ # define _notify_dbus_message_iter_append_int32_array(iter, data, len) \
dbus_message_iter_append_fixed_array((iter), DBUS_TYPE_INT32, &(data), \ { \
(len)) DBusMessageIter array_iter; \
dbus_message_iter_open_container((iter), DBUS_TYPE_ARRAY, \
DBUS_TYPE_INT32_AS_STRING, \
&array_iter); \
dbus_message_iter_append_fixed_array(&array_iter, DBUS_TYPE_INT32, \
&(data), (len)); \
dbus_message_iter_close_container((iter), &array_iter); \
}
# define _notify_dbus_message_iter_append_uint32_array(iter, data, len) \ # define _notify_dbus_message_iter_append_uint32_array(iter, data, len) \
dbus_message_iter_append_fixed_array((iter), DBUS_TYPE_UINT32, &(data), \ { \
(len)) DBusMessageIter array_iter; \
dbus_message_iter_open_container((iter), DBUS_TYPE_ARRAY, \
DBUS_TYPE_UINT32_AS_STRING, \
&array_iter); \
dbus_message_iter_append_fixed_array(&array_iter, DBUS_TYPE_UINT32, \
&(data), (len)); \
dbus_message_iter_close_container((iter), &array_iter); \
}
# define _notify_dbus_message_iter_append_string_array(iter, data, len) \ # define _notify_dbus_message_iter_append_string_array(iter, data, len) \
dbus_message_iter_append_fixed_array((iter), DBUS_TYPE_STRING, \ { \
&(data), (len)) DBusMessageIter array_iter; \
int i; \
dbus_message_iter_open_container((iter), DBUS_TYPE_ARRAY, \
DBUS_TYPE_STRING_AS_STRING, \
&array_iter); \
for (i = 0; i < len; i++) \
{ \
dbus_message_iter_append_basic(&array_iter, DBUS_TYPE_STRING, \
&((char **)data)[i]); \
} \
dbus_message_iter_close_container((iter), &array_iter); \
}
# define _notify_dbus_message_iter_get_byte(iter, retvar) \ # define _notify_dbus_message_iter_get_byte(iter, retvar) \
dbus_message_iter_get_basic((iter), &(retvar)) dbus_message_iter_get_basic((iter), &(retvar))
@ -68,16 +107,21 @@
# define _notify_dbus_message_iter_get_double(iter, retvar) \ # define _notify_dbus_message_iter_get_double(iter, retvar) \
dbus_message_iter_get_basic((iter), &(retvar)) dbus_message_iter_get_basic((iter), &(retvar))
# define _notify_dbus_message_iter_get_byte_array \ # define _notify_dbus_message_iter_get_fixed_array(iter, data, len) \
dbus_message_iter_get_fixed_array { \
# define _notify_dbus_message_iter_get_boolean_array \ DBusMessageIter array_iter; \
dbus_message_iter_get_fixed_array dbus_message_iter_recurse((iter), &array_iter); \
# define _notify_dbus_message_iter_get_int32_array \ dbus_message_iter_get_fixed_array(&array_iter, (data), (len)); \
dbus_message_iter_get_fixed_array }
# define _notify_dbus_message_iter_get_uint32_array \
dbus_message_iter_get_fixed_array # define _notify_dbus_message_iter_get_byte_array(iter, data, len) \
# define _notify_dbus_message_iter_get_string_array(iter, array, num_items) \ _notify_dbus_message_iter_get_fixed_array((iter), (data), (len))
dbus_message_iter_get_fixed_array((iter), (array), (num_items)) # define _notify_dbus_message_iter_get_boolean_array(iter, data, len) \
_notify_dbus_message_iter_get_fixed_array((iter), (data), (len))
# define _notify_dbus_message_iter_get_int32_array(iter, data, len) \
_notify_dbus_message_iter_get_fixed_array((iter), (data), (len))
# define _notify_dbus_message_iter_get_uint32_array(iter, data, len) \
_notify_dbus_message_iter_get_fixed_array((iter), (data), (len))
#else /* D-BUS < 0.30 */ #else /* D-BUS < 0.30 */
# define DBUS_INTERFACE_DBUS DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS # define DBUS_INTERFACE_DBUS DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS
@ -85,10 +129,6 @@
# define DBUS_PATH_DBUS DBUS_PATH_ORG_FREEDESKTOP_DBUS # define DBUS_PATH_DBUS DBUS_PATH_ORG_FREEDESKTOP_DBUS
# define DBUS_ERROR_SERVICE_UNKNOWN DBUS_ERROR_SERVICE_DOES_NOT_EXIST # define DBUS_ERROR_SERVICE_UNKNOWN DBUS_ERROR_SERVICE_DOES_NOT_EXIST
# define dbus_bus_start_service_by_name dbus_bus_activate_service
# define dbus_message_iter_close_container(iter, container_iter)
# define dbus_message_iter_init_append(msg, iter) \ # define dbus_message_iter_init_append(msg, iter) \
dbus_message_iter_init(msg, iter) dbus_message_iter_init(msg, iter)
@ -137,8 +177,6 @@
dbus_message_iter_get_int32_array((iter), (data), (len)) dbus_message_iter_get_int32_array((iter), (data), (len))
# define _notify_dbus_message_iter_get_uint32_array(iter, data, len) \ # define _notify_dbus_message_iter_get_uint32_array(iter, data, len) \
dbus_message_iter_get_uint32_array((iter), (data), (len)) dbus_message_iter_get_uint32_array((iter), (data), (len))
# define _notify_dbus_message_iter_get_string_array(iter, data, len) \
dbus_message_iter_get_string_array((iter), (data), (len))
#endif #endif
#endif /* NOTIFY_DBUS_COMPAT_H_ */ #endif /* NOTIFY_DBUS_COMPAT_H_ */

View File

@ -468,8 +468,12 @@ notify_get_server_caps(void)
DBusMessageIter iter; DBusMessageIter iter;
DBusError error; DBusError error;
GList *caps = NULL; GList *caps = NULL;
#if NOTIFY_CHECK_DBUS_VERSION(0, 30)
DBusMessageIter array_iter;
#else
char **temp_array; char **temp_array;
int num_items, i; int num_items, i;
#endif
message = _notify_dbus_message_new("GetCapabilities", NULL); message = _notify_dbus_message_new("GetCapabilities", NULL);
@ -495,15 +499,29 @@ notify_get_server_caps(void)
dbus_message_iter_init(reply, &iter); dbus_message_iter_init(reply, &iter);
_notify_dbus_message_iter_get_string_array(&iter, &temp_array, #if NOTIFY_CHECK_DBUS_VERSION(0, 30)
&num_items); dbus_message_iter_recurse(&iter, &array_iter);
dbus_message_unref(reply); while (dbus_message_iter_get_arg_type(&array_iter) == DBUS_TYPE_STRING)
{
const char *value;
dbus_message_iter_get_basic(&array_iter, &value);
caps = g_list_append(caps, g_strdup(value));
dbus_message_iter_next(&array_iter);
}
#else /* D-BUS < 0.30 */
dbus_message_iter_get_string_array(&iter, &temp_array, &num_items);
for (i = 0; i < num_items; i++) for (i = 0; i < num_items; i++)
caps = g_list_append(caps, g_strdup(temp_array[i])); caps = g_list_append(caps, g_strdup(temp_array[i]));
dbus_free_string_array(temp_array); dbus_free_string_array(temp_array);
#endif /* D-BUS < 0.30 */
dbus_message_unref(reply);
return caps; return caps;
} }
@ -674,8 +692,8 @@ hint_foreach_func(const gchar *key, const gchar *value, DBusMessageIter *iter)
dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL,
&entry_iter); &entry_iter);
dbus_message_iter_append_basic(&entry_iter, DBUS_TYPE_STRING, key); dbus_message_iter_append_basic(&entry_iter, DBUS_TYPE_STRING, &key);
dbus_message_iter_append_basic(&entry_iter, DBUS_TYPE_STRING, value); dbus_message_iter_append_basic(&entry_iter, DBUS_TYPE_STRING, &value);
dbus_message_iter_close_container(iter, &entry_iter); dbus_message_iter_close_container(iter, &entry_iter);
#else #else
dbus_message_iter_append_dict_key(iter, key); dbus_message_iter_append_dict_key(iter, key);