Strip all non-digit characters from pidbuf
This is needed for dhclient's pidfile, as it contains a newline
This commit is contained in:
parent
e31a85eb3b
commit
e94e252089
2
config.h
2
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"};
|
||||
|
13
wmiistatus.c
13
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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user