X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/3c8717f4e01ec477d873ee7c3f3aa54eb60a7c87..cf67aebec579e85b5012e7efef4af220bee8981e:/slstatus.c diff --git a/slstatus.c b/slstatus.c index 56f2649..6a338f9 100644 --- a/slstatus.c +++ b/slstatus.c @@ -69,7 +69,6 @@ static char *vol_perc(const char *card); static char *wifi_perc(const char *iface); static char *wifi_essid(const char *iface); static char *kernel_release(void); -static void set_status(const char *str); static void sighandler(const int signo); static void usage(void); @@ -700,11 +699,11 @@ wifi_perc(const char *iface) fgets(buf, sizeof(buf), fp); fclose(fp); - datastart = strstr(buf, concat); - if (datastart != NULL) { - datastart = strstr(buf, ":"); - sscanf(datastart + 1, " %*d %d %*d %*d %*d %*d %*d %*d %*d %*d", &perc); + if ((datastart = strstr(buf, concat)) == NULL) { + return smprintf("%s", UNKNOWN_STR); } + datastart = (datastart+(strlen(iface)+1)); + sscanf(datastart + 1, " %*d %d %*d %*d %*d %*d %*d %*d %*d %*d", &perc); return smprintf("%d%%", perc); } @@ -718,7 +717,8 @@ wifi_essid(const char *iface) memset(&wreq, 0, sizeof(struct iwreq)); wreq.u.essid.length = IW_ESSID_MAX_SIZE+1; - sprintf(wreq.ifr_name, iface); + snprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", iface); + if (sockfd == -1) { warn("Failed to get ESSID for interface %s", iface); return smprintf("%s", UNKNOWN_STR); @@ -747,13 +747,6 @@ kernel_release(void) return smprintf("%s", udata.release); } -static void -set_status(const char *str) -{ - XStoreName(dpy, DefaultRootWindow(dpy), str); - XSync(dpy, False); -} - static void sighandler(const int signo) { @@ -832,15 +825,12 @@ main(int argc, char *argv[]) } if (!oflag) { - set_status(status_string); + XStoreName(dpy, DefaultRootWindow(dpy), status_string); + XSync(dpy, False); } else { printf("%s\n", status_string); } - /* - * subtract delay time spend in function - * calls from the actual global delay time - */ if ((UPDATE_INTERVAL - delay) <= 0) { delay = 0; continue; @@ -851,7 +841,7 @@ main(int argc, char *argv[]) } if (!oflag) { - set_status(NULL); + XStoreName(dpy, DefaultRootWindow(dpy), NULL); XCloseDisplay(dpy); }