From 6f705c20decfca58aa1cd2e6c459aae01f50b318 Mon Sep 17 00:00:00 2001
From: Michael Stapelberg <michael+x200@stapelberg.de>
Date: Tue, 7 Oct 2008 11:54:04 +0200
Subject: Make runwatches work again

---
 config.h     | 13 ++++++++-----
 wmiistatus.c | 30 ++++++++++--------------------
 wmiistatus.h |  4 ----
 3 files changed, 18 insertions(+), 29 deletions(-)

diff --git a/config.h b/config.h
index 8b4f01e..fa2f5d5 100644
--- a/config.h
+++ b/config.h
@@ -7,8 +7,11 @@ const char *battery = "/sys/class/power_supply/BAT0/uevent";
 const char *run_watches[] = {"DHCP", "/var/run/dhclient.pid",
 			     "VPN", "/var/run/vpnc*.pid"};
 
-#define ORDER_WLAN 	"0"
-#define ORDER_ETH 	"1"
-#define ORDER_BATTERY 	"2"
-#define ORDER_LOAD 	"3"
-#define ORDER_TIME 	"4"
+#define ORDER_RUN	"0"
+#define ORDER_WLAN 	"1"
+#define ORDER_ETH 	"2"
+#define ORDER_BATTERY 	"3"
+#define ORDER_LOAD 	"4"
+#define ORDER_TIME 	"5"
+
+#define USE_COLORS
diff --git a/wmiistatus.c b/wmiistatus.c
index c26781a..c47b528 100644
--- a/wmiistatus.c
+++ b/wmiistatus.c
@@ -124,14 +124,6 @@ static char *skip_character(char *input, char character, int amount) {
 	return (walk == input ? walk : walk-1);
 }
 
-static void push_part(const char *input, const int n) {
-	if (first_push)
-		first_push = false;
-	else
-		strncpy(output+strlen(output), " | ", strlen(" | "));
-	strncpy(output+strlen(output), input, n);
-}
-
 /*
  * Get battery information from /sys. Note that it uses the design capacity to calculate the percentage,
  * not the full capacity.
@@ -311,6 +303,7 @@ static bool process_runs(const char *path) {
 
 int main(void) {
 	char part[512],
+	     pathbuf[512],
 	     *end;
 	unsigned int i;
 
@@ -320,24 +313,21 @@ int main(void) {
 	create_file(ORDER_BATTERY "battery");
 	create_file(ORDER_LOAD "load");
 	create_file(ORDER_TIME "time");
+	for (i = 0; i < sizeof(run_watches) / sizeof(char*); i += 2) {
+		sprintf(pathbuf, "%s%s", ORDER_RUN, run_watches[i]);
+		create_file(pathbuf);
+	}
 
 	while (1) {
-		memset(output, '\0', sizeof(output));
-		first_push = true;
-
 		for (i = 0; i < sizeof(run_watches) / sizeof(char*); i += 2) {
 			sprintf(part, "%s: %s", run_watches[i], (process_runs(run_watches[i+1]) ? "yes" : "no"));
-			push_part(part, strlen(part));
+			sprintf(pathbuf, "%s%s", ORDER_RUN, run_watches[i]);
+			write_to_statusbar(pathbuf, part);
 		}
 
-		char *wireless_info = get_wireless_info();
-		write_to_statusbar(ORDER_WLAN "wlan", wireless_info);
-
-		char *eth_info = get_eth_info();
-		write_to_statusbar(ORDER_ETH "eth", eth_info);
-
-		char *battery_info = get_battery_info();
-		write_to_statusbar(ORDER_BATTERY "battery", battery_info);
+		write_to_statusbar(ORDER_WLAN "wlan", get_wireless_info());
+		write_to_statusbar(ORDER_ETH "eth", get_eth_info());
+		write_to_statusbar(ORDER_BATTERY "battery", get_battery_info());
 
 		/* Get load */
 		int load_avg = open("/proc/loadavg", O_RDONLY);
diff --git a/wmiistatus.h b/wmiistatus.h
index 9836dff..e9d4445 100644
--- a/wmiistatus.h
+++ b/wmiistatus.h
@@ -1,8 +1,5 @@
 #define BEGINS_WITH(haystack, needle) (strncmp(haystack, needle, strlen(needle)) == 0)
 
-static char output[512];
-static bool first_push = true;
-
 typedef enum { CS_DISCHARGING, CS_CHARGING, CS_FULL } charging_status_t;
 
 static void cleanup_rbar_dir(void);
@@ -10,7 +7,6 @@ static void write_to_statusbar(const char *name, const char *message);
 static void write_error_to_statusbar(const char *message);
 static void die(const char *fmt, ...);
 static char *skip_character(char *input, char character, int amount);
-static void push_part(const char *input, const int n);
 static char *get_battery_info(void);
 static char *get_wireless_info(void);
 static char *get_ip_address(const char *interface);
-- 
cgit v1.2.3