Add option to output only once and exit

This commit is contained in:
Aaron Marcher 2018-05-21 14:07:41 +02:00
parent aa8654795d
commit fa8b939990
2 changed files with 13 additions and 4 deletions

View file

@ -6,7 +6,7 @@
.Nd suckless status monitor .Nd suckless status monitor
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm .Nm
.Op Fl s .Op Fl so
.Sh DESCRIPTION .Sh DESCRIPTION
.Nm .Nm
is a suckless status monitor for window managers that use WM_NAME (e.g. dwm) or is a suckless status monitor for window managers that use WM_NAME (e.g. dwm) or
@ -18,6 +18,8 @@ outputs to WM_NAME.
.Bl -tag -width Ds .Bl -tag -width Ds
.It Fl s .It Fl s
Write to stdout instead of WM_NAME. Write to stdout instead of WM_NAME.
.It Fl o
Write only once and exit.
.El .El
.Sh CUSTOMIZATION .Sh CUSTOMIZATION
.Nm .Nm

View file

@ -42,7 +42,7 @@ difftimespec(struct timespec *res, struct timespec *a, struct timespec *b)
static void static void
usage(void) usage(void)
{ {
die("usage: %s [-s]", argv0); die("usage: %s [-so]", argv0);
} }
int int
@ -51,15 +51,18 @@ main(int argc, char *argv[])
struct sigaction act; struct sigaction act;
struct timespec start, current, diff, intspec, wait; struct timespec start, current, diff, intspec, wait;
size_t i, len; size_t i, len;
int sflag, ret; int sflag, oflag, ret;
char status[MAXLEN]; char status[MAXLEN];
const char *res; const char *res;
sflag = 0; sflag = oflag = 0;
ARGBEGIN { ARGBEGIN {
case 's': case 's':
sflag = 1; sflag = 1;
break; break;
case 'o':
oflag = 1;
break;
default: default:
usage(); usage();
} ARGEND } ARGEND
@ -107,6 +110,10 @@ main(int argc, char *argv[])
XFlush(dpy); XFlush(dpy);
} }
if (oflag) {
done = 1;
}
if (!done) { if (!done) {
if (clock_gettime(CLOCK_MONOTONIC, &current) < 0) { if (clock_gettime(CLOCK_MONOTONIC, &current) < 0) {
die("clock_gettime:"); die("clock_gettime:");