summaryrefslogtreecommitdiff
path: root/slstatus.c
diff options
context:
space:
mode:
authorAaron Marcher <info@nulltime.net>2017-05-11 19:06:45 +0200
committerAaron Marcher <info@nulltime.net>2017-05-11 19:06:45 +0200
commit870d68d44e33f9fb7a5402becbc0b5c363066bcc (patch)
tree1c917374df4b98022d9631212a2bde795b301085 /slstatus.c
parentac1a57ec30e8729166b6b890a0f33256218d1ef6 (diff)
added option to output only once and exit afterwards
Diffstat (limited to 'slstatus.c')
-rw-r--r--slstatus.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/slstatus.c b/slstatus.c
index 9e6aca0..8241451 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -71,7 +71,7 @@ static void usage(const int eval);
char *argv0;
static unsigned short int delay = 0;
static unsigned short int done;
-static unsigned short int dflag, oflag;
+static unsigned short int dflag, oflag, nflag;
static Display *dpy;
#include "config.h"
@@ -775,7 +775,7 @@ sighandler(const int signo)
static void
usage(const int eval)
{
- fprintf(stderr, "usage: %s [-d] [-o] [-v] [-h]\n", argv0);
+ fprintf(stderr, "usage: %s [-d] [-o] [-n] [-v] [-h]\n", argv0);
exit(eval);
}
@@ -795,6 +795,9 @@ main(int argc, char *argv[])
case 'o':
oflag = 1;
break;
+ case 'n':
+ nflag = 1;
+ break;
case 'v':
printf("slstatus (C) 2016-2017 slstatus engineers\n");
return 0;
@@ -804,7 +807,7 @@ main(int argc, char *argv[])
usage(1);
} ARGEND
- if (dflag && oflag) {
+ if ((dflag && oflag) || (dflag && nflag) || (oflag && nflag)) {
usage(1);
}
if (dflag && daemon(1, 1) < 0) {
@@ -842,11 +845,14 @@ main(int argc, char *argv[])
free(element);
}
- if (!oflag) {
+ if (oflag) {
+ printf("%s\n", status_string);
+ } else if (nflag) {
+ printf("%s\n", status_string);
+ done = 1;
+ } else {
XStoreName(dpy, DefaultRootWindow(dpy), status_string);
XSync(dpy, False);
- } else {
- printf("%s\n", status_string);
}
if ((UPDATE_INTERVAL - delay) <= 0) {