changeset 40131:9c7eed94d112

unlinkat: Fix compilation error on Android 4.3. * lib/unistd.in.h: Include <fcntl.h> when module 'unlinkat' is in use also on Android. * doc/posix-functions/unlinkat.texi: Mention the issue.
author Bruno Haible <bruno@clisp.org>
date Fri, 25 Jan 2019 00:08:52 +0100
parents 1408a8db4054
children 6bcaf5dcb02b
files ChangeLog doc/posix-functions/unlinkat.texi lib/unistd.in.h
diffstat 3 files changed, 15 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Jan 25 00:03:12 2019 +0100
+++ b/ChangeLog	Fri Jan 25 00:08:52 2019 +0100
@@ -1,3 +1,10 @@
+2019-01-24  Bruno Haible  <bruno@clisp.org>
+
+	unlinkat: Fix compilation error on Android 4.3.
+	* lib/unistd.in.h: Include <fcntl.h> when module 'unlinkat' is in use
+	also on Android.
+	* doc/posix-functions/unlinkat.texi: Mention the issue.
+
 2019-01-24  Bruno Haible  <bruno@clisp.org>
 
 	renameat: Fix compilation error on Android 4.3.
--- a/doc/posix-functions/unlinkat.texi	Fri Jan 25 00:03:12 2019 +0100
+++ b/doc/posix-functions/unlinkat.texi	Fri Jan 25 00:08:52 2019 +0100
@@ -14,15 +14,15 @@
 AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 1.5.x, mingw, MSVC 14, Interix 3.5, BeOS.
 But the replacement function is not safe to be used in libraries and is not multithread-safe.
 @item
+This function is declared in @code{<fcntl.h>}, not in @code{<unistd.h>},
+on some platforms:
+Cygwin 1.7.1, Android 4.3.
+@item
 On Mac OS X 10.10, in a writable HFS mount, @code{unlinkat(fd, "..", 0)} succeeds
 without doing anything.
 @item
 Some systems mistakenly succeed on @code{unlinkat(fd,"file/",flag)}:
 GNU/Hurd, Solaris 9.
-@item
-Some platforms declare this function in @code{fcntl.h} instead of
-@code{unistd.h}:
-Cygwin 1.7.1.
 @end itemize
 
 Portability problems not fixed by Gnulib:
--- a/lib/unistd.in.h	Fri Jan 25 00:03:12 2019 +0100
+++ b/lib/unistd.in.h	Fri Jan 25 00:08:52 2019 +0100
@@ -68,9 +68,11 @@
 # include <stdio.h>
 #endif
 
-/* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>.  */
+/* Cygwin 1.7.1 and Android 4.3 declare unlinkat in <fcntl.h>, not in
+   <unistd.h>.  */
 /* But avoid namespace pollution on glibc systems.  */
-#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \
+#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) \
+    && (defined __CYGWIN__ || defined __ANDROID__) \
     && ! defined __GLIBC__
 # include <fcntl.h>
 #endif