Xinqi Bao's Git
projects
/
slstatus.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Add and use LEN() macro
[slstatus.git]
/
slstatus.c
diff --git
a/slstatus.c
b/slstatus.c
index
9a4831d
..
596d6a6
100644
(file)
--- a/
slstatus.c
+++ b/
slstatus.c
@@
-28,6
+28,8
@@
#include "arg.h"
#include "arg.h"
+#define LEN(x) (sizeof (x) / sizeof *(x))
+
struct arg {
const char *(*func)();
const char *fmt;
struct arg {
const char *(*func)();
const char *fmt;
@@
-75,7
+77,6
@@
static void usage(void);
char *argv0;
static unsigned short int delay = 0;
static unsigned short int done;
char *argv0;
static unsigned short int delay = 0;
static unsigned short int done;
-static unsigned short int dflag, oflag, nflag;
static Display *dpy;
#include "config.h"
static Display *dpy;
#include "config.h"
@@
-143,10
+144,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");
@@
-159,17
+169,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 < LEN(map); i++) {
+ if (!strcmp(map[i].state, state)) {
+ break;
+ }
}
}
+
+ return (i == LEN(map)) ? "?" : map[i].symbol;
}
static const char *
}
static const char *
@@
-741,7
+747,7
@@
vol_perc(const char *card)
close(afd);
return UNKNOWN_STR;
}
close(afd);
return UNKNOWN_STR;
}
- for (i = 0; i <
(sizeof(vnames) / sizeof((vnames[0]))
); i++) {
+ for (i = 0; i <
LEN(vnames
); i++) {
if (devmask & (1 << i) && !strcmp("vol", vnames[i])) {
if (ioctl(afd, MIXER_READ(i), &v) == -1) {
warn("vol_perc: ioctl");
if (devmask & (1 << i) && !strcmp("vol", vnames[i])) {
if (ioctl(afd, MIXER_READ(i), &v) == -1) {
warn("vol_perc: ioctl");
@@
-840,50
+846,38
@@
sighandler(const int signo)
static void
usage(void)
{
static void
usage(void)
{
- fprintf(stderr, "usage: %s [-
d] [-o] [-n] [-v] [-h
]\n", argv0);
+ fprintf(stderr, "usage: %s [-
s
]\n", argv0);
exit(1);
}
int
main(int argc, char *argv[])
{
exit(1);
}
int
main(int argc, char *argv[])
{
- unsigned short int i;
- char status_string[MAXLEN];
- char *element;
struct arg argument;
struct sigaction act;
struct arg argument;
struct sigaction act;
- size_t len;
+ size_t i, len;
+ int sflag = 0;
+ char status_string[MAXLEN];
+ char *element;
ARGBEGIN {
ARGBEGIN {
- case 'd':
- dflag = 1;
- break;
- case 'o':
- oflag = 1;
+ case 's':
+ sflag = 1;
break;
break;
- case 'n':
- nflag = 1;
- break;
- case 'v':
- printf("slstatus-"VERSION"\n");
- return 0;
default:
usage();
} ARGEND
default:
usage();
} ARGEND
- if (
(dflag && oflag) || (dflag && nflag) || (oflag && nflag)
) {
+ if (
argc
) {
usage();
}
usage();
}
- if (dflag && daemon(1, 1) < 0) {
- err(1, "daemon");
- }
memset(&act, 0, sizeof(act));
act.sa_handler = sighandler;
sigaction(SIGINT, &act, 0);
sigaction(SIGTERM, &act, 0);
memset(&act, 0, sizeof(act));
act.sa_handler = sighandler;
sigaction(SIGINT, &act, 0);
sigaction(SIGTERM, &act, 0);
- if (!
o
flag) {
+ if (!
s
flag) {
dpy = XOpenDisplay(NULL);
}
dpy = XOpenDisplay(NULL);
}
@@
-892,8
+886,7
@@
main(int argc, char *argv[])
while (!done) {
status_string[0] = '\0';
while (!done) {
status_string[0] = '\0';
- for (element = status_string, i = len = 0;
- i < sizeof(args) / sizeof(args[0]);
+ for (element = status_string, i = len = 0; i < LEN(args);
++i, element += len) {
argument = args[i];
len = snprintf(element, sizeof(status_string)-1 - len,
++i, element += len) {
argument = args[i];
len = snprintf(element, sizeof(status_string)-1 - len,
@@
-905,11
+898,8
@@
main(int argc, char *argv[])
}
}
}
}
- if (oflag) {
- printf("%s\n", status_string);
- } else if (nflag) {
+ if (sflag) {
printf("%s\n", status_string);
printf("%s\n", status_string);
- done = 1;
} else {
XStoreName(dpy, DefaultRootWindow(dpy), status_string);
XSync(dpy, False);
} else {
XStoreName(dpy, DefaultRootWindow(dpy), status_string);
XSync(dpy, False);
@@
-924,7
+914,7
@@
main(int argc, char *argv[])
}
}
}
}
- if (!
o
flag) {
+ if (!
s
flag) {
XStoreName(dpy, DefaultRootWindow(dpy), NULL);
XCloseDisplay(dpy);
}
XStoreName(dpy, DefaultRootWindow(dpy), NULL);
XCloseDisplay(dpy);
}