--- /dev/null
+#include <stdio.h>
+#include <limits.h>
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <machine/apmvar.h>
+
+int main(void)
+{
+ const int apmf = open("/dev/apm", O_RDONLY);
+
+ if (apmf == -1) {
+ goto print_error;
+ }
+
+ struct apm_power_info api;
+
+ if (ioctl(apmf, APM_IOC_GETPOWER, &api) == 0) {
+ if ( close(apmf) != 0 ) {
+ goto print_error;
+ }
+
+ const char* ac_state = api.ac_state == APM_AC_OFF ? "BAT" : "AC";
+
+ printf("%s - %hhu%%"
+ , ac_state
+ , api.battery_life);
+
+ if (api.minutes_left != UINT_MAX) {
+ printf(" - %u min", api.minutes_left);
+ }
+
+ printf("\n");
+
+ return EXIT_SUCCESS;
+ }
+
+print_error:
+ fprintf(stderr, "Error: %s", strerror(errno));
+ return EXIT_FAILURE;
+}