* See file LICENSE for license information.
*
*/
+#include <config.h>
#include <limits.h>
#include <string.h>
#include <stdio.h>
} else {
head = globbuf.gl_pathv[0];
result = scalloc(strlen(head) + (tail ? strlen(tail) : 0) + 1);
- strncpy(result, head, strlen(head));
- if (tail)
- strncat(result, tail, strlen(tail));
+ strcpy(result, head);
+ if (tail) {
+ strcat(result, tail);
+ }
}
globfree(&globbuf);
return sstrdup(config_path);
die("Unable to find the configuration file (looked at "
- "~/.i3status.conf, $XDG_CONFIG_HOME/i3status/config, "
- "/etc/i3status.conf and $XDG_CONFIG_DIRS/i3status/config)");
+ "~/.i3status.conf, $XDG_CONFIG_HOME/i3status/config, " SYSCONFDIR "/i3status.conf and $XDG_CONFIG_DIRS/i3status/config)");
return NULL;
}
CFG_STR("timezone", "", CFGF_NONE),
CFG_STR("locale", "", CFGF_NONE),
CFG_STR("format_time", NULL, CFGF_NONE),
+ CFG_BOOL("hide_if_equals_localtime", false, CFGF_NONE),
CFG_CUSTOM_ALIGN_OPT,
CFG_CUSTOM_MIN_WIDTH_OPT,
CFG_CUSTOM_SEPARATOR_OPT,
CFG_CUSTOM_SEP_BLOCK_WIDTH_OPT,
CFG_END()};
+ cfg_opt_t read_opts[] = {
+ CFG_STR("format", "%content", CFGF_NONE),
+ CFG_STR("format_bad", "%title - %errno: %error", CFGF_NONE),
+ CFG_STR("path", NULL, CFGF_NONE),
+ CFG_INT("max_characters", 255, CFGF_NONE),
+ CFG_CUSTOM_ALIGN_OPT,
+ CFG_CUSTOM_COLOR_OPTS,
+ CFG_CUSTOM_MIN_WIDTH_OPT,
+ CFG_CUSTOM_SEPARATOR_OPT,
+ CFG_CUSTOM_SEP_BLOCK_WIDTH_OPT,
+ CFG_END()};
+
cfg_opt_t opts[] = {
CFG_STR_LIST("order", "{}", CFGF_NONE),
CFG_SEC("general", general_opts, CFGF_NONE),
CFG_SEC("load", load_opts, CFGF_NONE),
CFG_SEC("memory", memory_opts, CFGF_NONE),
CFG_SEC("cpu_usage", usage_opts, CFGF_NONE),
+ CFG_SEC("read_file", read_opts, CFGF_TITLE | CFGF_MULTI),
CFG_END()};
char *configfile = NULL;
while (1) {
if (exit_upon_signal) {
- fprintf(stderr, "Exiting due to signal.\n");
+ fprintf(stderr, "i3status: exiting due to signal.\n");
exit(1);
}
struct timeval tv;
CASE_SEC("time") {
SEC_OPEN_MAP("time");
- print_time(json_gen, buffer, NULL, cfg_getstr(sec, "format"), NULL, NULL, NULL, tv.tv_sec);
+ print_time(json_gen, buffer, NULL, cfg_getstr(sec, "format"), NULL, NULL, NULL, false, tv.tv_sec);
SEC_CLOSE_MAP;
}
CASE_SEC_TITLE("tztime") {
SEC_OPEN_MAP("tztime");
- print_time(json_gen, buffer, title, cfg_getstr(sec, "format"), cfg_getstr(sec, "timezone"), cfg_getstr(sec, "locale"), cfg_getstr(sec, "format_time"), tv.tv_sec);
+ print_time(json_gen, buffer, title, cfg_getstr(sec, "format"), cfg_getstr(sec, "timezone"), cfg_getstr(sec, "locale"), cfg_getstr(sec, "format_time"), cfg_getbool(sec, "hide_if_equals_localtime"), tv.tv_sec);
SEC_CLOSE_MAP;
}
print_cpu_usage(json_gen, buffer, cfg_getstr(sec, "format"), cfg_getstr(sec, "format_above_threshold"), cfg_getstr(sec, "format_above_degraded_threshold"), cfg_getstr(sec, "path"), cfg_getfloat(sec, "max_threshold"), cfg_getfloat(sec, "degraded_threshold"));
SEC_CLOSE_MAP;
}
+
+ CASE_SEC_TITLE("read_file") {
+ SEC_OPEN_MAP("read_file");
+ print_file_contents(json_gen, buffer, title, cfg_getstr(sec, "path"), cfg_getstr(sec, "format"), cfg_getstr(sec, "format_bad"), cfg_getint(sec, "max_characters"));
+ SEC_CLOSE_MAP;
+ }
}
if (output_format == O_I3BAR) {
yajl_gen_array_close(json_gen);