diff options
author | Florian Dold <florian@dold.me> | 2021-07-28 15:47:39 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-07-28 15:47:39 +0200 |
commit | 2cdd91d55b1ac965d4f4075cf3c094ee5ac53818 (patch) | |
tree | f1db2b6fbffd303b9be2c192165c1777fd4cf0d8 /src/util/configuration.c | |
parent | 94ea7a1fab12d1ad81209f84087c04a5a5b790dc (diff) | |
download | gnunet-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.c | 33 |
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 | { |