diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2010-09-01 13:45:53 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2010-09-01 13:46:21 -0700 |
commit | 24816be6c14cbc51938d036533ec5ccaa9a056e2 (patch) | |
tree | d806ac747bd2de1b5d730c7c74f22f2ae41474d5 /lib/fcntl.in.h | |
parent | 89c0f8b3c26bc3a218969bda3d7116a0528409c8 (diff) | |
download | gnulib-24816be6c14cbc51938d036533ec5ccaa9a056e2.tar.gz |
fcntl-h, etc.: prefer O_SEARCH to O_RDONLY when applicable
POSIX 2008 specifies a new 'open' flag O_SEARCH, which can be used
when one needs search access to a directory but not read access.
On systems where it is available, it works in some cases where
O_RDONLY does not, namely on directories that are searchable but
not readable, and which need only to be searchable. If O_SEARCH
is not available, fall back to the traditional method of using
O_RDONLY.
* lib/fcntl.in.h (O_SEARCH): #define to O_RDONLY if not defined.
* lib/chdir-long.c (cdb_advance_fd): Use O_SEARCH, not O_RDONLY,
when opening a directory that needs only to be searchable.
* lib/chdir-safer.c (chdir_no_follow): Likewise.
* lib/fts.c (diropen, fts_open, fd_ring_check): Likewise.
* lib/openat-proc.c (openat_proc_name): Likewise.
* lib/openat.c (openat_needs_fchdir): Likewise.
* lib/save-cwd.c (save_cwd): Likewise.
* lib/savewd.c (savewd_save, savewd_chdir): Likewise.
Diffstat (limited to 'lib/fcntl.in.h')
-rw-r--r-- | lib/fcntl.in.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/fcntl.in.h b/lib/fcntl.in.h index 8fb7852204..42fb81bfb0 100644 --- a/lib/fcntl.in.h +++ b/lib/fcntl.in.h @@ -210,6 +210,10 @@ _GL_WARN_ON_USE (openat, "openat is not portable - " # define O_RSYNC 0 #endif +#ifndef O_SEARCH +# define O_SEARCH O_RDONLY /* This is often close enough in older systems. */ +#endif + #ifndef O_SYNC # define O_SYNC 0 #endif |