--- src/aapm.cc.orig Mon Nov 8 20:45:52 1999 +++ src/aapm.cc Wed Dec 1 16:42:31 1999 @@ -20,15 +20,32 @@ #include #include +#ifdef __FreeBSD__ +#include +#include +#include +#include +#endif + #ifdef CONFIG_APM YColor *YApm::apmBg = 0; YColor *YApm::apmFg = 0; YFont *YApm::apmFont = 0; +#ifdef __FreeBSD__ +#define APMDEV "/dev/apm" +#else +#define APMDEV "/proc/apm" +#endif + 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; @@ -40,9 +57,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); @@ -60,6 +95,7 @@ } return ; } +#endif if (BATlife == -1) BATlife = 0;