X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=i3status.c;h=d219b3c95dcd8ab322c828dfa7dd5d0761895e95;hb=4fa8a4e0ab52d5e804e3d85c04281d392c767b22;hp=6d6fbc7f1f2e9064d87dde790a9bcbab16ed2ab6;hpb=862297ecada056bce29eb603fc6f5e35471409f1;p=i3%2Fi3status diff --git a/i3status.c b/i3status.c index 6d6fbc7..d219b3c 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[]) { @@ -227,6 +229,7 @@ int main(int argc, char *argv[]) { cfg_opt_t temp_opts[] = { CFG_STR("format", "%degrees C", CFGF_NONE), + CFG_STR("path", NULL, CFGF_NONE), CFG_END() }; @@ -319,6 +322,10 @@ int main(int argc, char *argv[]) { int interval = cfg_getint(cfg_general, "interval"); while (1) { + time_t current_time = time(NULL); + struct tm *current_tm = NULL; + if (current_time != (time_t) -1) + current_tm = localtime(¤t_time); for (j = 0; j < cfg_size(cfg, "order"); j++) { if (j > 0) print_seperator(); @@ -347,7 +354,7 @@ int main(int argc, char *argv[]) { print_load(cfg_getstr(sec, "format")); CASE_SEC("time") - print_time(cfg_getstr(sec, "format")); + print_time(cfg_getstr(sec, "format"), current_tm); CASE_SEC("ddate") print_ddate(cfg_getstr(sec, "format")); @@ -359,7 +366,7 @@ int main(int argc, char *argv[]) { cfg_getint(sec, "mixer_idx")); CASE_SEC_TITLE("cpu_temperature") - print_cpu_temperature_info(atoi(title), cfg_getstr(sec, "format")); + print_cpu_temperature_info(atoi(title), cfg_getstr(sec, "path"), cfg_getstr(sec, "format")); } printf("\n"); fflush(stdout); @@ -368,9 +375,9 @@ int main(int argc, char *argv[]) { * we don’t use sleep(interval) but we sleep until the next * second (with microsecond precision) plus (interval-1) * seconds. */ - struct timeval current_time; - gettimeofday(¤t_time, NULL); - struct timespec ts = {interval - 1, (10e5 - current_time.tv_usec) * 1000}; + struct timeval current_timeval; + gettimeofday(¤t_timeval, NULL); + struct timespec ts = {interval - 1, (10e5 - current_timeval.tv_usec) * 1000}; nanosleep(&ts, NULL); } }