Xinqi Bao's Git

Change done to int as it is the CPU's natural type
[slstatus.git] / slstatus.c
index 89a3268..e8d367b 100644 (file)
@@ -1,6 +1,4 @@
 /* See LICENSE file for copyright and license details. */
-#include <err.h>
-#include <errno.h>
 #include <locale.h>
 #include <signal.h>
 #include <stdio.h>
@@ -21,7 +19,7 @@ struct arg {
 
 char *argv0;
 char buf[1024];
-static unsigned short int done;
+static int done;
 static Display *dpy;
 
 #include "config.h"
@@ -55,9 +53,10 @@ main(int argc, char *argv[])
        struct sigaction act;
        struct timespec start, current, diff, intspec, wait;
        size_t i, len;
-       int sflag = 0;
+       int sflag;
        char status[MAXLEN];
 
+       sflag = 0;
        ARGBEGIN {
                case 's':
                        sflag = 1;
@@ -78,7 +77,7 @@ main(int argc, char *argv[])
        sigaction(SIGTERM, &act, NULL);
 
        if (!sflag && !(dpy = XOpenDisplay(NULL))) {
-               fprintf(stderr, "slstatus: cannot open display");
+               fprintf(stderr, "Cannot open display");
                return 1;
        }
 
@@ -87,8 +86,10 @@ main(int argc, char *argv[])
 
                status[0] = '\0';
                for (i = len = 0; i < LEN(args); i++) {
+                       const char * res = args[i].func(args[i].args);
+                       res = (res == NULL) ? unknown_str : res;
                        len += snprintf(status + len, sizeof(status) - len,
-                                       args[i].fmt, args[i].func(args[i].args));
+                                       args[i].fmt, res);
 
                        if (len >= sizeof(status)) {
                                status[sizeof(status) - 1] = '\0';
@@ -97,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);