mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-17 12:41:05 +03:00
open("link-to-file/", O_RDONLY) mistakenly succeeds. The previous patch was enough to fix utimens when no fd is involved, but this is necessary for futimens to pass. * m4/open.m4 (gl_FUNC_OPEN): Also detect FreeBSD bug with slash on symlink. * doc/posix-functions/open.texi (open): Document the bug. * doc/posix-functions/utimes.texi (utimes): Likewise. * tests/test-open.h (test_open): Add parameters, and test symlink handling. * tests/test-open.c (main): Adjust caller. * tests/test-fcntl-safer.c (main): Likewise. * modules/open-tests (Depends-on): Add stdbool, symlink. * modules/fcntl-safer-tests (Depends-on): Likewise. * tests/test-openat.c (main): Add test-open tests. Signed-off-by: Eric Blake <ebb9@byu.net>
39 lines
1.2 KiB
Plaintext
39 lines
1.2 KiB
Plaintext
@node open
|
|
@section @code{open}
|
|
@findex open
|
|
|
|
POSIX specification: @url{http://www.opengroup.org/onlinepubs/9699919799/functions/open.html}
|
|
|
|
Gnulib module: open, fchdir
|
|
|
|
Portability problems fixed by the Gnulib module open:
|
|
@itemize
|
|
@item
|
|
This function does not fail when the file name argument ends in a slash
|
|
and (without the slash) names a nonexistent file or a file that is not a
|
|
directory, on some platforms:
|
|
FreeBSD 7.2, HP-UX 11.00, Solaris 9, Irix 5.3.
|
|
@item
|
|
On Windows platforms (excluding Cygwin), this function does usually not
|
|
recognize the @file{/dev/null} filename.
|
|
@end itemize
|
|
|
|
Portability problems fixed by the Gnulib module fchdir:
|
|
@itemize
|
|
@item
|
|
On Windows platforms (excluding Cygwin), this function fails to open a
|
|
read-only descriptor for directories.
|
|
@end itemize
|
|
|
|
Portability problems not fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
On Windows, this function returns a file handle in @code{O_TEXT} mode by
|
|
default; this means that it translates '\n' to CR/LF by default. Use the
|
|
@code{O_BINARY} flag if you need reliable binary I/O.
|
|
@item
|
|
On platforms where @code{off_t} is a 32-bit type, @code{open} may not work
|
|
correctly with files larger than 2 GB. The fix is to use the
|
|
@code{AC_SYS_LARGEFILE} macro.
|
|
@end itemize
|