]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Not all statfs's have f_iosize
authorChristos Zoulas <christos@zoulas.com>
Mon, 29 Mar 2021 21:27:37 +0000 (17:27 -0400)
committerChristos Zoulas <christos@zoulas.com>
Mon, 29 Mar 2021 21:27:37 +0000 (17:27 -0400)
configure.ac
libarchive/archive_read_disk_posix.c

index dd10e7e4d8957825d968b89170135e16bcbd0873..201185dfdb81c88732115d6e105cf3bf60a7940a 100644 (file)
@@ -566,6 +566,13 @@ AC_CHECK_MEMBERS([struct statfs.f_namemax],,,
 #include <sys/mount.h>
 ])
 
+# Check for f_iosize in struct statfs
+AC_CHECK_MEMBERS([struct statfs.f_iosize],,,
+[
+#include <sys/param.h>
+#include <sys/mount.h>
+])
+
 # Check for f_iosize in struct statvfs
 AC_CHECK_MEMBERS([struct statvfs.f_iosize],,,
 [
index 772e203bb1b5a26d1aab31d52af3b7e1a9548d39..3c8bd11e839353ad066fe58347e848242a92c115 100644 (file)
@@ -1544,8 +1544,13 @@ set_statfs_transfer_size(struct filesystem *fs, const struct statfs *sfs)
 {
        fs->xfer_align = sfs->f_bsize > 0 ? (long)sfs->f_bsize : -1;
        fs->max_xfer_size = -1;
+#if defined(HAVE_STRUCT_STATFS_F_IOSIZE)
        fs->min_xfer_size = sfs->f_iosize > 0 ? (long)sfs->f_iosize : -1;
        fs->incr_xfer_size = sfs->f_iosize > 0 ? (long)sfs->f_iosize : -1;
+#else
+       fs->min_xfer_size = sfs->f_bsize > 0 ? (long)sfs->f_bsize : -1;
+       fs->incr_xfer_size = sfs->f_bsize > 0 ? (long)sfs->f_bsize : -1;
+#endif
 }
 #endif