X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/80fc20d1d69b14f36ad9bb64d8af38481cbf1ff5..51ff7ce2b99147a1a77ed243093865fc884e571a:/slstatus.c

diff --git a/slstatus.c b/slstatus.c
index 0c4605f..e6aa90b 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -36,7 +36,7 @@ difftimespec(struct timespec *res, struct timespec *a, struct timespec *b)
 {
 	res->tv_sec = a->tv_sec - b->tv_sec - (a->tv_nsec < b->tv_nsec);
 	res->tv_nsec = a->tv_nsec - b->tv_nsec +
-	               (a->tv_nsec < b->tv_nsec) * 1000000000;
+	               (a->tv_nsec < b->tv_nsec) * 1E9;
 }
 
 static void
@@ -73,10 +73,6 @@ main(int argc, char *argv[])
 	sigaction(SIGINT,  &act, NULL);
 	sigaction(SIGTERM, &act, NULL);
 
-	if (sflag) {
-		setbuf(stdout, NULL);
-	}
-
 	if (!sflag && !(dpy = XOpenDisplay(NULL))) {
 		die("XOpenDisplay: Failed to open display");
 	}
@@ -91,19 +87,18 @@ main(int argc, char *argv[])
 			if (!(res = args[i].func(args[i].args))) {
 				res = unknown_str;
 			}
-			if ((ret = snprintf(status + len, sizeof(status) - len,
+			if ((ret = esnprintf(status + len, sizeof(status) - len,
 			                    args[i].fmt, res)) < 0) {
-				warn("snprintf:");
-				break;
-			} else if ((size_t)ret >= sizeof(status) - len) {
-				warn("snprintf: Output truncated");
 				break;
 			}
 			len += ret;
 		}
 
 		if (sflag) {
-			printf("%s\n", status);
+			puts(status);
+			fflush(stdout);
+			if (ferror(stdout))
+				die("puts:");
 		} else {
 			if (XStoreName(dpy, DefaultRootWindow(dpy), status) < 0) {
 				die("XStoreName: Allocation failed");
@@ -118,7 +113,7 @@ main(int argc, char *argv[])
 			difftimespec(&diff, &current, &start);
 
 			intspec.tv_sec = interval / 1000;
-			intspec.tv_nsec = (interval % 1000) * 1000000;
+			intspec.tv_nsec = (interval % 1000) * 1E6;
 			difftimespec(&wait, &intspec, &diff);
 
 			if (wait.tv_sec >= 0) {