fcntl-h, etc.: prefer O_SEARCH to O_RDONLY when applicable
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 1 Sep 2010 20:45:53 +0000 (13:45 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 1 Sep 2010 20:46:21 +0000 (13:46 -0700)
commit24816be6c14cbc51938d036533ec5ccaa9a056e2
treed806ac747bd2de1b5d730c7c74f22f2ae41474d5
parent89c0f8b3c26bc3a218969bda3d7116a0528409c8
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.
ChangeLog
lib/chdir-long.c
lib/chdir-safer.c
lib/fcntl.in.h
lib/fts.c
lib/openat-proc.c
lib/openat.c
lib/save-cwd.c
lib/savewd.c