From 676548b3d1c6e15981c6ddb7dfca483d6ec910ec Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 21 May 2013 10:04:45 +0000 Subject: [PATCH] * syscalls.cc (open): Only return ENOTDIR if file exists. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/syscalls.cc | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 3b685861f..048b3c25c 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2013-05-21 Corinna Vinschen + + * syscalls.cc (open): Only return ENOTDIR if file exists. + 2013-05-16 Christopher Faylor * sigproc.cc (sig_hold): Delete. diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index a8ca9efab..e1886e617 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1360,7 +1360,7 @@ open (const char *unix_path, int flags, ...) res = -1; set_errno (ELOOP); } - else if ((flags & O_DIRECTORY) && !fh->pc.isdir ()) + else if ((flags & O_DIRECTORY) && fh->exists () && !fh->pc.isdir ()) { delete fh; res = -1;