all repos — slstatus @ 178c23e3d2b75a99010987bf3e17a82ff7b83b6a

my build of slstatus (tools.suckless.org/slstatus/)

Refactor battery_state()
Laslo Hunhold dev@frign.de
Fri, 11 Aug 2017 00:17:49 +0200
commit

178c23e3d2b75a99010987bf3e17a82ff7b83b6a

parent

6b8384ef2f7328580425ac2cc75e0c65a04aa942

1 files changed, 17 insertions(+), 12 deletions(-)

jump to
M slstatus.cslstatus.c

@@ -142,10 +142,19 @@

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 @@ fclose(fp);

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 *