disk.c - slstatus - status monitor
 (HTM) git clone git://git.suckless.org/slstatus
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       disk.c (1016B)
       ---
            1 /* See LICENSE file for copyright and license details. */
            2 #include <stdio.h>
            3 #include <sys/statvfs.h>
            4 
            5 #include "../slstatus.h"
            6 #include "../util.h"
            7 
            8 const char *
            9 disk_free(const char *path)
           10 {
           11         struct statvfs fs;
           12 
           13         if (statvfs(path, &fs) < 0) {
           14                 warn("statvfs '%s':", path);
           15                 return NULL;
           16         }
           17 
           18         return fmt_human(fs.f_frsize * fs.f_bavail, 1024);
           19 }
           20 
           21 const char *
           22 disk_perc(const char *path)
           23 {
           24         struct statvfs fs;
           25 
           26         if (statvfs(path, &fs) < 0) {
           27                 warn("statvfs '%s':", path);
           28                 return NULL;
           29         }
           30 
           31         return bprintf("%d", (int)(100 *
           32                        (1 - ((double)fs.f_bavail / (double)fs.f_blocks))));
           33 }
           34 
           35 const char *
           36 disk_total(const char *path)
           37 {
           38         struct statvfs fs;
           39 
           40         if (statvfs(path, &fs) < 0) {
           41                 warn("statvfs '%s':", path);
           42                 return NULL;
           43         }
           44 
           45         return fmt_human(fs.f_frsize * fs.f_blocks, 1024);
           46 }
           47 
           48 const char *
           49 disk_used(const char *path)
           50 {
           51         struct statvfs fs;
           52 
           53         if (statvfs(path, &fs) < 0) {
           54                 warn("statvfs '%s':", path);
           55                 return NULL;
           56         }
           57 
           58         return fmt_human(fs.f_frsize * (fs.f_blocks - fs.f_bfree), 1024);
           59 }