git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] win32: explicitly set errno to enoent if err is not error_directory

From
Johannes Sixt <j6t@kdbg.org>
Date
Dec 20, 2022, 07:21 UTC
Message-ID
<2c0c8ead-3942-6c44-b854-5980cff55755@kdbg.org>
In-Reply-To
<pull.1402.v2.git.git.1671466826159.gitgitgadget@gmail.com>
Am 19.12.22 um 17:20 schrieb Rose via GitGitGadget:
Show 10 quoted lines
> From: Seija Kijin <doremylover123@gmail.com>
> 
> At this point, the only two possible errors are
> ERROR_DIRECTORY or ERROR_BAD_PATHNAME.
> 
> This code clarifies this and also saves a call to
> err_win_to_posix.
> 
> Signed-off-by: Seija Kijin <doremylover123@gmail.com>
> ---
Show 17 quoted lines
> diff --git a/compat/win32/dirent.c b/compat/win32/dirent.c
> index 52420ec7d4d..8f94a5ab6db 100644
> --- a/compat/win32/dirent.c
> +++ b/compat/win32/dirent.c
> @@ -34,13 +34,13 @@ DIR *opendir(const char *name)
>  	if (len && !is_dir_sep(pattern[len - 1]))
>  		pattern[len++] = '/';
>  	pattern[len++] = '*';
> -	pattern[len] = 0;
> +	pattern[len] = '\0';
>  
>  	/* open find handle */
>  	h = FindFirstFileW(pattern, &fdata);
>  	if (h == INVALID_HANDLE_VALUE) {
>  		DWORD err = GetLastError();
> -		errno = (err == ERROR_DIRECTORY) ? ENOTDIR : err_win_to_posix(err);
> +		errno = (err == ERROR_DIRECTORY) ? ENOTDIR : ENOENT;

This change does not look correct. The documentation of FindFirstFileW()[*] does not give any guarantees that ERROR_DIRECTORY and ERROR_BAD_PATHNAME are the only possible error values. It is certainly not unthinkable that a hardware error is reported as ERROR_IO_DEVICE and should be translated to EIO.

[*] https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-findfirstfilew

-- Hannes
Previous: Rose via GitGitGadgetNext: Ævar Arnfjörð Bjarmason
Message 3 of 4 in “Explicitly set errno to ENOENT if err is not ERROR_DIRECTORY”
  1. Explicitly set errno to ENOENT if err is not ERROR_DIRECTORYRose via GitGitGadget, Dec 19, 2022
  2. win32: explicitly set errno to enoent if err is not error_directoryRose via GitGitGadget, Dec 19, 2022
  3. Johannes SixtDec 20, 2022
  4. Ævar Arnfjörð BjarmasonDec 19, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.