[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated: fall back to /etc for default configurat
From: |
gnunet |
Subject: |
[gnunet] branch master updated: fall back to /etc for default configuration entry point |
Date: |
Thu, 29 Jul 2021 15:02:31 +0200 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new b41bca631 fall back to /etc for default configuration entry point
b41bca631 is described below
commit b41bca63173d3c27fe3ba51612df20da9a795aea
Author: Florian Dold <florian@dold.me>
AuthorDate: Thu Jul 29 14:59:10 2021 +0200
fall back to /etc for default configuration entry point
---
src/include/gnunet_configuration_lib.h | 12 ++++++
src/util/configuration.c | 67 +++++++++++++++++++++++++++++++++-
src/util/gnunet-config.c | 1 -
src/util/program.c | 31 +++++++---------
4 files changed, 91 insertions(+), 20 deletions(-)
diff --git a/src/include/gnunet_configuration_lib.h
b/src/include/gnunet_configuration_lib.h
index 7a0dec792..02e656196 100644
--- a/src/include/gnunet_configuration_lib.h
+++ b/src/include/gnunet_configuration_lib.h
@@ -112,6 +112,18 @@ struct GNUNET_CONFIGURATION_Handle *
GNUNET_CONFIGURATION_default (void);
+/**
+ * Return the filename of the default configuration filename
+ * that is used when no explicit configuration entry point
+ * has been specified.
+ *
+ * @returns NULL if no default configuration file can be located,
+ * a newly allocated string otherwise
+ */
+char *
+GNUNET_CONFIGURATION_default_filename (void);
+
+
/**
* Parse a configuration file, add all of the options in the
* file to the configuration environment.
diff --git a/src/util/configuration.c b/src/util/configuration.c
index 875a811b3..776cfc7ea 100644
--- a/src/util/configuration.c
+++ b/src/util/configuration.c
@@ -1155,7 +1155,7 @@ GNUNET_CONFIGURATION_serialize_diagnostics (const struct
GNUNET_buffer_write_fstr (&buf,
"# Entry point: %s\n",
cfg->main_filename ? cfg->main_filename :
- "<input>");
+ "<none>");
GNUNET_buffer_write_fstr (&buf,
"#\n# Files Loaded:\n");
@@ -2253,6 +2253,58 @@ GNUNET_CONFIGURATION_load_from (struct
GNUNET_CONFIGURATION_Handle *cfg,
return fun_ret;
}
+char *
+GNUNET_CONFIGURATION_default_filename (void)
+{
+ char *cfg_fn;
+ const struct GNUNET_OS_ProjectData *pd = GNUNET_OS_project_data_get ();
+ const char *xdg = getenv ("XDG_CONFIG_HOME");
+
+ if (NULL != xdg)
+ GNUNET_asprintf (&cfg_fn,
+ "%s%s%s",
+ xdg,
+ DIR_SEPARATOR_STR,
+ pd->config_file);
+ else
+ cfg_fn = GNUNET_strdup (pd->user_config_file);
+
+ if (GNUNET_OK == GNUNET_DISK_file_test_read (cfg_fn))
+ return cfg_fn;
+
+ GNUNET_free (cfg_fn);
+
+ /* Fall back to /etc/ for the default configuration.
+ Should be okay to use forward slashes here. */
+
+ GNUNET_asprintf (&cfg_fn,
+ "/etc/%s",
+ pd->config_file);
+
+ if (GNUNET_OK == GNUNET_DISK_file_test_read (cfg_fn))
+ return cfg_fn;
+
+ GNUNET_free (cfg_fn);
+
+ GNUNET_asprintf (&cfg_fn,
+ "/etc/%s",
+ pd->config_file);
+
+ if (GNUNET_OK == GNUNET_DISK_file_test_read (cfg_fn))
+ return cfg_fn;
+
+ GNUNET_asprintf (&cfg_fn,
+ "/etc/%s/%s",
+ pd->project_dirname,
+ pd->config_file);
+
+ if (GNUNET_OK == GNUNET_DISK_file_test_read (cfg_fn))
+ return cfg_fn;
+
+ GNUNET_free (cfg_fn);
+ return NULL;
+}
+
struct GNUNET_CONFIGURATION_Handle *
GNUNET_CONFIGURATION_default (void)
@@ -2284,7 +2336,9 @@ GNUNET_CONFIGURATION_default (void)
if (GNUNET_OK != GNUNET_DISK_file_test (cfgname))
{
GNUNET_free (cfgname);
- GNUNET_asprintf (&cfgname, "/etc/%s/%s", pd->project_dirname,
+ GNUNET_asprintf (&cfgname,
+ "/etc/%s/%s",
+ pd->project_dirname,
pd->config_file);
}
if (GNUNET_OK != GNUNET_DISK_file_test (cfgname))
@@ -2353,7 +2407,10 @@ GNUNET_CONFIGURATION_load (struct
GNUNET_CONFIGURATION_Handle *cfg,
ipath = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_DATADIR);
if (NULL == ipath)
+ {
+ GNUNET_break (0);
return GNUNET_SYSERR;
+ }
GNUNET_asprintf (&baseconfig, "%s%s", ipath, "config.d");
GNUNET_free (ipath);
}
@@ -2364,6 +2421,9 @@ GNUNET_CONFIGURATION_load (struct
GNUNET_CONFIGURATION_Handle *cfg,
if ((GNUNET_YES == GNUNET_DISK_directory_test (dname, GNUNET_YES))&&
(GNUNET_SYSERR == GNUNET_CONFIGURATION_load_from (cfg, dname)))
{
+ LOG (GNUNET_ERROR_TYPE_WARNING,
+ "Failed to load base configuration from '%s'\n",
+ filename);
GNUNET_free (dname);
return GNUNET_SYSERR; /* no configuration at all found */
}
@@ -2372,6 +2432,9 @@ GNUNET_CONFIGURATION_load (struct
GNUNET_CONFIGURATION_Handle *cfg,
(GNUNET_OK != GNUNET_CONFIGURATION_parse (cfg, filename)))
{
/* specified configuration not found */
+ LOG (GNUNET_ERROR_TYPE_WARNING,
+ "Failed to load configuration from file '%s'\n",
+ filename);
return GNUNET_SYSERR;
}
if (((GNUNET_YES !=
diff --git a/src/util/gnunet-config.c b/src/util/gnunet-config.c
index 20fd44c65..4f16332db 100644
--- a/src/util/gnunet-config.c
+++ b/src/util/gnunet-config.c
@@ -173,7 +173,6 @@ run (void *cls,
{
struct GNUNET_CONFIGURATION_Handle *ncfg;
/* Re-parse the configuration with diagnostics enabled. */
- GNUNET_assert (NULL != cfgfile);
ncfg = GNUNET_CONFIGURATION_create ();
GNUNET_CONFIGURATION_enable_diagnostics (ncfg);
GNUNET_CONFIGURATION_load (ncfg, cfgfile);
diff --git a/src/util/program.c b/src/util/program.c
index e34b37370..a79e07d19 100644
--- a/src/util/program.c
+++ b/src/util/program.c
@@ -140,7 +140,6 @@ GNUNET_PROGRAM_run2 (int argc,
char *loglev;
char *logfile;
char *cfg_fn;
- const char *xdg;
enum GNUNET_GenericReturnValue ret;
int iret;
unsigned int cnt;
@@ -149,12 +148,13 @@ GNUNET_PROGRAM_run2 (int argc,
long long clock_offset;
struct GNUNET_CONFIGURATION_Handle *cfg;
const struct GNUNET_OS_ProjectData *pd = GNUNET_OS_project_data_get ();
- struct GNUNET_GETOPT_CommandLineOption defoptions[] =
- { GNUNET_GETOPT_option_cfgfile (&cc.cfgfile),
+ struct GNUNET_GETOPT_CommandLineOption defoptions[] = {
+ GNUNET_GETOPT_option_cfgfile (&cc.cfgfile),
GNUNET_GETOPT_option_help (binaryHelp),
GNUNET_GETOPT_option_loglevel (&loglev),
GNUNET_GETOPT_option_logfile (&logfile),
- GNUNET_GETOPT_option_version (pd->version) };
+ GNUNET_GETOPT_option_version (pd->version)
+ };
struct GNUNET_GETOPT_CommandLineOption *allopts;
const char *gargs;
char *lpfx;
@@ -219,17 +219,7 @@ GNUNET_PROGRAM_run2 (int argc,
&cmd_sorter);
loglev = NULL;
if ((NULL != pd->config_file) && (NULL != pd->user_config_file))
- {
- xdg = getenv ("XDG_CONFIG_HOME");
- if (NULL != xdg)
- GNUNET_asprintf (&cfg_fn,
- "%s%s%s",
- xdg,
- DIR_SEPARATOR_STR,
- pd->config_file);
- else
- cfg_fn = GNUNET_strdup (pd->user_config_file);
- }
+ cfg_fn = GNUNET_CONFIGURATION_default_filename ();
else
cfg_fn = NULL;
lpfx = GNUNET_strdup (binaryName);
@@ -251,6 +241,9 @@ GNUNET_PROGRAM_run2 (int argc,
}
if (NULL != cc.cfgfile)
{
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Loading configuration from entry point specified as option
(%s)\n",
+ cc.cfgfile);
if ((GNUNET_YES != GNUNET_DISK_file_test (cc.cfgfile)) ||
(GNUNET_SYSERR == GNUNET_CONFIGURATION_load (cfg, cc.cfgfile)))
{
@@ -266,6 +259,9 @@ GNUNET_PROGRAM_run2 (int argc,
}
else
{
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Loading configuration default entry point (%s)\n",
+ cc.cfgfile);
if ((NULL != cfg_fn) && (GNUNET_YES == GNUNET_DISK_file_test (cfg_fn)))
{
if (GNUNET_SYSERR == GNUNET_CONFIGURATION_load (cfg, cfg_fn))
@@ -283,8 +279,9 @@ GNUNET_PROGRAM_run2 (int argc,
}
else if (NULL != cfg_fn)
{
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Loading configuration without entry point\n");
GNUNET_free (cfg_fn);
- cfg_fn = NULL;
if (GNUNET_OK != GNUNET_CONFIGURATION_load (cfg, NULL))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -349,7 +346,7 @@ GNUNET_PROGRAM_run2 (int argc,
cc.task (cc.task_cls, cc.args, cc.cfgfile, cc.cfg);
}
ret = GNUNET_OK;
-cleanup:
+ cleanup:
GNUNET_CONFIGURATION_destroy (cfg);
GNUNET_free (cc.cfgfile);
GNUNET_free (cfg_fn);
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: fall back to /etc for default configuration entry point,
gnunet <=