Close fd if there was an empty return.
[dwm-status] / dwmstatus.c
index 0374e38..1b53292 100644 (file)
@@ -106,8 +106,10 @@ readfile(char *base, char *file)
        if (fd == NULL)
                return NULL;
 
        if (fd == NULL)
                return NULL;
 
-       if (fgets(line, sizeof(line)-1, fd) == NULL)
+       if (fgets(line, sizeof(line)-1, fd) == NULL) {
+               fclose(fd);
                return NULL;
                return NULL;
+       }
        fclose(fd);
 
        return smprintf("%s", line);
        fclose(fd);
 
        return smprintf("%s", line);
@@ -179,7 +181,7 @@ char *
 execscript(char *cmd)
 {
        FILE *fp;
 execscript(char *cmd)
 {
        FILE *fp;
-       char retval[1025], rv;
+       char retval[1025], *rv;
 
        memset(retval, 0, sizeof(retval));
 
 
        memset(retval, 0, sizeof(retval));
 
@@ -187,7 +189,7 @@ execscript(char *cmd)
        if (fp == NULL)
                return smprintf("");
 
        if (fp == NULL)
                return smprintf("");
 
-       rv = fgets(retval, sizeof(retval)-1, fp);
+       rv = fgets(retval, sizeof(retval), fp);
        pclose(fp);
        if (rv == NULL)
                return smprintf("");
        pclose(fp);
        if (rv == NULL)
                return smprintf("");
@@ -208,6 +210,7 @@ main(void)
        char *t0;
        char *t1;
        char *kbmap;
        char *t0;
        char *t1;
        char *kbmap;
+       char *surfs;
 
        if (!(dpy = XOpenDisplay(NULL))) {
                fprintf(stderr, "dwmstatus: cannot open display.\n");
 
        if (!(dpy = XOpenDisplay(NULL))) {
                fprintf(stderr, "dwmstatus: cannot open display.\n");
@@ -221,14 +224,16 @@ main(void)
                tmutc = mktimes("%H:%M", tzutc);
                tmbln = mktimes("KW %W %a %d %b %H:%M %Z %Y", tzberlin);
                kbmap = execscript("setxkbmap -query | grep layout | cut -d':' -f 2- | tr -d ' '");
                tmutc = mktimes("%H:%M", tzutc);
                tmbln = mktimes("KW %W %a %d %b %H:%M %Z %Y", tzberlin);
                kbmap = execscript("setxkbmap -query | grep layout | cut -d':' -f 2- | tr -d ' '");
+               surfs = execscript("surf-status");
                t0 = gettemperature("/sys/devices/virtual/thermal/thermal_zone0", "temp");
                t1 = gettemperature("/sys/devices/virtual/thermal/thermal_zone1", "temp");
 
                t0 = gettemperature("/sys/devices/virtual/thermal/thermal_zone0", "temp");
                t1 = gettemperature("/sys/devices/virtual/thermal/thermal_zone1", "temp");
 
-               status = smprintf("K:%s T:%s|%s L:%s B:%s A:%s U:%s %s",
-                               kbmap, t0, t1, avgs, bat, tmar, tmutc,
+               status = smprintf("S:%s K:%s T:%s|%s L:%s B:%s A:%s U:%s %s",
+                               surfs, kbmap, t0, t1, avgs, bat, tmar, tmutc,
                                tmbln);
                setstatus(status);
 
                                tmbln);
                setstatus(status);
 
+               free(surfs);
                free(kbmap);
                free(t0);
                free(t1);
                free(kbmap);
                free(t0);
                free(t1);