summaryrefslogtreecommitdiff
path: root/src/stat.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2006-08-29 21:53:29 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2006-08-29 21:53:29 +0000
commitddb97ab3b1a6477309f46f5b240fc5ddae8d340a (patch)
tree478a54d1bf38ab5cf14140ac9392f5ea0aac8a6c /src/stat.c
parentbc7aa2329c189fc1f028be90cba56bb4e3ae04a1 (diff)
downloadcoreutils-ddb97ab3b1a6477309f46f5b240fc5ddae8d340a.tar.xz
* src/stat.c (HAVE_STRUCT_STATXFS_F_FSID_VAL, FSID_VAL): New macros, to
work around a Mac OS X porting problem reported by Bruno Haible in <http://lists.gnu.org/archive/html/bug-coreutils/2006-08/msg00308.html>. (print_statfs): Use them. * m4/stat-prog.m4 (cu_PREREQ_STAT_PROG): Check for __val versus val components of fsid. Omit some checks that stat.c doesn't care about.
Diffstat (limited to 'src/stat.c')
-rw-r--r--src/stat.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/stat.c b/src/stat.c
index 6d39b5676..dcd4aa0c5 100644
--- a/src/stat.c
+++ b/src/stat.c
@@ -19,6 +19,8 @@
#include <config.h>
+/* Keep this conditional in sync with the similar conditional in
+ ../m4/stat-prog.m4. */
#if (STAT_STATVFS \
&& (HAVE_STRUCT_STATVFS_F_BASETYPE || HAVE_STRUCT_STATVFS_F_FSTYPENAME \
|| (! HAVE_STRUCT_STATFS_F_FSTYPENAME && HAVE_STRUCT_STATVFS_F_TYPE)))
@@ -69,6 +71,7 @@
#if USE_STATVFS
# define STRUCT_STATVFS struct statvfs
# define HAVE_STRUCT_STATXFS_F_FSID___VAL HAVE_STRUCT_STATVFS_F_FSID___VAL
+# define HAVE_STRUCT_STATXFS_F_FSID_VAL HAVE_STRUCT_STATVFS_F_FSID_VAL
# define HAVE_STRUCT_STATXFS_F_TYPE HAVE_STRUCT_STATVFS_F_TYPE
# if HAVE_STRUCT_STATVFS_F_NAMEMAX
# define SB_F_NAMEMAX(S) ((S)->f_namemax)
@@ -111,14 +114,22 @@ statfs (char const *filename, struct fs_info *buf)
# define f_ffree free_nodes
# define STRUCT_STATVFS struct fs_info
# define HAVE_STRUCT_STATXFS_F_FSID___VAL 0
+# define HAVE_STRUCT_STATXFS_F_FSID_VAL 0
# define STATFS_FRSIZE(S) ((S)->block_size)
# else
# define STRUCT_STATVFS struct statfs
# define HAVE_STRUCT_STATXFS_F_FSID___VAL HAVE_STRUCT_STATFS_F_FSID___VAL
+# define HAVE_STRUCT_STATXFS_F_FSID_VAL HAVE_STRUCT_STATFS_F_FSID_VAL
# define STATFS_FRSIZE(S) 0
# endif
#endif
+#if HAVE_STRUCT_STATXFS_F_FSID___VAL
+# define FSID_VAL __val
+#elif HAVE_STRUCT_STATXFS_F_FSID_VAL
+# define FSID_VAL val
+#endif
+
#ifdef SB_F_NAMEMAX
# define OUT_NAMEMAX out_uint
#else
@@ -404,13 +415,13 @@ print_statfs (char *pformat, size_t prefix_len, char m, char const *filename,
case 'i':
{
-#if HAVE_STRUCT_STATXFS_F_FSID___VAL
- uintmax_t val0 = statfsbuf->f_fsid.__val[0];
- uintmax_t val1 = statfsbuf->f_fsid.__val[1];
+#ifdef FSID_VAL
+ uintmax_t val0 = statfsbuf->f_fsid.FSID_VAL[0];
+ uintmax_t val1 = statfsbuf->f_fsid.FSID_VAL[1];
uintmax_t fsid =
(val1
- + (sizeof statfsbuf->f_fsid.__val[1] < sizeof fsid
- ? val0 << (CHAR_BIT * sizeof statfsbuf->f_fsid.__val[1])
+ + (sizeof statfsbuf->f_fsid.FSID_VAL[1] < sizeof fsid
+ ? val0 << (CHAR_BIT * sizeof statfsbuf->f_fsid.FSID_VAL[1])
: 0));
#else
uintmax_t fsid = statfsbuf->f_fsid;