blob: e228de837dd982263a99b851bfcc928fd6fa6aa0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include <__statvfs.h> // for __statvfs
#include <asm-generic/statfs.h> // for statfs
#include <syscall.h> // for __syscall_2, syscall
int fstatvfs(int fildes, struct __statvfs *buf)
{
struct statfs statfs = { 0 };
if (syscall(fstatfs, fildes, &statfs) < 0)
return -1;
buf->f_bsize = statfs.f_bsize;
buf->f_frsize = statfs.f_frsize ? statfs.f_frsize : statfs.f_bsize;
buf->f_blocks = statfs.f_blocks;
buf->f_bfree = statfs.f_bfree;
buf->f_bavail = statfs.f_bavail;
buf->f_files = statfs.f_files;
buf->f_ffree = statfs.f_ffree;
buf->f_favail = statfs.f_ffree;
buf->f_fsid = statfs.f_fsid.val[0];
buf->f_flag = statfs.f_flags;
buf->f_namemax = statfs.f_namelen;
return 0;
}
|