summaryrefslogtreecommitdiff
path: root/lib/chdir-long.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2005-12-27 07:53:50 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2005-12-27 07:53:50 +0000
commita2c8ec26a4cb771ee0e13e2b08daf0f3c9b03d97 (patch)
tree5f8f2fc4f6642b796014a2d9ebfe90e625eded4a /lib/chdir-long.c
parentedf69af3173e70c4a0ce743a74d2313f37ebbbe8 (diff)
downloadcoreutils-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.c9
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;