df: Use statvfs instead of non-standard statfs

Platforms differ on what their implementations of statfs include.
Importantly, FreeBSD's does not include a f_frsize member inside struct
statfs. However, statvfs is specified by POSIX and includes everything
we need, so we can just use that instead.

Signed-off-by: James Clarke <jrtc27@jrtc27.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
James Clarke 2017-10-07 18:53:20 +01:00 committed by Denys Vlasenko
parent 24e17b4385
commit d1535216ca

View File

@ -77,7 +77,7 @@
//usage: "/dev/sda3 17381728 17107080 274648 98% /\n"
#include <mntent.h>
#include <sys/vfs.h>
#include <sys/statvfs.h>
#include "libbb.h"
#include "unicode.h"
@ -98,7 +98,7 @@ int df_main(int argc UNUSED_PARAM, char **argv)
unsigned opt;
FILE *mount_table;
struct mntent *mount_entry;
struct statfs s;
struct statvfs s;
enum {
OPT_KILO = (1 << 0),
@ -211,7 +211,7 @@ int df_main(int argc UNUSED_PARAM, char **argv)
mount_point = mount_entry->mnt_dir;
fs_type = mount_entry->mnt_type;
if (statfs(mount_point, &s) != 0) {
if (statvfs(mount_point, &s) != 0) {
bb_simple_perror_msg(mount_point);
goto set_error;
}