diff options
author | Anders Carlsson <andersca@codefactory.se> | 2003-02-21 20:51:34 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@codefactory.se> | 2003-02-21 20:51:34 +0000 |
commit | 92f7d50b3b420670732a55bf15f7b343b2ce9fe6 (patch) | |
tree | 9ebb3ff7f3ae264be54b6336cbf1ae192340d7dc /dbus/dbus-message.c | |
parent | fdb3ecc33366edc475e684baa8adb3c933563f0d (diff) |
2003-02-21 Anders Carlsson <andersca@codefactory.se>
* 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.
Diffstat (limited to 'dbus/dbus-message.c')
-rw-r--r-- | dbus/dbus-message.c | 61 |
1 files changed, 58 insertions, 3 deletions
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)) |