changeset 40147:69f945816225

fts: Add support for Android. * m4/fts.m4 (gl_FUNC_FTS_CORE): Avoid conflicts between the symbols defined by this module and the ones in libc. * tests/test-fts.c (main): Treat mkdir error EMLINK like EMFILE.
author Bruno Haible <bruno@clisp.org>
date Sun, 27 Jan 2019 04:57:24 +0100
parents 62fbdb07f551
children 5be6b690b930
files ChangeLog m4/fts.m4 tests/test-fts.c
diffstat 3 files changed, 30 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Jan 27 00:21:17 2019 +0100
+++ b/ChangeLog	Sun Jan 27 04:57:24 2019 +0100
@@ -1,3 +1,10 @@
+2019-01-26  Bruno Haible  <bruno@clisp.org>
+
+	fts: Add support for Android.
+	* m4/fts.m4 (gl_FUNC_FTS_CORE): Avoid conflicts between the symbols
+	defined by this module and the ones in libc.
+	* tests/test-fts.c (main): Treat mkdir error EMLINK like EMFILE.
+
 2019-01-26  Bruno Haible  <bruno@clisp.org>
 
 	mountlist: Use Linux code on Android.
--- a/m4/fts.m4	Sun Jan 27 00:21:17 2019 +0100
+++ b/m4/fts.m4	Sun Jan 27 04:57:24 2019 +0100
@@ -1,4 +1,4 @@
-#serial 21
+#serial 22
 dnl Copyright (C) 2005-2019 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -28,4 +28,22 @@
         ]])
     fi
   fi
+
+  AC_CHECK_FUNC([fts_open])
+  if test $ac_cv_func_fts_open = yes; then
+    dnl The system already has the symbols fts_open, etc.
+    dnl Avoid conflicts between these symbols and ours at the linker level.
+    AC_DEFINE([fts_open], [rpl_fts_open],
+      [Define to the overridden function name])
+    AC_DEFINE([fts_close], [rpl_fts_close],
+      [Define to the overridden function name])
+    AC_DEFINE([fts_read], [rpl_fts_read],
+      [Define to the overridden function name])
+    AC_DEFINE([fts_set], [rpl_fts_set],
+      [Define to the overridden function name])
+    AC_DEFINE([fts_children], [rpl_fts_children],
+      [Define to the overridden function name])
+    AC_DEFINE([fts_cross_check], [rpl_fts_cross_check],
+      [Define to the overridden function name])
+  fi
 ])
--- a/tests/test-fts.c	Sun Jan 27 00:21:17 2019 +0100
+++ b/tests/test-fts.c	Sun Jan 27 04:57:24 2019 +0100
@@ -102,7 +102,7 @@
 
   /* Create directories BASE, BASE/d, BASE/d/1, BASE/d/2, ..., BASE/d/65536,
      to stress-test fts.  Stop if directory creation fails due to
-     EMFILE problems, or if BASE/d's link count no longer matches the
+     EMFILE or EMLINK problems, or if BASE/d's link count no longer matches the
      Unix tradition.  See:
      https://bugzilla.kernel.org/show_bug.cgi?id=196405
      for more info.  */
@@ -115,7 +115,9 @@
       sprintf (buf, "%s/d/%i", base, i);
       if (mkdir (buf, 0777) != 0)
         {
-          if (errno != EMFILE || i <= needles)
+          if (errno == EMFILE || errno == EMLINK)
+            break;
+          if (i <= needles)
             perror_exit (buf, 77);
           break;
         }