From: Christos Zoulas Date: Mon, 29 Mar 2021 21:27:37 +0000 (-0400) Subject: Not all statfs's have f_iosize X-Git-Tag: v3.5.2~19^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b8e4320b7b2e12b5e5ceedc71272a608056fbb7a;p=thirdparty%2Flibarchive.git Not all statfs's have f_iosize --- 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