From 178c23e3d2b75a99010987bf3e17a82ff7b83b6a Mon Sep 17 00:00:00 2001 From: Laslo Hunhold Date: Fri, 11 Aug 2017 00:17:49 +0200 Subject: Refactor battery_state() --- slstatus.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'slstatus.c') diff --git a/slstatus.c b/slstatus.c index 052af87..c4a9e92 100644 --- a/slstatus.c +++ b/slstatus.c @@ -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 * -- cgit v1.2.3