diff options
| -rw-r--r-- | src/config.c | 22 |
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) |
