No Battery Fix

- Check if battery information directory exists before displaying info
- Fix divider spacing in battery-all-in-one
This commit is contained in:
Sravan Balaji
2020-08-07 00:05:13 -04:00
parent 1d22eea138
commit 764813c0c1

View File

@@ -2,6 +2,8 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <dirent.h>
#include <errno.h>
#include "../util.h" #include "../util.h"
@@ -121,18 +123,28 @@
battery_all_in_one(const char *bat) battery_all_in_one(const char *bat)
{ {
char path[PATH_MAX]; char path[PATH_MAX];
char *div = "";
// Handle case where battery isn't present
if (esnprintf(path, sizeof(path), if (esnprintf(path, sizeof(path),
"/sys/class/power_supply/%s/capacity", bat) < 0) { "/sys/class/power_supply/%s", bat) < 0) {
return ""; return bprintf(" %s ", div);
}
DIR* dir = opendir(path);
if (dir) {
// Battery exists
closedir(dir);
}
else if (ENOENT == errno) {
// Battery doesn't exist
return bprintf(" %s ", div);
} }
int percentage = atoi(battery_perc(bat)); int percentage = atoi(battery_perc(bat));
char *bat_icon = ""; char *bat_icon = "";
char *bat_status = ""; char *bat_status = "";
char *bat_rem = ""; char *bat_rem = "";
char *div = "";
// Add battery percentage icon // Add battery percentage icon
if (percentage < 20) { if (percentage < 20) {
@@ -178,7 +190,7 @@
sprintf(bat_rem, " (%s)", temp); sprintf(bat_rem, " (%s)", temp);
} }
return bprintf("%s %s%s %i%%%s %s ", div, bat_icon, bat_status, percentage, bat_rem, div); return bprintf(" %s %s%s %i%%%s %s ", div, bat_icon, bat_status, percentage, bat_rem, div);
} }
#elif defined(__OpenBSD__) #elif defined(__OpenBSD__)
#include <fcntl.h> #include <fcntl.h>