Refactor battery_state()

This commit is contained in:
Laslo Hunhold 2017-08-11 00:17:49 +02:00 committed by Aaron Marcher
parent 6b8384ef2f
commit 178c23e3d2
No known key found for this signature in database
GPG Key ID: 74B048E5C2474F9A

View File

@ -142,10 +142,19 @@ battery_power(const char *bat)
static const char *
battery_state(const char *bat)
{
char path[PATH_MAX];
char state[12];
FILE *fp;
struct {
char *state;
char *symbol;
} map[] = {
{ "Charging", "+" },
{ "Discharging", "-" },
{ "Full", "=" },
{ "Unknown", "/" },
};
size_t i;
int n;
char path[PATH_MAX], state[12];
snprintf(path, sizeof(path), "%s%s%s", "/sys/class/power_supply/", bat, "/status");
fp = fopen(path, "r");
@ -158,17 +167,13 @@ battery_state(const char *bat)
if (n != 1)
return UNKNOWN_STR;
if (strcmp(state, "Charging") == 0) {
return "+";
} else if (strcmp(state, "Discharging") == 0) {
return "-";
} else if (strcmp(state, "Full") == 0) {
return "=";
} else if (strcmp(state, "Unknown") == 0) {
return "/";
} else {
return "?";
for (i = 0; i < sizeof(map) / sizeof(*map); i++) {
if (!strcmp(map[i].state, state)) {
break;
}
}
return (i == sizeof(map) / sizeof(*map)) ? "?" : map[i].symbol;
}
static const char *