aboutsummaryrefslogtreecommitdiff
path: root/src/util/program.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/program.c')
-rw-r--r--src/util/program.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/util/program.c b/src/util/program.c
index 8bda34b4f..b5484855c 100644
--- a/src/util/program.c
+++ b/src/util/program.c
@@ -232,15 +232,20 @@ GNUNET_PROGRAM_run2 (int argc,
232 sizeof(struct GNUNET_GETOPT_CommandLineOption), 232 sizeof(struct GNUNET_GETOPT_CommandLineOption),
233 &cmd_sorter); 233 &cmd_sorter);
234 loglev = NULL; 234 loglev = NULL;
235 xdg = getenv ("XDG_CONFIG_HOME"); 235 if (NULL != pd->config_file && NULL != pd->user_config_file)
236 if (NULL != xdg) 236 {
237 GNUNET_asprintf (&cfg_fn, 237 xdg = getenv ("XDG_CONFIG_HOME");
238 "%s%s%s", 238 if (NULL != xdg)
239 xdg, 239 GNUNET_asprintf (&cfg_fn,
240 DIR_SEPARATOR_STR, 240 "%s%s%s",
241 pd->config_file); 241 xdg,
242 DIR_SEPARATOR_STR,
243 pd->config_file);
244 else
245 cfg_fn = GNUNET_strdup (pd->user_config_file);
246 }
242 else 247 else
243 cfg_fn = GNUNET_strdup (pd->user_config_file); 248 cfg_fn = NULL;
244 lpfx = GNUNET_strdup (binaryName); 249 lpfx = GNUNET_strdup (binaryName);
245 if (NULL != (spc = strstr (lpfx, " "))) 250 if (NULL != (spc = strstr (lpfx, " ")))
246 *spc = '\0'; 251 *spc = '\0';
@@ -269,7 +274,7 @@ GNUNET_PROGRAM_run2 (int argc,
269 } 274 }
270 else 275 else
271 { 276 {
272 if (GNUNET_YES == GNUNET_DISK_file_test (cfg_fn)) 277 if (NULL != cfg_fn && GNUNET_YES == GNUNET_DISK_file_test (cfg_fn))
273 { 278 {
274 if (GNUNET_SYSERR == GNUNET_CONFIGURATION_load (cfg, cfg_fn)) 279 if (GNUNET_SYSERR == GNUNET_CONFIGURATION_load (cfg, cfg_fn))
275 { 280 {
@@ -284,7 +289,7 @@ GNUNET_PROGRAM_run2 (int argc,
284 goto cleanup; 289 goto cleanup;
285 } 290 }
286 } 291 }
287 else 292 else if (NULL != cfg_fn)
288 { 293 {
289 GNUNET_free (cfg_fn); 294 GNUNET_free (cfg_fn);
290 cfg_fn = NULL; 295 cfg_fn = NULL;