aboutsummaryrefslogtreecommitdiff
path: root/src/util/configuration.c
diff options
context:
space:
mode:
authorAlessio Vanni <vannilla@firemail.cc>2020-07-03 22:37:42 +0200
committerChristian Grothoff <christian@grothoff.org>2020-07-14 15:56:00 +0200
commit0f2ac01f3d935435f9fa0e3d1fb7e038fb0c19fa (patch)
tree9481b67bd57b9fd1b1d499253c920d623393fc70 /src/util/configuration.c
parentc15f75419f4d2b40aa787b6ad2f4d48dcd0dc9b2 (diff)
downloadgnunet-0f2ac01f3d935435f9fa0e3d1fb7e038fb0c19fa.tar.gz
gnunet-0f2ac01f3d935435f9fa0e3d1fb7e038fb0c19fa.zip
Add function to return GNUnet's default configuration
It's for convenience when applications call `GNUNET_OS_init', after which it's impossible to obtain GNUnet's configuration without manually checking the filesystem. With this function it's possible to get the configuration regardless of the state of the application.
Diffstat (limited to 'src/util/configuration.c')
-rw-r--r--src/util/configuration.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/util/configuration.c b/src/util/configuration.c
index 34ecc9e73..faee9e3bf 100644
--- a/src/util/configuration.c
+++ b/src/util/configuration.c
@@ -1810,4 +1810,44 @@ GNUNET_CONFIGURATION_load_from (struct GNUNET_CONFIGURATION_Handle *cfg,
1810} 1810}
1811 1811
1812 1812
1813/**
1814 * Return GNUnet's default configuration. A new configuration is allocated
1815 * each time and it's up to the caller to destroy it when done. This function
1816 * returns GNUnet's configuration even when #GNUNET_OS_init has been called
1817 * with a value different from #GNUNET_OS_project_data_default.
1818 *
1819 * @return a freshly allocated configuration
1820 */
1821struct GNUNET_CONFIGURATION_Handle *
1822GNUNET_CONFIGURATION_default(void)
1823{
1824 const struct GNUNET_OS_ProjectData *pd = GNUNET_OS_project_data_get ();
1825 const struct GNUNET_OS_ProjectData *dpd = GNUNET_OS_project_data_default ();
1826
1827 GNUNET_OS_init(dpd);
1828
1829 struct GNUNET_CONFIGURATION_Handle *cfg = GNUNET_CONFIGURATION_create ();
1830 const char *xdg = getenv ("XDG_CONFIG_HOME");
1831 char *cfgname = NULL;
1832
1833 if (NULL != xdg)
1834 GNUNET_asprintf (&cfgname, "%s/%s", xdg, pd->config_file);
1835 else
1836 cfgname = GNUNET_strdup (pd->user_config_file);
1837
1838 if (GNUNET_OK != GNUNET_CONFIGURATION_load (cfg, cfgname)) {
1839 GNUNET_OS_init (pd);
1840 GNUNET_CONFIGURATION_destroy (cfg);
1841 GNUNET_free (cfgname);
1842 return NULL;
1843 }
1844
1845 GNUNET_free (cfgname);
1846
1847 GNUNET_OS_init (pd);
1848
1849 return cfg;
1850}
1851
1852
1813/* end of configuration.c */ 1853/* end of configuration.c */