Strip all non-digit characters from pidbuf

This is needed for dhclient's pidfile, as it contains a newline
This commit is contained in:
Michael Stapelberg 2008-10-07 11:22:35 +02:00
parent e31a85eb3b
commit e94e252089
2 changed files with 12 additions and 3 deletions

View File

@ -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"};

View File

@ -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);
}