summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-message.c
diff options
context:
space:
mode:
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))