gnunet

Main GNUnet Logic
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/namestore/namestore.conf.in | 2+-
Msrc/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 @@ -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);