From: Christian Grothoff Date: Mon, 16 Dec 2019 16:29:38 +0000 (+0100) Subject: enhance gnunet-qr to support passing arguments beyond just the URI to commands X-Git-Tag: v0.12.0~9 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=01e118581d800cf7c1b6f03b27679b45448fb82c;p=oweals%2Fgnunet.git enhance gnunet-qr to support passing arguments beyond just the URI to commands --- 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