X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/11fec4fa9501bd20aace72235c4525dc87d5d281..b231cd90ebe54eef8649996fc80cabc3a420c9e5:/slstatus.c?ds=inline diff --git a/slstatus.c b/slstatus.c index 7b02205..ac4c962 100644 --- a/slstatus.c +++ b/slstatus.c @@ -70,7 +70,7 @@ static char *wifi_perc(const char *iface); static char *wifi_essid(const char *iface); static char *kernel_release(void); static void sighandler(const int signo); -static void usage(void); +static void usage(int); char *argv0; char concat[]; @@ -717,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); @@ -755,10 +756,10 @@ sighandler(const int signo) } static void -usage(void) +usage(int eval) { - fprintf(stderr, "usage: %s [-dhov]\n", argv0); - exit(1); + fprintf(stderr, "usage: %s [-d] [-o] [-v] [-h]\n", argv0); + exit(eval); } int @@ -780,12 +781,14 @@ main(int argc, char *argv[]) case 'v': printf("slstatus %s (C) 2016 slstatus engineers\n", VERSION); return 0; + case 'h': + usage(0); default: - usage(); + usage(1); } ARGEND if (dflag && oflag) { - usage(); + usage(1); } if (dflag && daemon(1, 1) < 0) { err(1, "daemon"); @@ -817,8 +820,9 @@ main(int argc, char *argv[]) element = smprintf("%s", UNKNOWN_STR); warnx("Failed to format output"); } - if (strlcat(status_string, element, sizeof(status_string)) >= sizeof(status_string)) + if (strlcat(status_string, element, sizeof(status_string)) >= sizeof(status_string)) { warnx("Output too long"); + } free(res); free(element); }