summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--THANKS.in1
-rw-r--r--m4/stat-prog.m44
-rw-r--r--src/stat.c6
4 files changed, 12 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index f9e9c702b..78e1d72fe 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,10 @@ GNU coreutils NEWS -*- outline -*-
ls --color would mis-color relative-named symlinks in /
[bug introduced in coreutils-8.17]
+ stat and df now report the correct file system usage,
+ in all situations on GNU/Linux, by correctly determining the block size.
+ [df bug since coreutils-5.0.91, stat bug since the initial implementation]
+
* Noteworthy changes in release 8.17 (2012-05-10) [stable]
diff --git a/THANKS.in b/THANKS.in
index 5c7dde826..f3a0c90db 100644
--- a/THANKS.in
+++ b/THANKS.in
@@ -448,6 +448,7 @@ Nickolai Zeldovich nickolai@cs.stanford.edu
Nicolas François nicolas.francois@centraliens.net
Niklas Edmundsson nikke@acc.umu.se
Nikola Milutinovic Nikola.Milutinovic@ev.co.yu
+Nikolaus Rath Nikolaus@rath.org
Nima Nikzad nnikzad@ucla.edu
Noah Friedman friedman@splode.com
Noel Cragg noel@red-bean.com
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(
diff --git a/src/stat.c b/src/stat.c
index c6747a6b5..d80c62448 100644
--- a/src/stat.c
+++ b/src/stat.c
@@ -126,7 +126,11 @@ statfs (char const *filename, struct fs_info *buf)
# else
# define STRUCT_STATVFS struct statfs
# define STRUCT_STATXFS_F_FSID_IS_INTEGER STRUCT_STATFS_F_FSID_IS_INTEGER
-# define STATFS_FRSIZE(S) 0
+# if HAVE_STRUCT_STATFS_F_FRSIZE
+# define STATFS_FRSIZE(S) ((S)->f_frsize)
+# else
+# define STATFS_FRSIZE(S) 0
+# endif
# endif
#endif