From b8e4320b7b2e12b5e5ceedc71272a608056fbb7a Mon Sep 17 00:00:00 2001 From: Christos Zoulas Date: Mon, 29 Mar 2021 17:27:37 -0400 Subject: [PATCH] Not all statfs's have f_iosize --- configure.ac | 7 +++++++ libarchive/archive_read_disk_posix.c | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/configure.ac b/configure.ac index dd10e7e4d..201185dfd 100644 --- a/configure.ac +++ b/configure.ac @@ -566,6 +566,13 @@ AC_CHECK_MEMBERS([struct statfs.f_namemax],,, #include ]) +# Check for f_iosize in struct statfs +AC_CHECK_MEMBERS([struct statfs.f_iosize],,, +[ +#include +#include +]) + # Check for f_iosize in struct statvfs AC_CHECK_MEMBERS([struct statvfs.f_iosize],,, [ diff --git a/libarchive/archive_read_disk_posix.c b/libarchive/archive_read_disk_posix.c index 772e203bb..3c8bd11e8 100644 --- a/libarchive/archive_read_disk_posix.c +++ b/libarchive/archive_read_disk_posix.c @@ -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 -- 2.47.2