From 84ae3d0163bee88bda5206d4f8bb2ee69425640e Mon Sep 17 00:00:00 2001 From: Martin Wilke Date: Sun, 27 Mar 2011 10:36:11 +0000 Subject: - Fix Battery Status PR: 155745 Submitted by: John Marshall --- sysutils/xfce4-battery-plugin/Makefile | 1 + .../files/patch-panel-plugin_libacpi.c | 82 ++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 sysutils/xfce4-battery-plugin/files/patch-panel-plugin_libacpi.c (limited to 'sysutils') diff --git a/sysutils/xfce4-battery-plugin/Makefile b/sysutils/xfce4-battery-plugin/Makefile index 267c428a3fcf..9664c6894549 100644 --- a/sysutils/xfce4-battery-plugin/Makefile +++ b/sysutils/xfce4-battery-plugin/Makefile @@ -7,6 +7,7 @@ PORTNAME= xfce4-battery-plugin PORTVERSION= 1.0.0 +PORTREVISION= 1 CATEGORIES= sysutils xfce MASTER_SITES= ${MASTER_SITE_XFCE} MASTER_SITE_SUBDIR=/src/panel-plugins/${PORTNAME}/${PORTVERSION:R} diff --git a/sysutils/xfce4-battery-plugin/files/patch-panel-plugin_libacpi.c b/sysutils/xfce4-battery-plugin/files/patch-panel-plugin_libacpi.c new file mode 100644 index 000000000000..b9109422b000 --- /dev/null +++ b/sysutils/xfce4-battery-plugin/files/patch-panel-plugin_libacpi.c @@ -0,0 +1,82 @@ +--- panel-plugin/libacpi.c.orig 2011-01-03 23:38:40.000000000 +1100 ++++ panel-plugin/libacpi.c 2011-03-21 15:38:01.000000000 +1100 +@@ -30,6 +30,16 @@ + #include + #include + ++#ifdef __FreeBSD__ ++#include ++#include ++#include ++#define ACPIDEV "/dev/acpi" ++static int acpifd; ++#define UNKNOWN_CAP 0xffffffff ++#define UNKNOWN_VOLTAGE 0xffffffff ++#endif ++ + #if HAVE_SYSCTL + + #if defined(__NetBSD__) || defined (__OpenBSD__) +@@ -484,6 +494,7 @@ + } + + return 1; ++ + #else + #ifdef HAVE_SYSCTL + static char buf[BUFSIZ]; +@@ -730,6 +741,24 @@ + #endif + } + acpiinfo->present = retval; ++ ++#ifdef __FreeBSD__ ++ union acpi_battery_ioctl_arg battio; ++ acpifd = open(ACPIDEV, O_RDONLY); ++ ++ battio.unit = battery; ++ if (ioctl(acpifd, ACPIIO_BATT_GET_BIF, &battio) == -1) { ++ return 0; ++ } ++ close(acpifd); ++ ++ acpiinfo->design_capacity = battio.bif.dcap; ++ acpiinfo->last_full_capacity = battio.bif.lfcap; ++ acpiinfo->battery_technology = battio.bif.btech; ++ acpiinfo->design_voltage = battio.bif.dvol; ++ acpiinfo->design_capacity_warning = battio.bif.wcap; ++ acpiinfo->design_capacity_low = battio.bif.lcap; ++#endif + return 1; + #else + return 0; +@@ -966,6 +995,29 @@ + #endif + } + acpistate->percentage =retval; ++ ++#ifdef __FreeBSD__ ++ union acpi_battery_ioctl_arg battio; ++ acpifd = open(ACPIDEV, O_RDONLY); ++ ++ battio.unit = battery; ++ if (ioctl(acpifd, ACPIIO_BATT_GET_BATTINFO, &battio) == -1) { ++ return 0; ++ } ++ ++ acpistate->state = battio.battinfo.state; ++ acpistate->prate = battio.battinfo.rate; ++ acpistate->rcapacity = acpiinfo->last_full_capacity * battio.battinfo.cap / 100; ++ acpistate->rtime = battio.battinfo.min; ++ acpistate->percentage = battio.battinfo.cap; ++ ++ battio.unit = battery; ++ if (ioctl(acpifd, ACPIIO_BATT_GET_BATTINFO, &battio) == -1) { ++ return 0; ++ } ++ close(acpifd); ++ acpistate->pvoltage = battio.bst.volt; ++#endif + return 1; + #else + return 0; -- cgit v1.2.3