From 012cc5ddc7035851e0cc4411f2ea4fc47c551629 Mon Sep 17 00:00:00 2001 From: Patrik Flykt Date: Tue, 19 Feb 2013 14:40:44 +0200 Subject: client: Return the number of added array entries Check that the array element is non-NULL, does not start with '--' indicating a new option or that the array length is not exhausted. Return the number of array elements added. --- client/services.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'client/services.c') diff --git a/client/services.c b/client/services.c index a5450006..c8343dd5 100644 --- a/client/services.c +++ b/client/services.c @@ -62,11 +62,11 @@ int parse_boolean(char *arg) return -1; } -static void append_property_array(DBusMessageIter *iter, char *property, +static int append_property_array(DBusMessageIter *iter, char *property, char **data, int num_args) { DBusMessageIter value, array; - int i; + int i = 0; dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &property); @@ -74,13 +74,18 @@ static void append_property_array(DBusMessageIter *iter, char *property, dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &array); - for (i = 0; i < num_args; i++) { + while (data[i] != NULL && strncmp(data[i], "--", 2) != 0) { dbus_message_iter_append_basic(&array, DBUS_TYPE_STRING, &data[i]); - printf("Added: %s\n", data[i]); + if (num_args > 0 && i == num_args) + break; + i++; } + dbus_message_iter_close_container(&value, &array); dbus_message_iter_close_container(iter, &value); + + return i; } static void append_property_dict(DBusMessageIter *iter, char *property, -- cgit v1.2.3