Mercurial > hg > octave-nkf > gnulib-hg
changeset 12486:8d19393d7abe
unistd: work around cygwin bug
Cygwin 1.7.1 placed symlinkat and unlinkat in the wrong headers
(due to a bug in the Linux man pages).
* lib/unistd.in.h (includes): Pick up headers needed for cygwin.
* doc/posix-functions/unlinkat.texi (unlinkat): Document the bug.
* doc/posix-functions/symlinkat.texi (symlinkat): Likewise.
Signed-off-by: Eric Blake <ebb9@byu.net>
author | Eric Blake <ebb9@byu.net> |
---|---|
date | Wed, 23 Dec 2009 18:42:59 -0700 |
parents | a58429de702e |
children | 8ba9831d54bf |
files | ChangeLog doc/posix-functions/symlinkat.texi doc/posix-functions/unlinkat.texi lib/unistd.in.h |
diffstat | 4 files changed, 23 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-12-23 Eric Blake <ebb9@byu.net> + + unistd: work around cygwin bug + * lib/unistd.in.h (includes): Pick up headers needed for cygwin. + * doc/posix-functions/unlinkat.texi (unlinkat): Document the bug. + * doc/posix-functions/symlinkat.texi (symlinkat): Likewise. + 2009-12-23 Bruno Haible <bruno@clisp.org> localename: More tests.
--- a/doc/posix-functions/symlinkat.texi +++ b/doc/posix-functions/symlinkat.texi @@ -13,6 +13,10 @@ glibc 2.3.6, MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS. But the replacement function is not safe to be used in libraries and is not multithread-safe. +@item +Some platforms declare this function in @code{stdio.h} instead of +@code{unistd.h}: +Cygwin 1.7.1. @end itemize Portability problems not fixed by Gnulib:
--- a/doc/posix-functions/unlinkat.texi +++ b/doc/posix-functions/unlinkat.texi @@ -16,6 +16,10 @@ @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 +++ b/lib/unistd.in.h @@ -33,10 +33,17 @@ #include <stddef.h> /* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */ -#if !(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) +/* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>. */ +#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ + || @GNULIB_SYMLINKAT@) # include <stdio.h> #endif +/* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>. */ +#if @GNULIB_UNLINKAT@ +# include <fcntl.h> +#endif + /* mingw fails to declare _exit in <unistd.h>. */ /* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */ /* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */