changeset 19045:bf63563adfd2

fts: port recent changes to CentOS 6 Problem reported by Tom G. Christensen in: http://lists.gnu.org/archive/html/bug-gnulib/2017-08/msg00064.html * lib/fts.c (fsword): New type. (struct dev_type, filesystem_type): Use it. * m4/fts.m4 (gl_FUNC_FTS_CORE): Check for __fsword_t. Also, check for f_type only if fstatfs and sys/vfs.h work.
author Paul Eggert <eggert@cs.ucla.edu>
date Thu, 10 Aug 2017 06:06:06 -0700
parents ca6b7b50af65
children 6f934f8dfa24
files ChangeLog lib/fts.c m4/fts.m4
diffstat 3 files changed, 31 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Aug 09 15:56:01 2017 -0700
+++ b/ChangeLog	Thu Aug 10 06:06:06 2017 -0700
@@ -1,3 +1,13 @@
+2017-08-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+	fts: port recent changes to CentOS 6
+	Problem reported by Tom G. Christensen in:
+	http://lists.gnu.org/archive/html/bug-gnulib/2017-08/msg00064.html
+	* lib/fts.c (fsword): New type.
+	(struct dev_type, filesystem_type): Use it.
+	* m4/fts.m4 (gl_FUNC_FTS_CORE): Check for __fsword_t.
+	Also, check for f_type only if fstatfs and sys/vfs.h work.
+
 2017-08-09  Paul Eggert  <eggert@cs.ucla.edu>
 
 	tempname: do not depend on secure_getenv
--- a/lib/fts.c	Wed Aug 09 15:56:01 2017 -0700
+++ b/lib/fts.c	Thu Aug 10 06:06:06 2017 -0700
@@ -699,11 +699,17 @@
 # define S_MAGIC_TMPFS 0x1021994
 # define S_MAGIC_XFS 0x58465342
 
+# ifdef HAVE___FSWORD_T
+typedef __fsword_t fsword;
+# else
+typedef long int fsword;
+# endif
+
 /* Map a stat.st_dev number to a file system type number f_ftype.  */
 struct dev_type
 {
   dev_t st_dev;
-  __fsword_t f_type;
+  fsword f_type;
 };
 
 /* Use a tiny initial size.  If a traversal encounters more than
@@ -730,7 +736,7 @@
 /* Return the file system type of P, or 0 if not known.
    Try to cache known values.  */
 
-static __fsword_t
+static fsword
 filesystem_type (FTSENT const *p)
 {
   FTS *sp = p->fts_fts;
--- a/m4/fts.m4	Wed Aug 09 15:56:01 2017 -0700
+++ b/m4/fts.m4	Thu Aug 10 06:06:06 2017 -0700
@@ -1,4 +1,4 @@
-#serial 20
+#serial 21
 dnl Copyright (C) 2005-2017 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,16 @@
 
   AC_CHECK_FUNCS_ONCE([fstatfs])
   AC_CHECK_HEADERS_ONCE([sys/param.h sys/vfs.h])dnl
-  AC_CHECK_MEMBERS([struct statfs.f_type],,,
-    [$ac_includes_default
-     #include <sys/vfs.h>])
+  if test "$ac_cv_func_fstatfs,$ac_cv_header_sys_vfs_h" = yes,yes; then
+    AC_CHECK_MEMBERS([struct statfs.f_type], [], [],
+      [[$ac_includes_default
+        #include <sys/vfs.h>
+      ]])
+    if test "$ac_cv_member_struct_statfs_f_type" = yes; then
+      AC_CHECK_TYPES([__fsword_t], [], [],
+        [[$ac_includes_default
+          #include <sys/vfs.h>
+        ]])
+    fi
+  fi
 ])