aboutsummaryrefslogtreecommitdiff
path: root/src/util/configuration.c
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-07-28 15:47:39 +0200
committerFlorian Dold <florian@dold.me>2021-07-28 15:47:39 +0200
commit2cdd91d55b1ac965d4f4075cf3c094ee5ac53818 (patch)
treef1db2b6fbffd303b9be2c192165c1777fd4cf0d8 /src/util/configuration.c
parent94ea7a1fab12d1ad81209f84087c04a5a5b790dc (diff)
downloadgnunet-2cdd91d55b1ac965d4f4075cf3c094ee5ac53818.tar.gz
gnunet-2cdd91d55b1ac965d4f4075cf3c094ee5ac53818.zip
fall back to /etc if user config can't be found
Diffstat (limited to 'src/util/configuration.c')
-rw-r--r--src/util/configuration.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/util/configuration.c b/src/util/configuration.c
index 3bb08e6c0..f091c4674 100644
--- a/src/util/configuration.c
+++ b/src/util/configuration.c
@@ -1918,12 +1918,45 @@ GNUNET_CONFIGURATION_default (void)
1918 char *cfgname = NULL; 1918 char *cfgname = NULL;
1919 struct GNUNET_CONFIGURATION_Handle *cfg; 1919 struct GNUNET_CONFIGURATION_Handle *cfg;
1920 1920
1921 /* FIXME: Why are we doing this? Needs some commentary! */
1921 GNUNET_OS_init (dpd); 1922 GNUNET_OS_init (dpd);
1923
1922 cfg = GNUNET_CONFIGURATION_create (); 1924 cfg = GNUNET_CONFIGURATION_create ();
1925
1926 /* First, try user configuration. */
1923 if (NULL != xdg) 1927 if (NULL != xdg)
1924 GNUNET_asprintf (&cfgname, "%s/%s", xdg, pd->config_file); 1928 GNUNET_asprintf (&cfgname, "%s/%s", xdg, pd->config_file);
1925 else 1929 else
1926 cfgname = GNUNET_strdup (pd->user_config_file); 1930 cfgname = GNUNET_strdup (pd->user_config_file);
1931
1932 /* If user config doesn't exist, try in
1933 /etc/<projdir>/<cfgfile> and /etc/<cfgfile> */
1934 if (GNUNET_OK != GNUNET_DISK_file_test (cfgname))
1935 {
1936 GNUNET_free (cfgname);
1937 GNUNET_asprintf (&cfgname, "/etc/%s", pd->config_file);
1938 }
1939 if (GNUNET_OK != GNUNET_DISK_file_test (cfgname))
1940 {
1941 GNUNET_free (cfgname);
1942 GNUNET_asprintf (&cfgname, "/etc/%s/%s", pd->project_dirname,
1943 pd->config_file);
1944 }
1945 if (GNUNET_OK != GNUNET_DISK_file_test (cfgname))
1946 {
1947 LOG (GNUNET_ERROR_TYPE_ERROR,
1948 "Unable to top-level configuration file.\n");
1949 GNUNET_OS_init (pd);
1950 GNUNET_CONFIGURATION_destroy (cfg);
1951 GNUNET_free (cfgname);
1952 return NULL;
1953 }
1954
1955 /* We found a configuration file that looks good, try to load it. */
1956
1957 LOG (GNUNET_ERROR_TYPE_DEBUG,
1958 "Loading top-level configuration from '%s'\n",
1959 cfgname);
1927 if (GNUNET_OK != 1960 if (GNUNET_OK !=
1928 GNUNET_CONFIGURATION_load (cfg, cfgname)) 1961 GNUNET_CONFIGURATION_load (cfg, cfgname))
1929 { 1962 {