Cygwin: errno: handle ERROR_CASE_DIFFERING_NAMES_IN_DIR
Rather than special case status code 0xc00004b3, add status and matching error code to ntdll.h and handle it as part of the standard error mapping. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
e1026837dd
commit
fb1fe93203
|
@ -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),
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue