+char *find_battery_dir() {
+ glob_t globbuf = {.gl_offs = 0};
+ char pattern[] = "/sys/class/power_supply/*[Bb][Aa][Tt]*";
+ if (glob(pattern, GLOB_ERR, NULL, &globbuf) != 0 || globbuf.gl_pathc == 0) {
+ fprintf(stderr, "Could not find battery dir %s\n", pattern);
+ exit(1);
+ }
+ if (globbuf.gl_pathc != 1) {
+ // TODO: Filter for directories that have {voltage,current}_now files.
+ // TODO: Support multiple batteries
+ fprintf(stderr, "Multiple batteries found. Arbitrarily choosing %s\n",
+ globbuf.gl_pathv[0]);
+ }
+ char *dir = strdup(globbuf.gl_pathv[0]);
+ globfree(&globbuf);
+ return dir;
+}
+