From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id B7B4E385BF9C; Thu, 2 Dec 2021 16:30:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B7B4E385BF9C Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: errno: handle ERROR_CASE_DIFFERING_NAMES_IN_DIR X-Act-Checkin: newlib-cygwin X-Git-Author: Corinna Vinschen X-Git-Refname: refs/heads/master X-Git-Oldrev: e1026837dd43577273ec9fcbaf4c2c41fdabd56d X-Git-Newrev: fb1fe932038e5a9833fcc5fc53365a2212d76584 Message-Id: <20211202163059.B7B4E385BF9C@sourceware.org> Date: Thu, 2 Dec 2021 16:30:59 +0000 (GMT) X-BeenThere: cygwin-cvs@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin core component git logs List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Dec 2021 16:30:59 -0000 https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=fb1fe932038e5a9833fcc5fc53365a2212d76584 commit fb1fe932038e5a9833fcc5fc53365a2212d76584 Author: Corinna Vinschen Date: Thu Dec 2 14:13:43 2021 +0100 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 Diff: --- winsup/cygwin/errno.cc | 1 + winsup/cygwin/fhandler_disk_file.cc | 10 +--------- winsup/cygwin/ntdll.h | 5 +++++ 3 files changed, 7 insertions(+), 9 deletions(-) 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)