make df more readable

Filesystem             Size   Used   Free   Blksize
/dev                   164M    32K   164M   4096
/system                442M   117M   325M   4096
/cache                 492M     8M   483M   4096
/data                  984M    59M   925M   4096
/mnt/sdcard             12G    27M    12G   32768

Change-Id: I9a84b7b84ae528ee5cf0b1e92a8bee032b87703b
This commit is contained in:
Brian Swetland 2010-09-11 18:19:35 -07:00
parent 4012c0a46a
commit 09dd3e57b9
1 changed files with 24 additions and 8 deletions

View File

@ -6,6 +6,21 @@
static int ok = EXIT_SUCCESS;
static void printsize(long long n)
{
char unit = 'K';
n /= 1024;
if (n > 1024) {
n /= 1024;
unit = 'M';
}
if (n > 1024) {
n /= 1024;
unit = 'G';
}
printf("%4lld%c", n, unit);
}
static void df(char *s, int always) {
struct statfs st;
@ -14,18 +29,19 @@ static void df(char *s, int always) {
ok = EXIT_FAILURE;
} else {
if (st.f_blocks == 0 && !always)
return;
printf("%s: %lldK total, %lldK used, %lldK available (block size %d)\n",
s,
((long long)st.f_blocks * (long long)st.f_bsize) / 1024,
((long long)(st.f_blocks - (long long)st.f_bfree) * st.f_bsize) / 1024,
((long long)st.f_bfree * (long long)st.f_bsize) / 1024,
(int) st.f_bsize);
return;
printf("%-20s ", s);
printsize((long long)st.f_blocks * (long long)st.f_bsize);
printf(" ");
printsize((long long)(st.f_blocks - (long long)st.f_bfree) * st.f_bsize);
printf(" ");
printsize((long long)st.f_bfree * (long long)st.f_bsize);
printf(" %d\n", (int) st.f_bsize);
}
}
int df_main(int argc, char *argv[]) {
printf("Filesystem Size Used Free Blksize\n");
if (argc == 1) {
char s[2000];
FILE *f = fopen("/proc/mounts", "r");