From: Michael Stapelberg Date: Tue, 7 Oct 2008 09:22:35 +0000 (+0200) Subject: Strip all non-digit characters from pidbuf X-Git-Tag: 1.0~54 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=e94e25208936ab8f6ab684b1b229bc29073b955d;p=i3%2Fi3status Strip all non-digit characters from pidbuf This is needed for dhclient's pidfile, as it contains a newline --- diff --git a/config.h b/config.h index c142add..baaa240 100644 --- a/config.h +++ b/config.h @@ -3,5 +3,5 @@ const char *eth_interface = "eth0"; const char *wmii_path = "/mnt/wmii/rbar/status"; const char *time_format = "%d.%m.%Y %H:%M:%S"; const char *battery = "/sys/class/power_supply/BAT0/uevent"; -const char *run_watches[] = {"DHCP", "/var/run/dhclient*.pid", +const char *run_watches[] = {"DHCP", "/var/run/dhclient.pid", "VPN", "/var/run/vpnc*.pid"}; diff --git a/wmiistatus.c b/wmiistatus.c index 00aa487..bdb1e6a 100644 --- a/wmiistatus.c +++ b/wmiistatus.c @@ -246,7 +246,9 @@ static char *get_eth_info() { */ static bool process_runs(const char *path) { char pidbuf[512], - procbuf[512]; + procbuf[512], + *walk; + int n; static glob_t globbuf; struct stat statbuf; @@ -257,8 +259,15 @@ static bool process_runs(const char *path) { globfree(&globbuf); if (fd < 0) return false; - read(fd, pidbuf, sizeof(pidbuf)); + n = read(fd, pidbuf, sizeof(pidbuf)); + if (n > 0) + pidbuf[n] = '\0'; close(fd); + for (walk = pidbuf; *walk != '\0'; walk++) + if (!isdigit((int)(*walk))) { + *walk = '\0'; + break; + } sprintf(procbuf, "/proc/%s", pidbuf); return (stat(procbuf, &statbuf) >= 0); }