From 0846c307d0397ced8f01d8e53ebf2e91cd687b89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Tarl=C3=A1=20Cardoso=20Lemos?= Date: Sat, 23 Oct 2010 17:43:32 -0200 Subject: [PATCH] More sensible lookup order loading the config. --- i3status.c | 30 ++++++++++++++++-------------- man/i3status.man | 8 ++++---- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/i3status.c b/i3status.c index 6d6fbc7..eff6da4 100644 --- a/i3status.c +++ b/i3status.c @@ -117,9 +117,14 @@ static char *resolve_tilde(const char *path) { } static char *get_config_path() { - /* 1: check for $XDG_CONFIG_HOME/i3/config */ char *xdg_config_home, *xdg_config_dirs, *config_path; + /* 1: check the traditional path under the home directory */ + config_path = resolve_tilde("~/.i3status.conf"); + if (path_exists(config_path)) + return config_path; + + /* 2: check for $XDG_CONFIG_HOME/i3status/config */ if ((xdg_config_home = getenv("XDG_CONFIG_HOME")) == NULL) xdg_config_home = "~/.config"; @@ -132,7 +137,12 @@ static char *get_config_path() { return config_path; free(config_path); - /* 2: check for $XDG_CONFIG_DIRS/i3/config */ + /* 3: check the traditional path under /etc */ + config_path = SYSCONFDIR "/i3status.conf"; + if (path_exists(config_path)) + return sstrdup(config_path); + + /* 4: check for $XDG_CONFIG_DIRS/i3status/config */ if ((xdg_config_dirs = getenv("XDG_CONFIG_DIRS")) == NULL) xdg_config_dirs = "/etc/xdg"; @@ -152,18 +162,10 @@ static char *get_config_path() { } free(buf); - /* 3: check traditional paths */ - config_path = resolve_tilde("~/.i3status.conf"); - if (path_exists(config_path)) - return config_path; - - config_path = strdup(SYSCONFDIR "/i3status.conf"); - if (!path_exists(config_path)) - die("Neither $XDG_CONFIG_HOME/i3status/config, nor " - "$XDG_CONFIG_DIRS/i3status/config, nor ~/.i3status.conf nor " - SYSCONFDIR "/i3status.conf exist."); - - return config_path; + die("Unable to find the configuration file (looked at " + "~/.i3status/config, $XDG_CONFIG_HOME/i3status/config, " + "/etc/i3status/config and $XDG_CONFIG_DIRS/i3status/config)"); + return NULL; } int main(int argc, char *argv[]) { diff --git a/man/i3status.man b/man/i3status.man index a8f461f..57a991c 100644 --- a/man/i3status.man +++ b/man/i3status.man @@ -17,10 +17,10 @@ i3status [-c configfile] [-h] [-v] Specifies an alternate configuration file path. By default, i3status looks for configuration files in the following order: -1. ~/.config/i3status/config (or $XDG_CONFIG_HOME/i3status/config if set) -2. /etc/xdg/i3status/config (or $XDG_CONFIG_DIRS/i3status/config if set) -3. ~/.i3status.conf -4. /etc/i3status.conf (or SYSCONFDIR/i3status.conf if set at compile-time) +1. ~/.i3status/config +2. ~/.config/i3status/config (or $XDG_CONFIG_HOME/i3status/config if set) +3. /etc/i3status/config +4. /etc/xdg/i3status/config (or $XDG_CONFIG_DIRS/i3status/config if set) == DESCRIPTION