From: Jody Leonard <me@jodyleonard.com>
Date: Sat, 15 Oct 2016 23:50:02 +0000 (-0400)
Subject: swap: Print UNKNOWN_STR if no swap is allocated
X-Git-Url: https://git.xinqibao.xyz/slstatus.git/commitdiff_plain/9bef4e889a547ed909a23bb57489bc71da80e472?hp=4d6761e0c70942d5cab055bf12ebc6ac920d39b5

swap: Print UNKNOWN_STR if no swap is allocated
---

diff --git a/slstatus.c b/slstatus.c
index f39a2dc..9559226 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -424,7 +424,7 @@ run_command(const char *cmd)
 static char *
 swap_free(void)
 {
-	long free;
+	long total, free;
 	FILE *fp;
 	char buf[2048];
 	size_t bytes_read;
@@ -443,6 +443,12 @@ swap_free(void)
 		return smprintf(UNKNOWN_STR);
 	}
 
+	match = strstr(buf, "SwapTotal");
+	sscanf(match, "SwapTotal: %ld kB\n", &total);
+	if (total == 0) {
+		return smprintf(UNKNOWN_STR);
+	}
+
 	match = strstr(buf, "SwapFree");
 	sscanf(match, "SwapFree: %ld kB\n", &free);
 
@@ -471,11 +477,14 @@ swap_perc(void)
 		return smprintf(UNKNOWN_STR);
 	}
 
-	match = strstr(buf, "SwapCached");
-	sscanf(match, "SwapCached: %ld kB\n", &cached);
-
 	match = strstr(buf, "SwapTotal");
 	sscanf(match, "SwapTotal: %ld kB\n", &total);
+	if (total == 0) {
+		return smprintf(UNKNOWN_STR);
+	}
+
+	match = strstr(buf, "SwapCached");
+	sscanf(match, "SwapCached: %ld kB\n", &cached);
 
 	match = strstr(buf, "SwapFree");
 	sscanf(match, "SwapFree: %ld kB\n", &free);
@@ -507,6 +516,9 @@ swap_total(void)
 
 	match = strstr(buf, "SwapTotal");
 	sscanf(match, "SwapTotal: %ld kB\n", &total);
+	if (total == 0) {
+		return smprintf(UNKNOWN_STR);
+	}
 
 	return smprintf("%f", (float)total / 1024 / 1024);
 }
@@ -533,11 +545,14 @@ swap_used(void)
 		return smprintf(UNKNOWN_STR);
 	}
 
-	match = strstr(buf, "SwapCached");
-	sscanf(match, "SwapCached: %ld kB\n", &cached);
-
 	match = strstr(buf, "SwapTotal");
 	sscanf(match, "SwapTotal: %ld kB\n", &total);
+	if (total == 0) {
+		return smprintf(UNKNOWN_STR);
+	}
+
+	match = strstr(buf, "SwapCached");
+	sscanf(match, "SwapCached: %ld kB\n", &cached);
 
 	match = strstr(buf, "SwapFree");
 	sscanf(match, "SwapFree: %ld kB\n", &free);