packages/net/gnunet/patches/0006-enhance-gnunet-qr-to-support-passing-arguments-beyon.patch
Daniel Golle 8f784b90fd gnunet: update to version 0.12.0
Also include a bunch of upstream patches to make things build.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2019-12-20 13:26:14 +02:00

78 lines
2.5 KiB
Diff

From 01e118581d800cf7c1b6f03b27679b45448fb82c Mon Sep 17 00:00:00 2001
From: Christian Grothoff <christian@grothoff.org>
Date: Mon, 16 Dec 2019 17:29:38 +0100
Subject: [PATCH 06/12] 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<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);
--
2.24.1