Xinqi Bao's Git
1 /* See LICENSE file for copyright and license details. */
5 #include <sys/statvfs.h>
10 disk_free(const char *mnt
)
14 if (statvfs(mnt
, &fs
) < 0) {
15 fprintf(stderr
, "statvfs '%s': %s\n", mnt
, strerror(errno
));
19 return bprintf("%f", (float)fs
.f_bsize
* (float)fs
.f_bfree
/ 1024 / 1024 / 1024);
23 disk_perc(const char *mnt
)
28 if (statvfs(mnt
, &fs
) < 0) {
29 fprintf(stderr
, "statvfs '%s': %s\n", mnt
, strerror(errno
));
33 perc
= 100 * (1.0f
- ((float)fs
.f_bfree
/ (float)fs
.f_blocks
));
35 return bprintf("%d", perc
);
39 disk_total(const char *mnt
)
43 if (statvfs(mnt
, &fs
) < 0) {
44 fprintf(stderr
, "statvfs '%s': %s\n", mnt
, strerror(errno
));
48 return bprintf("%f", (float)fs
.f_bsize
* (float)fs
.f_blocks
/ 1024 / 1024 / 1024);
52 disk_used(const char *mnt
)
56 if (statvfs(mnt
, &fs
) < 0) {
57 fprintf(stderr
, "statvfs '%s': %s\n", mnt
, strerror(errno
));
61 return bprintf("%f", (float)fs
.f_bsize
* ((float)fs
.f_blocks
- (float)fs
.f_bfree
) / 1024 / 1024 / 1024);