From fb524b60508dd8adee66ae30e834632fd6b4402c Mon Sep 17 00:00:00 2001 From: Aaron Marcher Date: Fri, 10 Jun 2016 19:13:13 +0200 Subject: added disk functions for details --- slstatus.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'slstatus.c') diff --git a/slstatus.c b/slstatus.c index b20f824..7af71e0 100644 --- a/slstatus.c +++ b/slstatus.c @@ -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) -- cgit v1.2.3