Przeglądaj źródła

Add option to output only once and exit

Aaron Marcher 7 lat temu
rodzic
commit
fa8b939990
2 zmienionych plików z 13 dodań i 4 usunięć
  1. 3 1
      slstatus.1
  2. 10 3
      slstatus.c

+ 3 - 1
slstatus.1

@@ -6,7 +6,7 @@
 .Nd suckless status monitor
 .Sh SYNOPSIS
 .Nm
-.Op Fl s
+.Op Fl so
 .Sh DESCRIPTION
 .Nm
 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
 .It Fl s
 Write to stdout instead of WM_NAME.
+.It Fl o
+Write only once and exit.
 .El
 .Sh CUSTOMIZATION
 .Nm

+ 10 - 3
slstatus.c

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