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;