X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/4dcba6b7e8219e6f06be344aba2035263c5cf3c8..fd36f65cc7bd3c506ec57ac8af0c905187952e52:/slstatus.c?ds=sidebyside

diff --git a/slstatus.c b/slstatus.c
index e1d271f..49b14de 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -26,45 +26,45 @@
 #undef strlcat
 #undef strlcpy
 
-#include "arg.h"
-#include "strlcat.h"
-#include "strlcpy.h"
-#include "concat.h"
+#include "extern/arg.h"
+#include "extern/strlcat.h"
+#include "extern/strlcpy.h"
+#include "extern/concat.h"
 
 struct arg {
 	char *(*func)();
-	const char *format;
+	const char *fmt;
 	const char *args;
 };
 
-static char *smprintf(const char *, ...);
-static char *battery_perc(const char *);
-static char *battery_state(const char *);
+static char *smprintf(const char *fmt, ...);
+static char *battery_perc(const char *bat);
+static char *battery_state(const char *bat);
 static char *cpu_perc(void);
-static char *datetime(const char *);
-static char *disk_free(const char *);
-static char *disk_perc(const char *);
-static char *disk_total(const char *);
-static char *disk_used(const char *);
+static char *datetime(const char *fmt);
+static char *disk_free(const char *mnt);
+static char *disk_perc(const char *mnt);
+static char *disk_total(const char *mnt);
+static char *disk_used(const char *mnt);
 static char *entropy(void);
 static char *gid(void);
 static char *hostname(void);
-static char *ip(const char *);
+static char *ip(const char *iface);
 static char *load_avg(void);
 static char *ram_free(void);
 static char *ram_perc(void);
 static char *ram_used(void);
 static char *ram_total(void);
-static char *run_command(const char *);
-static char *temp(const char *);
+static char *run_command(const char *cmd);
+static char *temp(const char *file);
 static char *uid(void);
 static char *uptime(void);
 static char *username(void);
-static char *vol_perc(const char *);
-static char *wifi_perc(const char *);
-static char *wifi_essid(const char *);
-static void set_status(const char *);
-static void sighandler(const int);
+static char *vol_perc(const char *card);
+static char *wifi_perc(const char *iface);
+static char *wifi_essid(const char *iface);
+static void set_status(const char *str);
+static void sighandler(const int signo);
 static void usage(void);
 
 char *argv0;
@@ -90,7 +90,7 @@ smprintf(const char *fmt, ...)
 	ret = malloc(++len);
 	if (ret == NULL) {
 		warn("Malloc failed.");
-		exit(1);
+		return "n/a";
 	}
 
 	va_start(ap, fmt);
@@ -406,7 +406,7 @@ static char *
 run_command(const char *cmd)
 {
 	FILE *fp;
-	char buf[64] = "\0";
+	char buf[64] = "n/a";
 
 	fp = popen(cmd, "r");
 	if (fp == NULL) {
@@ -592,15 +592,10 @@ sighandler(const int signo)
 static void
 usage(void)
 {
-	fprintf(stderr,
-		"slstatus (c) 2016, drkhsh\n"
-		"usage: %s [-dho]\n",
-		argv0);
+	fprintf(stderr, "usage: %s [-dhov]\n", argv0);
 	exit(1);
 }
 
-
-
 int
 main(int argc, char *argv[])
 {
@@ -617,6 +612,9 @@ main(int argc, char *argv[])
 		case 'o':
 			oflag = 1;
 			break;
+		case 'v':
+			printf("%s version %s (c) 2016 slstatus engineers\n", argv0, VERSION);
+			return 0;
 		default:
 			usage();
 	} ARGEND
@@ -633,7 +631,9 @@ main(int argc, char *argv[])
 	sigaction(SIGINT,  &act, 0);
 	sigaction(SIGTERM, &act, 0);
 
-	dpy = XOpenDisplay(NULL);
+	if (!oflag) {
+		dpy = XOpenDisplay(NULL);
+	}
 
 	while (!done) {
 		status_string[0] = '\0';
@@ -645,7 +645,7 @@ main(int argc, char *argv[])
 			} else {
 				res = argument.func(argument.args);
 			}
-			element = smprintf(argument.format, res);
+			element = smprintf(argument.fmt, res);
 			if (element == NULL) {
 				element = smprintf(UNKNOWN_STR);
 				warnx("Failed to format output");
@@ -671,9 +671,8 @@ main(int argc, char *argv[])
 
 	if (!oflag) {
 		set_status(NULL);
+		XCloseDisplay(dpy);
 	}
 
-	XCloseDisplay(dpy);
-
 	return 0;
 }