]> Savannah Git Hosting - gnulib.git/commitdiff
fts: Add support for Android.
authorBruno Haible <bruno@clisp.org>
Sun, 27 Jan 2019 03:57:24 +0000 (04:57 +0100)
committerBruno Haible <bruno@clisp.org>
Sun, 27 Jan 2019 03:57:24 +0000 (04:57 +0100)
* 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.

ChangeLog
m4/fts.m4
tests/test-fts.c

index 21fade73821f2f2ddd416615623bee74eaabb580..e0aaf8f1978e339c3a57b0533ca1f581c6ee6552 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
index a9bf6a6d992ead3b6642a45e09f0968e6db1daab..fa51ab465b419d147a85a694d7ef3715577773b3 100644 (file)
--- a/m4/fts.m4
+++ b/m4/fts.m4
@@ -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 @@ AC_DEFUN([gl_FUNC_FTS_CORE],
         ]])
     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
 ])
index 14d37022c96fb01718ca67654095acb2e5cb929f..4c6bdb6e947eee1bed9783b873435c3f07f97430 100644 (file)
@@ -102,7 +102,7 @@ main (void)
 
   /* 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 @@ main (void)
       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;
         }