diff options
author | Christian Grothoff <christian@grothoff.org> | 2009-06-09 22:57:12 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2009-06-09 22:57:12 +0000 |
commit | ca243fd8b923ae7b073327be4e080ab55dd466e9 (patch) | |
tree | 5879ddadbd97fdb209752ad9a778e74a9f721f8d /src/arm/gnunet-service-arm.c | |
parent | b5bba0fd1a50338ea57d0a19e2fa64f2951382a1 (diff) | |
download | gnunet-ca243fd8b923ae7b073327be4e080ab55dd466e9.tar.gz gnunet-ca243fd8b923ae7b073327be4e080ab55dd466e9.zip |
add possibility of passing extra options via configuration
Diffstat (limited to 'src/arm/gnunet-service-arm.c')
-rw-r--r-- | src/arm/gnunet-service-arm.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/arm/gnunet-service-arm.c b/src/arm/gnunet-service-arm.c index c9736982f..8f3406b38 100644 --- a/src/arm/gnunet-service-arm.c +++ b/src/arm/gnunet-service-arm.c | |||
@@ -257,9 +257,11 @@ static void | |||
257 | start_process (struct ServiceList *sl) | 257 | start_process (struct ServiceList *sl) |
258 | { | 258 | { |
259 | char *loprefix; | 259 | char *loprefix; |
260 | char *options; | ||
260 | char **argv; | 261 | char **argv; |
261 | unsigned int argv_size; | 262 | unsigned int argv_size; |
262 | char *lopos; | 263 | char *lopos; |
264 | char *optpos; | ||
263 | const char *firstarg; | 265 | const char *firstarg; |
264 | int use_debug; | 266 | int use_debug; |
265 | 267 | ||
@@ -268,6 +270,10 @@ start_process (struct ServiceList *sl) | |||
268 | GNUNET_CONFIGURATION_get_value_string (cfg, | 270 | GNUNET_CONFIGURATION_get_value_string (cfg, |
269 | sl->name, "PREFIX", &loprefix)) | 271 | sl->name, "PREFIX", &loprefix)) |
270 | loprefix = GNUNET_strdup (prefix_command); | 272 | loprefix = GNUNET_strdup (prefix_command); |
273 | if (GNUNET_OK != | ||
274 | GNUNET_CONFIGURATION_get_value_string (cfg, | ||
275 | sl->name, "OPTIONS", &options)) | ||
276 | options = GNUNET_strdup (""); | ||
271 | use_debug = GNUNET_CONFIGURATION_get_value_yesno (cfg, sl->name, "DEBUG"); | 277 | use_debug = GNUNET_CONFIGURATION_get_value_yesno (cfg, sl->name, "DEBUG"); |
272 | 278 | ||
273 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Starting service `%s'\n"), sl->name); | 279 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Starting service `%s'\n"), sl->name); |
@@ -286,6 +292,13 @@ start_process (struct ServiceList *sl) | |||
286 | argv_size++; | 292 | argv_size++; |
287 | lopos++; | 293 | lopos++; |
288 | } | 294 | } |
295 | optpos = options; | ||
296 | while ('\0' != *optpos) | ||
297 | { | ||
298 | if (*optpos == ' ') | ||
299 | argv_size++; | ||
300 | optpos++; | ||
301 | } | ||
289 | firstarg = NULL; | 302 | firstarg = NULL; |
290 | argv = GNUNET_malloc (argv_size * sizeof (char *)); | 303 | argv = GNUNET_malloc (argv_size * sizeof (char *)); |
291 | argv_size = 0; | 304 | argv_size = 0; |
@@ -316,6 +329,21 @@ start_process (struct ServiceList *sl) | |||
316 | argv[argv_size++] = "-L"; | 329 | argv[argv_size++] = "-L"; |
317 | argv[argv_size++] = "DEBUG"; | 330 | argv[argv_size++] = "DEBUG"; |
318 | } | 331 | } |
332 | optpos = options; | ||
333 | while ('\0' != *optpos) | ||
334 | { | ||
335 | while (*optpos == ' ') | ||
336 | optpos++; | ||
337 | if (*optpos == '\0') | ||
338 | continue; | ||
339 | argv[argv_size++] = optpos; | ||
340 | while (('\0' != *optpos) && (' ' != *optpos)) | ||
341 | optpos++; | ||
342 | if ('\0' == *optpos) | ||
343 | continue; | ||
344 | *optpos = '\0'; | ||
345 | optpos++; | ||
346 | } | ||
319 | argv[argv_size++] = NULL; | 347 | argv[argv_size++] = NULL; |
320 | sl->pid = GNUNET_OS_start_process_v (firstarg, argv); | 348 | sl->pid = GNUNET_OS_start_process_v (firstarg, argv); |
321 | GNUNET_free (argv); | 349 | GNUNET_free (argv); |