commit - 643a56d30f3d0d65db39a147a09435999b7160d2
commit + 23a90cf95d6b733db64c1c4adb136018997a8fd1
blob - 2d222454e2b6914d85b9ab08f55cfc0504a9c30c
blob + cca570e33bc9f05ccbc1440383429a08eb021727
--- modules/battery.c
+++ modules/battery.c
get_battery(int pipe_fd)
{
struct apm_power_info pinfo;
- char pstate[5];
+ char *pstate;
if (ioctl(fd, APM_IOC_GETPOWER, &pinfo) < 0)
{
}
if (pinfo.ac_state == APM_AC_ON)
- (void)strcpy(pstate, BATTAC);
+ pstate = BATTAC;
else if (pinfo.battery_state == APM_BATT_LOW)
- (void)strcpy(pstate, BATTMID);
+ pstate = BATTMID;
else if (pinfo.battery_state == APM_BATT_CRITICAL)
- (void)strcpy(pstate, BATTLOW);
+ pstate = BATTLOW;
else if (pinfo.ac_state == APM_AC_UNKNOWN || pinfo.battery_state == APM_BATT_UNKNOWN)
- (void)strcpy(pstate, UNKNOWN);
+ pstate = UNKNOWN;
else
- (void)strcpy(pstate, BATT);
+ pstate = BATT;
(void)dprintf(pipe_fd, "%s %3d%%", pstate, pinfo.battery_life);
}
*pipe_fd = batt_pipe[0];
pid = fork();
- if (pid) return pid;
+ if (pid)
+ {
+ if (pid == -1) (void)close(batt_pipe[0]);
+ (void)close(batt_pipe[1]);
+ return pid;
+ }
+
if (init_battery() == -1) _exit(-1);
+ (void)close(batt_pipe[0]);
+ (void)puts("Battery process started");
(void)signal(SIGTERM, signal_handler);
(void)signal(SIGINT, signal_handler);
if (getppid() == 1) break;
}
- (void)puts("Closing battery pipe");
+ (void)puts("Closing battery process");
(void)close(batt_pipe[1]);
- (void)close(batt_pipe[0]);
_exit(0);
}