commit 01e118581d800cf7c1b6f03b27679b45448fb82c
parent 73ee949868200082b7e9131d2f410f289fd1c416
Author: Christian Grothoff <christian@grothoff.org>
Date: Mon, 16 Dec 2019 17:29:38 +0100
enhance gnunet-qr to support passing arguments beyond just the URI to commands
Diffstat:
2 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/src/namestore/namestore.conf.in b/src/namestore/namestore.conf.in
@@ -36,7 +36,7 @@ TEMPORARY_TABLE = NO
ASYNC_COMMIT = NO
[uri]
-gns = gnunet-namestore
+gns = gnunet-namestore -u
[fcfsd]
diff --git a/src/util/gnunet-qr.c b/src/util/gnunet-qr.c
@@ -141,15 +141,37 @@ gnunet_uri (void *cls,
GNUNET_DISK_pipe_handle (sigpipe, GNUNET_DISK_PIPE_END_READ),
&maint_child_death,
NULL);
- p = GNUNET_OS_start_process (GNUNET_NO,
- 0,
- NULL,
- NULL,
- NULL,
- program,
- program,
- orig_uri,
- NULL);
+ {
+ char **argv = NULL;
+ unsigned int argc = 0;
+ char *u = GNUNET_strdup (orig_uri);
+
+ GNUNET_array_append (argv,
+ argc,
+ GNUNET_strdup (program));
+ for (const char *tok = strtok (u, " ");
+ NULL != tok;
+ tok = strtok (NULL, " "))
+ GNUNET_array_append (argv,
+ argc,
+ GNUNET_strdup (tok));
+ GNUNET_array_append (argv,
+ argc,
+ NULL);
+ p = GNUNET_OS_start_process_vap (GNUNET_NO,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ program,
+ argv);
+ for (unsigned int i = 0; i<argc; i++)
+ GNUNET_free (argv[i]);
+ GNUNET_array_grow (argv,
+ argc,
+ 0);
+ GNUNET_free (orig_uri);
+ }
GNUNET_free (program);
if (NULL == p)
GNUNET_SCHEDULER_cancel (rt);