--- src/aapm.cc.orig Tue Oct 9 23:54:03 2001 +++ src/aapm.cc Tue Feb 19 14:39:19 2002 @@ -23,6 +23,13 @@ #include #include +#ifdef __FreeBSD__ +#include +#include +#include +#include +#endif + #ifdef CONFIG_APPLET_APM YColor *YApm::apmBg = 0; @@ -32,8 +39,12 @@ extern YPixmap *taskbackPixmap; void ApmStr(char *s, bool Tool) { +#ifdef __FreeBSD__ + struct apm_info ai; +#else char buf[45]; - int len, i, fd = open("/proc/apm", O_RDONLY); +#endif + int len, i, fd = open(APMDEV, O_RDONLY); char driver[16]; char apmver[16]; int apmflags; @@ -45,9 +56,27 @@ char units[16]; if (fd == -1) { + static int error = 0; + if (!error) + perror("Can't open the apm device"); + error = 1; return ; } - +#ifdef __FreeBSD__ + if (ioctl(fd,APMIO_GETINFO, &ai) == -1) + { + static int error = 0; + if (!error) + perror("Can't ioctl the apm device"); + error = 1; + close(fd); + return; + } + close(fd); + BATlife = ai.ai_batt_life; + ACstatus = ai.ai_acline ; + BATflag = ai.ai_batt_stat == 3 ? 8 : 0; +#else len = read(fd, buf, sizeof(buf) - 1); close(fd); @@ -61,10 +90,11 @@ static int error = 1; if (error) { error = 0; - warn(_("/proc/apm - unknown format (%d)"), i); + warn(_("%s - unknown format (%d)"), APMDEV, i); } return ; } +#endif if (BATlife == -1) BATlife = 0;