summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_registry.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/fhandler_registry.cc')
-rw-r--r--winsup/cygwin/fhandler_registry.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/winsup/cygwin/fhandler_registry.cc b/winsup/cygwin/fhandler_registry.cc
index 41ff072a2..07be1d0c7 100644
--- a/winsup/cygwin/fhandler_registry.cc
+++ b/winsup/cygwin/fhandler_registry.cc
@@ -484,12 +484,18 @@ fhandler_registry::open (int flags, mode_t mode)
goto out;
}
- handle = open_key (path, KEY_READ, true);
+ handle = open_key (path, KEY_READ, false);
if (handle == (HKEY) INVALID_HANDLE_VALUE)
{
- res = 0;
- goto out;
+ handle = open_key (path, KEY_READ, true);
+ if (handle == (HKEY) INVALID_HANDLE_VALUE)
+ {
+ res = 0;
+ goto out;
+ }
}
+ else
+ flags |= O_DIROPEN;
set_io_handle (handle);
@@ -498,7 +504,7 @@ fhandler_registry::open (int flags, mode_t mode)
else
value_name = cstrdup (file);
- if (!fill_filebuf ())
+ if (!(flags & O_DIROPEN) && !fill_filebuf ())
{
RegCloseKey (handle);
res = 0;