From 92f7d50b3b420670732a55bf15f7b343b2ce9fe6 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Fri, 21 Feb 2003 20:51:34 +0000 Subject: 2003-02-21 Anders Carlsson * dbus/dbus-marshal.c: (_dbus_demarshal_string_array): Make string arrays NULL-terminated. * dbus/dbus-memory.c: (dbus_free_string_array): * dbus/dbus-memory.h: New function for freeing NULL-terminated string arrays. * dbus/dbus-message-builder.c: (append_quoted_string), (_dbus_message_data_load): Add support for array types. * dbus/dbus-message.c: (check_message_handling): Add more types as test cases. * dbus/dbus-sysdeps.c: (_dbus_string_parse_int), (_dbus_string_parse_double): Add the start offset to the end offset. * test/data/valid-messages/lots-of-arguments.message: New test message with lots of arguments. --- dbus/dbus-message.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) (limited to 'dbus/dbus-message.c') diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index 0c6b72d1..c7a33c23 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -1909,9 +1909,6 @@ dbus_message_iter_get_byte_array (DBusMessageIter *iter, * Note that you need to check that the iterator points * to a byte array prior to using this function. * - * @todo this function should probably take "char **" as - * an out param argument, and return boolean or result code. - * * @param iter the iterator * @param len return location for length of byte array * @returns the byte array @@ -2715,6 +2712,17 @@ check_message_handling (DBusMessage *message) { switch (type) { + case DBUS_TYPE_NIL: + break; + case DBUS_TYPE_INT32: + dbus_message_iter_get_int32 (iter); + break; + case DBUS_TYPE_UINT32: + dbus_message_iter_get_uint32 (iter); + break; + case DBUS_TYPE_DOUBLE: + dbus_message_iter_get_double (iter); + break; case DBUS_TYPE_STRING: { char *str; @@ -2722,6 +2730,53 @@ check_message_handling (DBusMessage *message) dbus_free (str); } break; + case DBUS_TYPE_INT32_ARRAY: + { + dbus_int32_t *values; + int len; + + if (!dbus_message_iter_get_int32_array (iter, &values, &len)) + return FALSE; + + dbus_free (values); + } + break; + case DBUS_TYPE_UINT32_ARRAY: + { + dbus_uint32_t *values; + int len; + + if (!dbus_message_iter_get_uint32_array (iter, &values, &len)) + return FALSE; + + dbus_free (values); + } + break; + case DBUS_TYPE_DOUBLE_ARRAY: + { + double *values; + int len; + + if (!dbus_message_iter_get_double_array (iter, &values, &len)) + return FALSE; + + dbus_free (values); + } + break; + case DBUS_TYPE_STRING_ARRAY: + { + char **values; + int len; + + if (!dbus_message_iter_get_string_array (iter, &values, &len)) + return FALSE; + + dbus_free_string_array (values); + } + break; + + default: + break; } if (!dbus_message_iter_next (iter)) -- cgit