commit 0bea6841ebe1b1b006e37c9518bb897bd1a85cbd
parent a1a993210f33efedd0fed1d97dfd3af3bfac5283
Author: Christoph Lohmann <20h@r-36.net>
Date: Sat, 8 Oct 2011 14:42:58 +0200
And here is the references C file for battery ACPI.
Diffstat:
1 file changed, 55 insertions(+), 0 deletions(-)
diff --git a/dwm.suckless.org/dwmstatus/new-acpi-battery.c b/dwm.suckless.org/dwmstatus/new-acpi-battery.c
@@ -0,0 +1,55 @@
+char *
+readfile(char *base, char *file)
+{
+ char *path, line[513];
+ FILE *fd;
+
+ memset(line, 0, sizeof(line));
+
+ path = smprintf("%s/%s", base, file);
+ fd = fopen(path, "r");
+ if (fd == NULL) {
+ perror("fopen");
+ exit(1);
+ }
+ free(path);
+
+ if (fgets(line, sizeof(line)-1, fd) == NULL) {
+ perror("fgets");
+ exit(1);
+ }
+ fclose(fd);
+
+ return smprintf("%s", line);
+}
+
+char *
+getbattery(char *base)
+{
+ char *co;
+ int descap, remcap;
+
+ descap = -1;
+ remcap = -1;
+
+ co = readfile(base, "present");
+ if (co[0] != '1') {
+ free(co);
+ return smprintf("not present");
+ }
+ free(co);
+
+ co = readfile(base, "charge_full_design");
+ sscanf(co, "%d", &descap);
+ free(co);
+
+ co = readfile(base, "charge_now");
+ sscanf(co, "%d", &remcap);
+ free(co);
+
+ if (remcap < 0 || descap < 0)
+ return smprintf("invalid");
+
+ return smprintf("%.0f", ((float)remcap / (float)descap) * 100);
+}
+