From 01e118581d800cf7c1b6f03b27679b45448fb82c Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 16 Dec 2019 17:29:38 +0100 Subject: [PATCH] enhance gnunet-qr to support passing arguments beyond just the URI to commands --- src/namestore/namestore.conf.in | 2 +- src/util/gnunet-qr.c | 40 +++++++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/namestore/namestore.conf.in b/src/namestore/namestore.conf.in index b5fb45abc..e6cc74aec 100644 --- 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 index cdeea4db1..2dcfc12db 100644 --- 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