Xinqi Bao's Git
projects
/
slstatus.git
/ diff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
6b8384e
)
Refactor battery_state()
author
Laslo Hunhold <
[email protected]
>
Thu, 10 Aug 2017 22:17:49 +0000
(
00:17
+0200)
committer
Aaron Marcher <
[email protected]
>
Thu, 10 Aug 2017 22:20:47 +0000
(
00:20
+0200)
slstatus.c
diff
|
blob
|
history
diff --git
a/slstatus.c
b/slstatus.c
index
052af87
..
c4a9e92
100644
(file)
--- a/
slstatus.c
+++ b/
slstatus.c
@@
-142,10
+142,19
@@
battery_power(const char *bat)
static const char *
battery_state(const char *bat)
{
static const char *
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");
fp = fopen(path, "r");
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 (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 *
}
static const char *