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>
diff --git a/coreutils/df.c b/coreutils/df.c
index 121da97..4076b5f 100644
--- a/coreutils/df.c
+++ b/coreutils/df.c
@@ -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 @@
 	unsigned opt;
 	FILE *mount_table;
 	struct mntent *mount_entry;
-	struct statfs s;
+	struct statvfs s;
 
 	enum {
 		OPT_KILO  = (1 << 0),
@@ -211,7 +211,7 @@
 		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;
 		}