diff --git a/winsup/cygwin/errno.cc b/winsup/cygwin/errno.cc index 420326566..55219cccc 100644 --- a/winsup/cygwin/errno.cc +++ b/winsup/cygwin/errno.cc @@ -53,6 +53,7 @@ static const errmap_t errmap[] = X (CALL_NOT_IMPLEMENTED, ENOSYS), X (CANCELLED, EINTR), X (CANNOT_MAKE, EPERM), + X (CASE_DIFFERING_NAMES_IN_DIR, EINVAL), X (CHILD_NOT_COMPLETE, EBUSY), X (COMMITMENT_LIMIT, EAGAIN), X (CONNECTION_REFUSED, ECONNREFUSED), diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index 26726c5d7..3cec1ed84 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -2547,15 +2547,7 @@ fhandler_disk_file::fs_ioc_setflags (uint64_t flags) FileCaseSensitiveInformation); if (!NT_SUCCESS (status)) { - /* Special case: The directory contains files which only - differ in case. NtSetInformationFile refuses to change - back to case insensitivity and returns status 0xc00004b3. - There's no STATUS_xyz macro assigned to that value yet, - nor does it map to a useful Win32 error value. */ - if (status == (NTSTATUS) 0xc00004b3) - set_errno (EINVAL); /* Does that make sense? */ - else - __seterrno_from_nt_status (status); + __seterrno_from_nt_status (status); goto out; } } diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h index f7c427e40..59c396676 100644 --- a/winsup/cygwin/ntdll.h +++ b/winsup/cygwin/ntdll.h @@ -15,6 +15,11 @@ extern GUID __cygwin_socket_guid; #define CYGWIN_SOCKET_GUID (&__cygwin_socket_guid) +/* Status codes not known to Mingw-w64 yet. The error code needs to + be maintained here as well as long as Mingw-w64 didn't follow up. */ +#define STATUS_CASE_DIFFERING_NAMES_IN_DIR ((NTSTATUS)0xC00004B3) +#define ERROR_CASE_DIFFERING_NAMES_IN_DIR __MSABI_LONG(424) + /* Custom Cygwin-only status codes. */ #define STATUS_THREAD_SIGNALED ((NTSTATUS)0xe0000001) #define STATUS_THREAD_CANCELED ((NTSTATUS)0xe0000002)