>From 356f06d605b2f13bedc5359ea1fda66bed710559 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 10 Aug 2017 06:06:06 -0700 Subject: [PATCH] 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. --- ChangeLog | 10 ++++++++++ lib/fts.c | 10 ++++++++-- m4/fts.m4 | 17 +++++++++++++---- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 92113de..9f8dca5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2017-08-10 Paul Eggert + + 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 tempname: do not depend on secure_getenv diff --git a/lib/fts.c b/lib/fts.c index a870054..bf8edf8 100644 --- 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; diff --git a/m4/fts.m4 b/m4/fts.m4 index 123fcba..639f6b8 100644 --- 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 ]) + 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 + ]]) + if test "$ac_cv_member_struct_statfs_f_type" = yes; then + AC_CHECK_TYPES([__fsword_t], [], [], + [[$ac_includes_default + #include + ]]) + fi + fi ]) -- 2.7.4