$OpenBSD: patch-wmapm_c,v 1.2 2005/03/07 05:37:20 mcbride Exp $ --- wmapm/wmapm.c.orig Tue Jan 11 17:37:25 2000 +++ wmapm/wmapm.c Wed Jan 10 17:35:20 2001 @@ -151,12 +151,17 @@ #endif -#ifdef FreeBSD +#if defined(FreeBSD) || defined(__OpenBSD__) #include #include #include +#endif +#if defined(FreeBSD) #include +#elif defined(__OpenBSD__) +#include #endif +#include #include #include #include @@ -173,10 +178,10 @@ #ifdef Linux int apm_read(struct my_apm_info *i); -#else -# ifdef FreeBSD +#elif defined(FreeBSD) int apm_read(apm_info_t temp_info); -# endif +#elif defined(__OpenBSD__) +int apm_read(struct apm_power_info *temp_info); #endif int apm_exists(); void ParseCMDLine(int argc, char *argv[]); @@ -217,6 +222,8 @@ int main(int argc, char *argv[]) { digit; #ifdef FreeBSD struct apm_info temp_info; +#elif defined(__OpenBSD__) + struct apm_power_info temp_info; #endif XEvent event; int m, mMax, n, nMax, k, Toggle; @@ -305,12 +312,10 @@ int main(int argc, char *argv[]) { #if defined(Linux) || defined(SunOS) if (apm_read(&my_cur_info)) { -#else -# ifdef FreeBSD +#elif defined(FreeBSD) || defined(__OpenBSD__) if (apm_read(&temp_info)) { -# endif #endif - fprintf(stderr, "Cannot read APM information: %i\n"); + fprintf(stderr, "Cannot read APM information: %i\n", errno); exit(1); } @@ -320,6 +325,11 @@ int main(int argc, char *argv[]) { my_cur_info.battery_status = (int)temp_info.ai_batt_stat; my_cur_info.battery_percentage = (int)temp_info.ai_batt_life; my_cur_info.battery_time = (int)temp_info.ai_batt_time; +#elif defined(__OpenBSD__) + my_cur_info.ac_line_status = (int)temp_info.ac_state; + my_cur_info.battery_status = (int)temp_info.battery_state; + my_cur_info.battery_percentage = (int)temp_info.battery_life; + my_cur_info.battery_time = (int)temp_info.minutes_left; #endif @@ -399,10 +409,10 @@ int main(int argc, char *argv[]) { */ #ifdef Linux if (my_cur_info.battery_time >= ((my_cur_info.using_minutes) ? 1440 : 86400) ) { -#else -# ifdef FreeBSD +#elif defined(FreeBSD) if (my_cur_info.battery_time >= 86400) { -# endif +#elif defined(__OpenBSD__) + if (my_cur_info.battery_time >= 1440) { #endif /* @@ -417,9 +427,10 @@ int main(int argc, char *argv[]) { #ifdef Linux time_left = (my_cur_info.using_minutes) ? my_cur_info.battery_time : my_cur_info.battery_time / 60; -#endif -#ifdef FreeBSD - time_left = (my_cur_info.using_minutes) ? my_cur_info.battery_time / 60 : my_cur_info.battery_time / 3600; +#elif defined(FreeBSD) + time_left = my_cur_info.battery_time / 3600; +#elif defined(__OpenBSD__) + time_left = my_cur_info.battery_time; #endif hour_left = time_left / 60; @@ -689,7 +700,7 @@ void pressEvent(XButtonEvent *xev){ copyXPMArea(21, 106, 13, 11, 46, 48); RedrawWindow(); #ifndef SunOS - system("apm -s"); + system("apm -z"); #endif usleep(2000000L); @@ -837,13 +848,12 @@ int apm_read(struct my_apm_info *i){ return retcode; } -#else -# ifdef FreeBSD +#elif defined(FreeBSD) int apm_read(apm_info_t temp_info) { int fd; - if ( (fd = open(APMDEV, O_RDWR)) < 0){ + if ( (fd = open(APMDEV, O_RDONLY)) < 0){ return(1); @@ -860,10 +870,28 @@ int apm_read(apm_info_t temp_info) { } } -# endif -#endif +#elif defined(__OpenBSD__) +int apm_read(struct apm_power_info *temp_info) { + + int fd; + + if ( (fd = open(APMDEV, O_RDONLY)) < 0){ + return(1); -#ifdef SunOS + } else if ( ioctl(fd, APM_IOC_GETPOWER, temp_info) == -1 ) { + + close(fd); + return(1); + + } else { + + close(fd); + return(0); + + } + +} +#elif defined(SunOS) int apm_read(struct my_apm_info *i) { int fd;