+/* 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);
+}
+