+#if defined(__OpenBSD__)
+ struct apm_power_info info;
+ if (ioctl(apm_fd, APM_IOC_GETPOWER, &(info)) < 0)
+ warn("power update: APM_IOC_GETPOWER");
+
+ // best attempt at mapping to linux battery states
+ battery_state.state = BATTERY_UNKNOWN;
+ switch (info.battery_state) {
+ case APM_BATT_CHARGING:
+ battery_state.state = BATTERY_CHARGING;
+ break;
+ default:
+ battery_state.state = BATTERY_DISCHARGING;
+ break;
+ }
+
+ if (info.battery_life == 100)
+ battery_state.state = BATTERY_FULL;
+
+ // no mapping for openbsd really
+ energy_full = 0;
+ energy_now = 0;
+
+ if (info.minutes_left != -1)
+ seconds = info.minutes_left * 60;
+ else
+ seconds = -1;
+
+ new_percentage = info.battery_life;
+
+#else