From 8a889eff57a95b48187e0e7876f2b7898b3e3df7 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 5 Mar 2008 18:31:09 +0000 Subject: * child_info.h (~child_info_spawn): Check moreinfo->myself_pinfo for NULL before closing. * spawn.cc (spawn_guts): Don't close moreinfo->myself_pinfo explicitely in case of failing CloseProcess. * fhandler.cc (fhandler_base::open_): Return EISDIR when trying to create a directory. * path.cc (path_conv::check): If input path had a trailing dir separator, tack it on to the native path if directory doesn't exist. --- winsup/cygwin/fhandler.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'winsup/cygwin/fhandler.cc') diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index f47805bde..25f167247 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -590,7 +590,13 @@ fhandler_base::open (int flags, mode_t mode) create_disposition, create_options, NULL, 0); if (!NT_SUCCESS (status)) { - __seterrno_from_nt_status (status); + /* Trying to open a directory should return EISDIR, not ENOENT. */ + PUNICODE_STRING upath = pc.get_nt_native_path (); + if (status == STATUS_OBJECT_NAME_INVALID + && upath->Buffer[upath->Length / sizeof (WCHAR) - 1] == '\\') + set_errno (EISDIR); + else + __seterrno_from_nt_status (status); if (!nohandle ()) goto done; } -- cgit v1.2.3