diff options
-rw-r--r-- | i3status.c | 5 | ||||
-rw-r--r-- | i3status.conf | 3 | ||||
-rw-r--r-- | i3status.h | 2 | ||||
-rw-r--r-- | src/print_eth_info.c | 9 |
4 files changed, 13 insertions, 6 deletions
@@ -59,7 +59,8 @@ int main(int argc, char *argv[]) { }; cfg_opt_t ethernet_opts[] = { - CFG_STR("format", "E: %ip (%speed)", CFGF_NONE), + CFG_STR("format_up", "E: %ip (%speed)", CFGF_NONE), + CFG_STR("format_down", "E: down", CFGF_NONE), CFG_END() }; @@ -153,7 +154,7 @@ int main(int argc, char *argv[]) { print_wireless_info(title, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down")); CASE_SEC_TITLE("ethernet") - print_eth_info(title, cfg_getstr(sec, "format")); + print_eth_info(title, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down")); CASE_SEC_TITLE("battery") print_battery_info(atoi(title), cfg_getstr(sec, "format")); diff --git a/i3status.conf b/i3status.conf index 6140f06..2c5f276 100644 --- a/i3status.conf +++ b/i3status.conf @@ -21,7 +21,8 @@ wireless wlan0 { ethernet eth0 { # if you use %speed, i3status requires root privileges - format = "E: %ip (%speed)" + format_up = "E: %ip (%speed)" + format_down = "E: down" } battery 0 { @@ -69,7 +69,7 @@ const char *get_ip_addr(); void print_wireless_info(const char *interface, const char *format_up, const char *format_down); void print_run_watch(const char *title, const char *pidfile, const char *format); void print_cpu_temperature_info(int zone, const char *format); -void print_eth_info(const char *interface, const char *format); +void print_eth_info(const char *interface, const char *format_up, const char *format_down); void print_load(); bool process_runs(const char *path); diff --git a/src/print_eth_info.c b/src/print_eth_info.c index 7624383..1da0502 100644 --- a/src/print_eth_info.c +++ b/src/print_eth_info.c @@ -74,11 +74,16 @@ static void print_eth_speed(const char *interface) { * Combines ethernet IP addresses and speed (if requested) for displaying * */ -void print_eth_info(const char *interface, const char *format) { +void print_eth_info(const char *interface, const char *format_up, const char *format_down) { const char *walk; const char *ip_address = get_ip_addr(interface); - for (walk = format; *walk != '\0'; walk++) { + if (ip_address == NULL) { + printf("%s", format_down); + return; + } + + for (walk = format_up; *walk != '\0'; walk++) { if (*walk != '%') { putchar(*walk); continue; |