Refactor battery_state()
This commit is contained in:
parent
6b8384ef2f
commit
178c23e3d2
1 changed files with 17 additions and 12 deletions
29
slstatus.c
29
slstatus.c
|
@ -142,10 +142,19 @@ battery_power(const char *bat)
|
||||||
static const char *
|
static const char *
|
||||||
battery_state(const char *bat)
|
battery_state(const char *bat)
|
||||||
{
|
{
|
||||||
char path[PATH_MAX];
|
|
||||||
char state[12];
|
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
struct {
|
||||||
|
char *state;
|
||||||
|
char *symbol;
|
||||||
|
} map[] = {
|
||||||
|
{ "Charging", "+" },
|
||||||
|
{ "Discharging", "-" },
|
||||||
|
{ "Full", "=" },
|
||||||
|
{ "Unknown", "/" },
|
||||||
|
};
|
||||||
|
size_t i;
|
||||||
int n;
|
int n;
|
||||||
|
char path[PATH_MAX], state[12];
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "%s%s%s", "/sys/class/power_supply/", bat, "/status");
|
snprintf(path, sizeof(path), "%s%s%s", "/sys/class/power_supply/", bat, "/status");
|
||||||
fp = fopen(path, "r");
|
fp = fopen(path, "r");
|
||||||
|
@ -158,17 +167,13 @@ battery_state(const char *bat)
|
||||||
if (n != 1)
|
if (n != 1)
|
||||||
return UNKNOWN_STR;
|
return UNKNOWN_STR;
|
||||||
|
|
||||||
if (strcmp(state, "Charging") == 0) {
|
for (i = 0; i < sizeof(map) / sizeof(*map); i++) {
|
||||||
return "+";
|
if (!strcmp(map[i].state, state)) {
|
||||||
} else if (strcmp(state, "Discharging") == 0) {
|
break;
|
||||||
return "-";
|
|
||||||
} else if (strcmp(state, "Full") == 0) {
|
|
||||||
return "=";
|
|
||||||
} else if (strcmp(state, "Unknown") == 0) {
|
|
||||||
return "/";
|
|
||||||
} else {
|
|
||||||
return "?";
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (i == sizeof(map) / sizeof(*map)) ? "?" : map[i].symbol;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
|
|
Loading…
Reference in a new issue