Ticket #6503: statfs.c

File statfs.c, 1.1 KB (added by cpinkham, 16 years ago)
Line 
1#include <sys/vfs.h>
2#include <stdio.h>
3#include <strings.h>
4
5int main(int argc, char **argv) {
6 struct statfs statbuf;
7 long long total;
8 long long free;
9
10 if (argc > 1) {
11 bzero(&statbuf, sizeof(statbuf));
12 if (statfs(argv[1], &statbuf) == 0) {
13 printf( "Info for : %s\n", argv[1] );
14 printf( "FS Type : 0x%x\n",
15 statbuf.f_type );
16 printf( "Tot Blks : %ld\n", statbuf.f_blocks);
17 printf( "Free Blks : %ld\n", statbuf.f_bavail);
18 printf( "Block Size: %ld\n", statbuf.f_bsize);
19
20 total = statbuf.f_blocks;
21 total *= statbuf.f_bsize;
22 total = total >> 10;
23 printf( "TotalKB : %8lld KB ((%ld * %ld) >> 10)\n",
24 total, statbuf.f_blocks, statbuf.f_bsize);
25
26 free = statbuf.f_bavail;
27 free *= statbuf.f_bsize;
28 free = free >> 10;
29 printf( "FreeKB : %8lld KB ((%ld * %ld) >> 10)\n",
30 free, statbuf.f_bavail, statbuf.f_bsize);
31
32 printf( "UsedKB : %8lld KB (calculated from TotalKB - FreeKB)\n",
33 total - free);
34 } else {
35 printf( "ERROR: statfs() returned non-zero\n" );
36 perror("statfs()");
37 return( -1 );
38 }
39 } else {
40 printf( "USAGE: %s DIRECTORY\n", argv[0] );
41 return( -1 );
42 }
43
44 return( 0 );
45}