sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | 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