diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2010-09-10 11:55:27 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2010-09-10 11:55:27 -0700 |
commit | ffb0b29997c66526985e1f4a496335d0ab4ef111 (patch) | |
tree | 855831d96cb87ac718f45362cd6bdea26cfa2ae3 /lib/open.c | |
parent | 3f322af6c93f7eb4c6ce5ceb789416aae10a50bd (diff) | |
download | gnulib-ffb0b29997c66526985e1f4a496335d0ab4ef111.tar.gz |
fcntl-h: define O_CLOEXEC and O_EXEC if not defined; use new defines
* doc/posix-headers/fcntl.texi (fcntl.h): Document that
O_CLOEXEC is now defined to 0 if it is not defined, like other flags.
Also, O_EXEC is now defined to be O_RDONLY if O_EXEC is not defined.
Similarly for O_SEARCH; this last was already true, but not documented.
* lib/fcntl.in.h (O_CLOEXEC): Define to 0 if not defined.
* lib/dup-safer-flag.c (O_CLOEXEC): Remove now-useless #define.
* lib/dup3.c, lib/pipe2.c, tests/test-dup-safer.c, tests/test-fcntl.c:
Likewise.
* lib/popen-safer.c (open_noinherit): Check whether O_CLOEXEC
is zero, not whether it is defined.
* tests/test-dup3.c, tests/test-pipe2.c (main): Likewise.
* lib/progreloc.c (find_executable): Use O_EXEC rather than O_RDONLY.
* lib/open.c (open): Check for O_SEARCH as well as for O_RDONLY.
Diffstat (limited to 'lib/open.c')
-rw-r--r-- | lib/open.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/open.c b/lib/open.c index f612b802d2..4e44936584 100644 --- a/lib/open.c +++ b/lib/open.c @@ -111,7 +111,8 @@ open (const char *filename, int flags, ...) override fstat() in fchdir.c to hide the fact that we have a dummy. */ if (REPLACE_OPEN_DIRECTORY && fd < 0 && errno == EACCES - && (flags & O_ACCMODE) == O_RDONLY) + && ((flags & O_ACCMODE) == O_RDONLY + || (O_SEARCH != O_RDONLY && (flags & O_ACCMODE) == O_SEARCH))) { struct stat statbuf; if (stat (filename, &statbuf) == 0 && S_ISDIR (statbuf.st_mode)) |