]> Savannah Git Hosting - gnulib.git/commitdiff
fts: port recent changes to CentOS 6
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 10 Aug 2017 13:06:06 +0000 (06:06 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 10 Aug 2017 13:07:03 +0000 (06:07 -0700)
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.

ChangeLog
lib/fts.c
m4/fts.m4

index 92113dec0272ca82e436caafcd4bb7aa3fb370ec..9f8dca5d86b4810bc30e0a7020f7164b11f4705c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index a870054f3439a530d0e825906751c3f163d2be59..bf8edf8211eca10537d09d68c6bde03f5a8dde13 100644 (file)
--- a/lib/fts.c
+++ b/lib/fts.c
@@ -699,11 +699,17 @@ enum leaf_optimization
 # 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 @@ dev_type_compare (void const *x, void const *y)
 /* 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;
index 123fcba03dbbef7016b36b3cb926c881201e88bb..639f6b89dce5441a65cfbb512a1555d6990198d3 100644 (file)
--- a/m4/fts.m4
+++ b/m4/fts.m4
@@ -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_DEFUN([gl_FUNC_FTS_CORE],
 
   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
 ])