Xinqi Bao's Git
projects
/
slstatus.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
added daemonization, output possibility to console (for other programs) and moved...
[slstatus.git]
/
slstatus.c
diff --git
a/slstatus.c
b/slstatus.c
index
a13bf3b
..
be124f3
100644
(file)
--- a/
slstatus.c
+++ b/
slstatus.c
@@
-26,6
+26,7
@@
#undef strlcat
#undef strlcpy
#undef strlcat
#undef strlcpy
+#include "arg.h"
#include "strlcat.h"
#include "strlcpy.h"
#include "concat.h"
#include "strlcat.h"
#include "strlcpy.h"
#include "concat.h"
@@
-64,9
+65,12
@@
static char *username(void);
static char *vol_perc(const char *);
static char *wifi_perc(const char *);
static char *wifi_essid(const char *);
static char *vol_perc(const char *);
static char *wifi_perc(const char *);
static char *wifi_essid(const char *);
+static void set_status(const char *);
static void sighandler(const int);
static void sighandler(const int);
+static void usage(void);
-static unsigned short int delay, done;
+char *argv0;
+static unsigned short int delay, done, dflag, oflag;
static Display *dpy;
#include "config.h"
static Display *dpy;
#include "config.h"
@@
-407,7
+411,7
@@
static char *
run_command(const char* command)
{
FILE *fp = popen(command, "r");
run_command(const char* command)
{
FILE *fp = popen(command, "r");
- char buffer[64] =
'\0'
;
+ char buffer[64] =
"\0"
;
if (fp == NULL) {
warn("Could not get command output for: %s", command);
if (fp == NULL) {
warn("Could not get command output for: %s", command);
@@
-579,6
+583,13
@@
wifi_essid(const char *wificard)
return smprintf("%s", (char *)wreq.u.essid.pointer);
}
return smprintf("%s", (char *)wreq.u.essid.pointer);
}
+static void
+set_status(const char *str)
+{
+ XStoreName(dpy, DefaultRootWindow(dpy), str);
+ XSync(dpy, False);
+}
+
static void
sighandler(const int signo)
{
static void
sighandler(const int signo)
{
@@
-586,8
+597,20
@@
sighandler(const int signo)
done = 1;
}
done = 1;
}
+static void
+usage(void)
+{
+ fprintf(stderr,
+ "slstatus (c) 2016, drkhsh\n"
+ "usage: %s [-dho]\n",
+ argv0);
+ exit(1);
+}
+
+
+
int
int
-main(
void
)
+main(
int argc, char *argv[]
)
{
unsigned short int i;
char status_string[4096];
{
unsigned short int i;
char status_string[4096];
@@
-595,6
+618,22
@@
main(void)
struct arg argument;
struct sigaction act;
struct arg argument;
struct sigaction act;
+ ARGBEGIN {
+ case 'd':
+ dflag = 1;
+ break;
+ case 'o':
+ oflag = 1;
+ break;
+ default:
+ usage();
+ } ARGEND
+
+ if (dflag && oflag)
+ usage();
+ if (dflag)
+ (void)daemon(1, 1);
+
memset(&act, 0, sizeof(act));
act.sa_handler = sighandler;
sigaction(SIGINT, &act, 0);
memset(&act, 0, sizeof(act));
act.sa_handler = sighandler;
sigaction(SIGINT, &act, 0);
@@
-604,6
+643,7
@@
main(void)
while (!done) {
status_string[0] = '\0';
while (!done) {
status_string[0] = '\0';
+
for (i = 0; i < sizeof(args) / sizeof(args[0]); ++i) {
argument = args[i];
if (argument.args == NULL)
for (i = 0; i < sizeof(args) / sizeof(args[0]); ++i) {
argument = args[i];
if (argument.args == NULL)
@@
-619,8
+659,12
@@
main(void)
free(res);
free(element);
}
free(res);
free(element);
}
- XStoreName(dpy, DefaultRootWindow(dpy), status_string);
- XSync(dpy, False);
+
+ if (!oflag)
+ set_status(status_string);
+ else
+ printf("%s\n", status_string);
+
/*
* subtract delay time spend in function
* calls from the actual global delay time
/*
* subtract delay time spend in function
* calls from the actual global delay time
@@
-629,8
+673,8
@@
main(void)
delay = 0;
}
delay = 0;
}
- XStoreName(dpy, DefaultRootWindow(dpy), NULL);
-
XSync(dpy, False
);
+ if (!oflag)
+
set_status(NULL
);
XCloseDisplay(dpy);
XCloseDisplay(dpy);