summaryrefslogtreecommitdiff
path: root/sysutils/xbattbar/files/patch-xbattbar.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/xbattbar/files/patch-xbattbar.c')
-rw-r--r--sysutils/xbattbar/files/patch-xbattbar.c149
1 files changed, 0 insertions, 149 deletions
diff --git a/sysutils/xbattbar/files/patch-xbattbar.c b/sysutils/xbattbar/files/patch-xbattbar.c
deleted file mode 100644
index 65d3eaa7b1f8..000000000000
--- a/sysutils/xbattbar/files/patch-xbattbar.c
+++ /dev/null
@@ -1,149 +0,0 @@
---- xbattbar.c.orig 2001-02-02 06:25:29.000000000 +0100
-+++ xbattbar.c 2012-04-04 17:47:34.000000000 +0200
-@@ -29,6 +29,8 @@ static char *ReleaseVersion="1.4.2";
- #include <sys/time.h>
- #include <signal.h>
- #include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
- #include <unistd.h>
- #include <sys/file.h>
- #include <sys/ioctl.h>
-@@ -501,6 +503,10 @@ void battery_check(void)
-
- #ifdef __FreeBSD__
-
-+#include <sys/types.h>
-+#include <sys/sysctl.h>
-+
-+#if defined(__i386__)
- #include <machine/apm_bios.h>
-
- #define APMDEV21 "/dev/apm0"
-@@ -515,54 +521,90 @@ void battery_check(void)
- #define APM_STAT_BATT_LOW 1
- #define APM_STAT_BATT_CRITICAL 2
- #define APM_STAT_BATT_CHARGING 3
-+#endif /* i386 */
-
- int first = 1;
- void battery_check(void)
- {
-- int fd, r, p;
-- struct apm_info info;
-+ int r, p;
-+ static int sysctl = 1;
-
-- if ((fd = open(APMDEV21, O_RDWR)) == -1 &&
-- (fd = open(APMDEV22, O_RDWR)) == -1) {
-- fprintf(stderr, "xbattbar: cannot open apm device\n");
-- exit(1);
-- }
-- if (ioctl(fd, APMIO_GETINFO, &info) == -1) {
-- fprintf(stderr, "xbattbar: ioctl APMIO_GETINFO failed\n");
-- exit(1);
-+ if (sysctl) {
-+ size_t r_size, p_size;
-+
-+ /* get current status */
-+ r_size = sizeof(r);
-+ if (sysctl && sysctlbyname("hw.acpi.battery.life", &r, &r_size, NULL, 0) == -1) {
-+#if defined(__i386__)
-+ fprintf(stderr, "xbattbar: fall back to apm interface\n");
-+ sysctl = 0;
-+#else /* !i386 */
-+ fprintf(stderr, "xbattbar: can not get battery status\n");
-+ exit(1);
-+#endif /* i386 */
-+ }
-+
-+ /* get AC-line status */
-+ p_size = sizeof(p);
-+ if (sysctl && sysctlbyname("hw.acpi.acline", &p, &p_size, NULL, 0) == -1) {
-+#if defined(__i386__)
-+ fprintf(stderr, "xbattbar: fall back to apm interface\n");
-+ sysctl = 0;
-+#else /* !i386 */
-+ fprintf(stderr, "xbattbar: can not get AC-line status\n");
-+ exit(1);
-+#endif /* i386 */
-+ }
- }
-- close (fd);
-
-- ++elapsed_time;
-+#if defined(__i386__)
-+ if (!sysctl) {
-+ int fd;
-+ struct apm_info info;
-+
-+ if ((fd = open(APMDEV21, O_RDONLY)) == -1 &&
-+ (fd = open(APMDEV22, O_RDONLY)) == -1) {
-+ fprintf(stderr, "xbattbar: cannot open apm device\n");
-+ exit(1);
-+ }
-+ if (ioctl(fd, APMIO_GETINFO, &info) == -1) {
-+ fprintf(stderr, "xbattbar: ioctl APMIO_GETINFO failed\n");
-+ exit(1);
-+ }
-+ close (fd);
-
-- /* get current status */
-- if (info.ai_batt_life == APM_STAT_UNKNOWN) {
-- switch (info.ai_batt_stat) {
-- case APM_STAT_BATT_HIGH:
-- r = 100;
-- break;
-- case APM_STAT_BATT_LOW:
-- r = 40;
-- break;
-- case APM_STAT_BATT_CRITICAL:
-- r = 10;
-- break;
-- default: /* expected to be APM_STAT_UNKNOWN */
-+ /* get current status */
-+ if (info.ai_batt_life == APM_STAT_UNKNOWN) {
-+ switch (info.ai_batt_stat) {
-+ case APM_STAT_BATT_HIGH:
-+ r = 100;
-+ break;
-+ case APM_STAT_BATT_LOW:
-+ r = 40;
-+ break;
-+ case APM_STAT_BATT_CRITICAL:
-+ r = 10;
-+ break;
-+ default: /* expected to be APM_STAT_UNKNOWN */
-+ r = 100;
-+ }
-+ } else if (info.ai_batt_life > 100) {
-+ /* some APM BIOSes return values slightly > 100 */
- r = 100;
-+ } else {
-+ r = info.ai_batt_life;
- }
-- } else if (info.ai_batt_life > 100) {
-- /* some APM BIOSes return values slightly > 100 */
-- r = 100;
-- } else {
-- r = info.ai_batt_life;
-- }
-
-- /* get AC-line status */
-- if (info.ai_acline == APM_STAT_LINE_ON) {
-- p = APM_STAT_LINE_ON;
-- } else {
-- p = APM_STAT_LINE_OFF;
-+ /* get AC-line status */
-+ if (info.ai_acline == APM_STAT_LINE_ON) {
-+ p = APM_STAT_LINE_ON;
-+ } else {
-+ p = APM_STAT_LINE_OFF;
-+ }
- }
-+#endif /* i386 */
-+
-+ ++elapsed_time;
-
- if (first || ac_line != p || battery_level != r) {
- first = 0;