From b2d3776ce44c85a03a507aa21f3a55e3800b59b0 Mon Sep 17 00:00:00 2001 From: Federico klez Culloca Date: Sat, 13 Jun 2026 21:40:57 +0200 Subject: [PATCH] initial --- Makefile | 11 +++++++++++ bat.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 Makefile create mode 100644 bat.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a7204f2 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +bat : bat.c + cc -o bat bat.o -std=c23 + +install : bat + cp bat ~/bin/bat + +clean : + rm bat + +check : bat.c + cppcheck bat.c --std=c23 --check-level=exhaustive diff --git a/bat.c b/bat.c new file mode 100644 index 0000000..849a897 --- /dev/null +++ b/bat.c @@ -0,0 +1,44 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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; +} -- 2.47.3