diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2005-12-27 07:53:50 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2005-12-27 07:53:50 +0000 |
commit | a2c8ec26a4cb771ee0e13e2b08daf0f3c9b03d97 (patch) | |
tree | 5f8f2fc4f6642b796014a2d9ebfe90e625eded4a /lib/chdir-long.c | |
parent | edf69af3173e70c4a0ce743a74d2313f37ebbbe8 (diff) | |
download | coreutils-a2c8ec26a4cb771ee0e13e2b08daf0f3c9b03d97.tar.xz |
(cdb_free): Don't bother trying to open directory
for write access: POSIX says that must fail.
(cdb_free): Open with O_NOCTTY | O_NONBLOCK as
well, for minor improvements on hosts that lack O_DIRECTORY.
Diffstat (limited to 'lib/chdir-long.c')
-rw-r--r-- | lib/chdir-long.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/chdir-long.c b/lib/chdir-long.c index a72781725..8c15d06d2 100644 --- a/lib/chdir-long.c +++ b/lib/chdir-long.c @@ -77,13 +77,10 @@ cdb_free (struct cd_buf const *cdb) static int cdb_advance_fd (struct cd_buf *cdb, char const *dir) { - int new_fd = openat (cdb->fd, dir, O_RDONLY | O_DIRECTORY); + int new_fd = openat (cdb->fd, dir, + O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK); if (new_fd < 0) - { - new_fd = openat (cdb->fd, dir, O_WRONLY | O_DIRECTORY); - if (new_fd < 0) - return -1; - } + return -1; cdb_free (cdb); cdb->fd = new_fd; |