On Sat, Nov 09, 2019 at 02:33:49PM +0100, Christoph Moench-Tegeder wrote: > "The statfs() system call first appeared in 4.4BSD." (from the statfs(2) > manpage on FreeBSD). struct statfs differs between Linux and BSD, but > is "close enough" for this, the fields from the original patch are > present in both implementations. > Solaris does not have statfs() anymore. Instead, it has a statvfs() > which is "more or less equivalent" to the Linux statvfs(). On FreeBSD, > using statvfs() (it's available) is rather not recommended, from the > man page: > The statvfs() and fstatvfs() functions fill the structure pointed > to by buf with garbage. This garbage will occasionally bear resemblance > to file system statistics, but portable applications must not depend on > this. > That's funny, as statvfs() is in our beloved POSIX.1 since at least > 2001 - current specs: > https://pubs.opengroup.org/onlinepubs/9699919799/functions/fstatvfs.html
Thanks for looking at that. The point of FreeBSD is interesting to know. So this basically would leave us with the following hierarchy to grab the data: 1) statfs() 2) statvfs() 3) Windows-specific implementation 4) Complain if nothing is present For the free space, then we just need (f_bsize * f_bfree), and the total is (f_blocks * f_bsize). Any opinions? -- Michael
signature.asc
Description: PGP signature