]> git.sur5r.net Git - i3/i3status/commitdiff
Implement format_up/format_down for ethernet
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 16 Oct 2009 18:14:40 +0000 (20:14 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 16 Oct 2009 18:14:40 +0000 (20:14 +0200)
i3status.c
i3status.conf
i3status.h
src/print_eth_info.c

index 6ada1d40e5082b308bf1eaaa2c9f4bd76619b057..0e35eabed2a7d34b7485f77b4bcd4d801e63eaec 100644 (file)
@@ -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"));
index 6140f068519d7483bce3bffc4cbd4d3d7f64bf7e..2c5f276d50aa5425958dcad6c23bbf9f9b98ae03 100644 (file)
@@ -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 {
index b6fdd865d389df8be00734d6527e598b6bfd51ab..3fa964434b52b9420e780f82da13c52148c85ab5 100644 (file)
@@ -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);
 
index 7624383b5f9e98c1e116168a7827b861e6f02e3d..1da05029cd4a3a4603eaec91c34a3f9810bd3de5 100644 (file)
@@ -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;