swap: Print UNKNOWN_STR if no swap is allocated
authorJody Leonard <me@jodyleonard.com>
Sat, 15 Oct 2016 23:50:02 +0000 (19:50 -0400)
committerJody Leonard <me@jodyleonard.com>
Sat, 15 Oct 2016 23:51:19 +0000 (19:51 -0400)
slstatus.c

index f39a2dc5b8b45945ca67dd4550d58335a4363c76..95592261a88c8ba7b71bca83e5d46ef368bf3b84 100644 (file)
@@ -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);