aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/config.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/config.c b/src/config.c
index e4151eb..083150e 100644
--- a/src/config.c
+++ b/src/config.c
@@ -41,14 +41,24 @@ static int ftag_config_load_file(const char *config_file)
return 1;
}
-void ftag_config_init(const char *config_file)
+void ftag_config_init(const char *opt_config_file)
{
+ const char *env_xdg_config_home = getenv("XDG_CONFIG_HOME");
const char *env_home = getenv("HOME");
- char default_config_file[512];
+ char config_file[512];
- /* TODO: prioritize XDG_CONFIG_HOME */
- strbuild(default_config_file,
- "%s/.config/ftag/ftag.conf", env_home);
+ if (opt_config_file) {
+ strbuild(config_file, "%s", opt_config_file);
+ }
+ else if (env_xdg_config_home) {
+ strbuild(config_file,
+ "%s/.config/ftag/ftag.conf", env_xdg_config_home);
+ }
+ else {
+ assert(env_home);
+ strbuild(config_file,
+ "%s/.config/ftag/ftag.conf", env_home);
+ }
/* Keys */
ftag_config_keys[FC_DATABASE_PATH] = "database_path";
@@ -71,7 +81,7 @@ void ftag_config_init(const char *config_file)
if (config_loaded)
return;
- ftag_config_load_file(default_config_file);
+ ftag_config_load_file(config_file);
}
const char *ftag_config_get(enum ftag_config_e key)