From 0863f018f0fe970ffdb9cc2267a50c018d3944c5 Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Tue, 15 May 2012 19:56:21 +0100 Subject: stat: report the correct block size for file system usage struct statfs has the f_frsize member since Linux 2.6, so use that rather than f_bsize which can be different. Note the related df change mentioned in NEWS is handled in gnulib by using statvfs() rather than statfs() on Linux > 2.6.36 (where statvfs doesn't hang) and the same method as stat for Linux 2.6 kernels earlier than that. stat(1) doesn't use statvfs() on GNU/Linux as the f_type member isn't available there. Note the change to not use statvfs() on GNU/Linux was introduced in gnulib commit eda39b8 16-08-2003. * m4/stat-prog.m4 (cu_PREREQ_STAT_PROG): Check for the f_frsize member in the statfs structure. * src/stat.c: Use (struct statfs).f_frsize if available. * NEWS (Bug fixes): Mention this stat fix, and the related df fix coming in the next gnulib update. * THANKS.in: Add Nikolaus. Reported and Tested by Nikolaus Rath --- m4/stat-prog.m4 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'm4') diff --git a/m4/stat-prog.m4 b/m4/stat-prog.m4 index 30bacb458..ff59a28c5 100644 --- a/m4/stat-prog.m4 +++ b/m4/stat-prog.m4 @@ -72,8 +72,8 @@ AC_INCLUDES_DEFAULT [AC_DEFINE([STRUCT_STATVFS_F_FSID_IS_INTEGER], [1], [Define to 1 if the f_fsid member of struct statvfs is an integer.])]) else - AC_CHECK_MEMBERS([struct statfs.f_namelen, struct statfs.f_type],,, - [$statfs_includes]) + AC_CHECK_MEMBERS([struct statfs.f_namelen, struct statfs.f_type, + struct statfs.f_frsize],,, [$statfs_includes]) if test $ac_cv_header_OS_h != yes; then AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( -- cgit v1.2.3-54-g00ecf