added disk functions for details
authorAaron Marcher <info@nulltime.net>
Fri, 10 Jun 2016 17:13:13 +0000 (19:13 +0200)
committerAaron Marcher (drkhsh) <info@nulltime.net>
Fri, 10 Jun 2016 17:13:13 +0000 (19:13 +0200)
config.def.h
slstatus.c
slstatus.h

index 351d7edd8ce5e41655cbcfd48453dc85d886962b..0fa4825a490106f10d298456ed0373f93ff5e454 100644 (file)
@@ -15,11 +15,17 @@ static unsigned int update_interval = 1;
 - battery_perc (battery percentage) [argument: battery name]
 - cpu_perc (cpu usage in percent) [argument: NULL]
 - datetime (date and time) [argument: format]
+- disk_free (disk usage in percent) [argument: mountpoint]
 - disk_perc (disk usage in percent) [argument: mountpoint]
+- disk_total (disk usage in percent) [argument: mountpoint]
+- disk_used (disk usage in percent) [argument: mountpoint]
 - entropy (available entropy) [argument: NULL]
 - hostname [argument: NULL]
 - ip (ip address) [argument: interface]
+- ram_free (ram usage in percent) [argument: NULL]
 - ram_perc (ram usage in percent) [argument: NULL]
+- ram_total (ram usage in percent) [argument: NULL]
+- ram_used (ram usage in percent) [argument: NULL]
 - temp (temperature in degrees) [argument: temperature file]
 - vol_perc (alsa volume and mute status in percent) [argument: soundcard]
 - wifi_perc (wifi signal in percent) [argument: wifi card interface name] */
index b20f824e442ca0eaa3d7b1122f6da08acc68014e..7af71e06a001deaba030136923a20e38ee97e4d5 100644 (file)
@@ -166,6 +166,22 @@ datetime(const char *timeformat)
     return ret;
 }
 
+/* disk free */
+char *
+disk_free(const char *mountpoint)
+{
+    struct statvfs fs;
+
+    /* try to open mountpoint */
+    if (statvfs(mountpoint, &fs) < 0) {
+        fprintf(stderr, "Could not get filesystem info.\n");
+        return smprintf("n/a");
+    }
+
+    /* return free */
+    return smprintf("%f", (float)fs.f_bsize * (float)fs.f_bfree / 1024 / 1024 / 1024);
+}
+
 /* disk usage percentage */
 char *
 disk_perc(const char *mountpoint)
@@ -180,12 +196,44 @@ disk_perc(const char *mountpoint)
     }
 
     /* calculate percent */
-    perc = 100 * (1.0f - ((float)fs.f_bavail / (float)fs.f_blocks));
+    perc = 100 * (1.0f - ((float)fs.f_bfree / (float)fs.f_blocks));
 
     /* return perc */
     return smprintf("%d%%", perc);
 }
 
+/* disk total */
+char *
+disk_total(const char *mountpoint)
+{
+    struct statvfs fs;
+
+    /* try to open mountpoint */
+    if (statvfs(mountpoint, &fs) < 0) {
+        fprintf(stderr, "Could not get filesystem info.\n");
+        return smprintf("n/a");
+    }
+
+    /* return total */
+    return smprintf("%f", (float)fs.f_bsize * (float)fs.f_blocks / 1024 / 1024 / 1024);
+}
+
+/* disk used */
+char *
+disk_used(const char *mountpoint)
+{
+    struct statvfs fs;
+
+    /* try to open mountpoint */
+    if (statvfs(mountpoint, &fs) < 0) {
+        fprintf(stderr, "Could not get filesystem info.\n");
+        return smprintf("n/a");
+    }
+
+    /* return used */
+    return smprintf("%f", (float)fs.f_bsize * ((float)fs.f_blocks - (float)fs.f_bfree) / 1024 / 1024 / 1024);
+}
+
 /* entropy available */
 char *
 entropy(const char *null)
index a4c7b141732fd761235fe0e535029f772d366433..7d764abf7b2ecf7d46495aea84f391650ef320bc 100644 (file)
@@ -17,7 +17,10 @@ char *smprintf(const char *, ...);
 char *battery_perc(const char *);
 char *cpu_perc(const char *);
 char *datetime(const char *);
+char *disk_free(const char *);
 char *disk_perc(const char *);
+char *disk_total(const char *);
+char *disk_used(const char *);
 char *entropy(const char*);
 char *hostname(const char *);
 char *ip(const char *);