batterystatus.c - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       batterystatus.c (1218B)
       ---
            1 #define BATT_NOW        "/sys/class/power_supply/BAT0/charge_now"
            2 #define BATT_FULL       "/sys/class/power_supply/BAT0/charge_full"
            3 #define BATT_STATUS       "/sys/class/power_supply/BAT0/status"
            4 
            5 #include <stdio.h>
            6 #include <stdlib.h>
            7 #include <string.h>
            8 #include <errno.h>
            9 
           10 char *
           11 smprintf(char *fmt, ...)
           12 {
           13         va_list fmtargs;
           14         char *buf = NULL;
           15 
           16         va_start(fmtargs, fmt);
           17         if (vasprintf(&buf, fmt, fmtargs) == -1){
           18                 fprintf(stderr, "malloc vasprintf\n");
           19                 exit(1);
           20     }
           21         va_end(fmtargs);
           22 
           23         return buf;
           24 }
           25 
           26 char *
           27 getbattery(){
           28     long lnum1, lnum2 = 0;
           29     char *status = malloc(sizeof(char)*12);
           30     char s = '?';
           31     FILE *fp = NULL;
           32     if ((fp = fopen(BATT_NOW, "r"))) {
           33         fscanf(fp, "%ld\n", &lnum1);
           34         fclose(fp);
           35         fp = fopen(BATT_FULL, "r");
           36         fscanf(fp, "%ld\n", &lnum2);
           37         fclose(fp);
           38         fp = fopen(BATT_STATUS, "r");
           39         fscanf(fp, "%s\n", status);
           40         fclose(fp);
           41         if (strcmp(status,"Charging") == 0)
           42             s = '+';
           43         if (strcmp(status,"Discharging") == 0)
           44             s = '-';
           45         if (strcmp(status,"Full") == 0)
           46             s = '=';
           47         return smprintf("%c%ld%%", s,(lnum1/(lnum2/100)));
           48     }
           49     else return smprintf("");
           50 }
           51 
           52 
           53