aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Riehs <tristan.riehs@inria.fr>2026-07-02 10:03:48 +0200
committerTristan Riehs <tristan.riehs@inria.fr>2026-07-02 10:03:48 +0200
commit1025fa6dc9b9c5d19f88cd66d6c6222649a177aa (patch)
tree8ffca9ab36b6ab385a958f63da6e3778f6fa8f76
parentbba692c77ae09471b819f8b317eebfe7b4b1ea58 (diff)
Support XDG_CONFIG_HOME
-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)