summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2013-02-19 15:13:03 +0200
committerPatrik Flykt <patrik.flykt@linux.intel.com>2013-02-21 16:22:32 +0200
commitfc2367a87a33c71c74c462ec226fbaed1093e2b2 (patch)
tree9b3f69cd5009a0a4390465528d41e867ea9e4e5c /client
parentae0b3b71f411be9daf9b623056925286da9ce550 (diff)
downloadconnman-fc2367a87a33c71c74c462ec226fbaed1093e2b2.tar.gz
connman-fc2367a87a33c71c74c462ec226fbaed1093e2b2.tar.bz2
connman-fc2367a87a33c71c74c462ec226fbaed1093e2b2.zip
client: Return the number of proxy arguments discovered
Diffstat (limited to 'client')
-rw-r--r--client/data_manager.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/client/data_manager.c b/client/data_manager.c
index 8dae718f..96374eca 100644
--- a/client/data_manager.c
+++ b/client/data_manager.c
@@ -56,7 +56,8 @@ int store_proxy_input(DBusConnection *connection, DBusMessage *message,
gchar **servers = NULL;
gchar **excludes = NULL;
- for (i = 0; strcmp(argv[i], "excludes") != 0; i++) {
+ for (i = 0; argv[i] != NULL && strcmp(argv[i], "excludes") != 0 &&
+ strncmp(argv[i], "--", 2) != 0; i++) {
servers = g_try_realloc(servers, (i + 1) * sizeof(char *));
if (servers == NULL) {
fprintf(stderr, "Could not allocate memory for list\n");
@@ -70,7 +71,8 @@ int store_proxy_input(DBusConnection *connection, DBusMessage *message,
goto free_servers;
}
}
- for (j = 0; j + (i + 1) != num_args; j++) {
+ for (j = 0; j + (i + 1) != num_args && argv[j + (i + 1)] != NULL &&
+ strncmp(argv[j + i + 1], "--", 2) != 0; j++) {
excludes = g_try_realloc(excludes, (j + 1) * sizeof(char *));
if (excludes == NULL) {
fprintf(stderr, "Could not allocate memory for list\n");
@@ -91,7 +93,14 @@ free_servers:
g_free(servers[k]);
g_free(servers);
- return error;
+ if (error < 0)
+ return error;
+
+ if (i > 0)
+ i++;
+ if (j > 0)
+ j++;
+ return i + j;
}
int connect_service(DBusConnection *connection, char *name)