slstatus

Fork of suckless' slstatus with my personal patches
git clone https://git.instinctive.eu/slstatus.git
Log | Files | Refs | README | LICENSE

commit 178c23e3d2b75a99010987bf3e17a82ff7b83b6a
parent 6b8384ef2f7328580425ac2cc75e0c65a04aa942
Author: Laslo Hunhold <dev@frign.de>
Date:   Fri, 11 Aug 2017 00:17:49 +0200

Refactor battery_state()

Diffstat:
Mslstatus.c | 29+++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)

diff --git 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 *