summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-message.c
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@codefactory.se>2003-02-21 20:51:34 +0000
committerAnders Carlsson <andersca@codefactory.se>2003-02-21 20:51:34 +0000
commit92f7d50b3b420670732a55bf15f7b343b2ce9fe6 (patch)
tree9ebb3ff7f3ae264be54b6336cbf1ae192340d7dc /dbus/dbus-message.c
parentfdb3ecc33366edc475e684baa8adb3c933563f0d (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.c61
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))