summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2013-02-19 14:40:44 +0200
committerPatrik Flykt <patrik.flykt@linux.intel.com>2013-02-21 16:22:29 +0200
commit012cc5ddc7035851e0cc4411f2ea4fc47c551629 (patch)
treecc307fd620a3d35c25201a54affbdc1426890464
parent6375d270075a0574d6b66e26ee5128d6fda8b7ba (diff)
downloadconnman-012cc5ddc7035851e0cc4411f2ea4fc47c551629.tar.gz
connman-012cc5ddc7035851e0cc4411f2ea4fc47c551629.tar.bz2
connman-012cc5ddc7035851e0cc4411f2ea4fc47c551629.zip
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.
-rw-r--r--client/services.c13
1 files changed, 9 insertions, 4 deletions
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,