aboutsummaryrefslogtreecommitdiff
path: root/src/util/program.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-06-25 15:37:07 +0000
committerChristian Grothoff <christian@grothoff.org>2010-06-25 15:37:07 +0000
commit94f01bdd2fda575769f01f8072689fa6936af8f4 (patch)
treec2ffd2a36b7babe0b47335f407b3f20e71bb25ba /src/util/program.c
parent2d4ae427e8d2a4bc305c42100d5cb35a75916879 (diff)
downloadgnunet-94f01bdd2fda575769f01f8072689fa6936af8f4.tar.gz
gnunet-94f01bdd2fda575769f01f8072689fa6936af8f4.zip
cleaning argz mess
Diffstat (limited to 'src/util/program.c')
-rw-r--r--src/util/program.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/util/program.c b/src/util/program.c
index bbedc05d0..88b67a21e 100644
--- a/src/util/program.c
+++ b/src/util/program.c
@@ -35,15 +35,6 @@
35#include "gnunet_scheduler_lib.h" 35#include "gnunet_scheduler_lib.h"
36#include <gcrypt.h> 36#include <gcrypt.h>
37 37
38#if HAVE_ARGZ_H
39#include <argz.h>
40#else
41#include "program_lib_strnlen.c"
42#include "program_lib_strndup.c"
43#include "program_lib_mempcpy.c"
44#include "program_lib_argz.c"
45#endif
46
47/** 38/**
48 * Context for the command. 39 * Context for the command.
49 */ 40 */
@@ -156,19 +147,27 @@ GNUNET_PROGRAM_run (int argc,
156 gargs = getenv ("GNUNET_ARGS"); 147 gargs = getenv ("GNUNET_ARGS");
157 if (gargs != NULL) 148 if (gargs != NULL)
158 { 149 {
159 char *gargz;
160 size_t gargl;
161 char **gargv; 150 char **gargv;
151 unsigned int gargc;
162 int i; 152 int i;
163 153 char *tok;
164 argz_create_sep (gargs, ' ', &gargz, &gargl); 154 char *cargs;
155
156 gargv = NULL;
157 gargc = 0;
165 for (i=0;i<argc;i++) 158 for (i=0;i<argc;i++)
166 argz_insert (&gargz, &gargl, gargz, argv[i]); 159 GNUNET_array_append (gargv, gargc, GNUNET_strdup (argv[i]));
167 gargv = GNUNET_malloc (sizeof (char*) * (gargl+1)); 160 cargs = GNUNET_strdup (gargs);
168 argz_extract (gargz, gargl, gargv); 161 tok = strtok (cargs, " ");
169 argc = argz_count (gargz, gargl); 162 while (NULL != tok)
170 free (gargz); 163 {
164 GNUNET_array_append (gargv, gargc, GNUNET_strdup (tok));
165 tok = strtok (NULL, " ");
166 }
167 GNUNET_free (cargs);
168 GNUNET_array_append (gargv, gargc, NULL);
171 argv = (char *const *) gargv; 169 argv = (char *const *) gargv;
170 argc = gargc - 1;
172 } 171 }
173 memset (&cc, 0, sizeof (cc)); 172 memset (&cc, 0, sizeof (cc));
174 loglev = NULL; 173 loglev = NULL;