df: Use statvfs instead of non-standard statfs
authorJames Clarke <jrtc27@jrtc27.com>
Sat, 7 Oct 2017 17:53:20 +0000 (18:53 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 30 Oct 2017 14:30:59 +0000 (15:30 +0100)
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>
coreutils/df.c

index 121da970b4fd3247557008981392ef0c3d808fe9..4076b5fec5dc8cce1f3466ce1060f350e7394592 100644 (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;
                }