To reproduce the issue:
$ slstatus -s | tee
then it would print only when the stdout buffer is full, by block
of multiple lines.
fflush() makes sure the line is printed at every loop iteration
---
slstatus.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/slstatus.c b/slstatus.c
index c1cf8ac..5842b3e 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -98,6 +98,7 @@ main(int argc, char *argv[])
if (sflag) {
printf("%s\n", status);
+ fflush(stdout);
} else {
XStoreName(dpy, DefaultRootWindow(dpy), status);
XSync(dpy, False);
--
2.10.0