bugfix
authorChristian Grothoff <christian@grothoff.org>
Mon, 16 Nov 2009 08:32:27 +0000 (08:32 +0000)
committerChristian Grothoff <christian@grothoff.org>
Mon, 16 Nov 2009 08:32:27 +0000 (08:32 +0000)
src/util/Makefile.am
src/util/program.c
src/util/pseudonym.c

index 47744001b3f3bab8839259fe8e30604bdb998b7f..c85a2cd758811a1dac8aa5f2b56811fa3038d14e 100644 (file)
@@ -362,6 +362,7 @@ perf_crypto_hash_LDADD = \
 
 
 EXTRA_DIST = \
+  program_lib_argz.c \
   test_configuration_data.conf \
   test_container_meta_data_image.jpg \
   test_program_data.conf \
index 695a6f9bc704826cb2507e4c8adf2de337ec0599..f74da8c7f5dba0ea2803a704668a1fe4d63b937f 100644 (file)
 #include "gnunet_scheduler_lib.h"
 #include <gcrypt.h>
 
+#if HAVE_ARGZ_H
+#include <argz.h>
+#else
+#include "program_lib_argz.c"
+#endif
+
 /**
  * Context for the command.
  */
@@ -139,7 +145,25 @@ GNUNET_PROGRAM_run (int argc,
     GNUNET_GETOPT_OPTION_VERSION (PACKAGE_VERSION)
   };
   struct GNUNET_GETOPT_CommandLineOption *allopts;
+  const char *gargs;
 
+  gargs = getenv ("GNUNET_ARGS");
+  if (gargs != NULL)
+    {
+      char *gargz;
+      size_t gargl;
+      char **gargv;
+      int i;
+
+      argz_create_sep (gargs, ' ', &gargz, &gargl);
+      for (i=0;i<argc;i++)
+       argz_insert (&gargz, &gargl, gargz, argv[i]);
+      gargv = GNUNET_malloc (sizeof (char*) * (gargl+1));
+      argz_extract (gargz, gargl, gargv);
+      argc = argz_count (gargz, gargl);
+      free (gargz);
+      argv = (char *const *) gargv;
+    }
   memset (&cc, 0, sizeof (cc));
   loglev = NULL;
   cc.task = task;
index 91bdd6c9d18944620df954625f44a14ce128f00e..67bca2e4ad8908da18ebba75be07307af0feaebc 100644 (file)
@@ -409,7 +409,7 @@ list_pseudonym_helper (void *cls, const char *fullname)
   int rating;
   struct GNUNET_CONTAINER_MetaData *meta;
   const char *fn;
-  const char *str = "not null";
+  char *str;
 
   if (strlen (fullname) < sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded))
     return GNUNET_OK;
@@ -421,8 +421,10 @@ list_pseudonym_helper (void *cls, const char *fullname)
   ret = GNUNET_OK;
   if (GNUNET_OK != GNUNET_CRYPTO_hash_from_string (fn, &id))
     return GNUNET_OK;           /* invalid name */
+  str = NULL;
   if (GNUNET_OK != read_info (c->cfg, &id, &meta, &rating, &str))
     return GNUNET_OK;           /* ignore entry */
+  GNUNET_free_non_null (str);
   if (c->iterator != NULL)
     ret = c->iterator (c->closure, &id, meta, rating);
   GNUNET_CONTAINER_meta_data_destroy (meta);