Re: [PATCH 03/18] mingw: drop the separate `do_lstat()` function
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Dec 18, 2025, 10:48 UTC
- Message-ID
- <52d0ef24-ae21-400c-836b-aa43dd5899d2@kdbg.org>
- In-Reply-To
- <aa0ca80bbb00ec53f359c79719b95bcc141ac85c.1765980535.git.gitgitgadget@gmail.com>
Am 17.12.25 um 15:08 schrieb Karsten Blees via GitGitGadget:
Show 30 quoted lines
> From: Karsten Blees <blees@dcon.de> > > With the new `mingw_stat()` implementation, `do_lstat()` is only called > from `mingw_lstat()` (with the function parameter `follow == 0`). Remove > the extra function and the old `mingw_stat()`-specific (`follow == 1`) > logic. > > Signed-off-by: Karsten Blees <blees@dcon.de> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> > --- > compat/mingw.c | 22 ++-------------------- > 1 file changed, 2 insertions(+), 20 deletions(-) > > diff --git a/compat/mingw.c b/compat/mingw.c > index 59afd69686..ec6c2801d3 100644 > --- a/compat/mingw.c > +++ b/compat/mingw.c > @@ -917,14 +917,7 @@ static int has_valid_directory_prefix(wchar_t *wfilename) > return 1; > } > > -/* We keep the do_lstat code in a separate function to avoid recursion. > - * When a path ends with a slash, the stat will fail with ENOENT. In > - * this case, we strip the trailing slashes and stat again. > - * > - * If follow is true then act like stat() and report on the link > - * target. Otherwise report on the link itself. > - */ > -static int do_lstat(int follow, const char *file_name, struct stat *buf) > +int mingw_lstat(const char *file_name, struct stat *buf)
Oh, here goes the entire function including the comment. Fine, then. Disregard my comment on 01/18.
Show 30 quoted lines
> {
> WIN32_FILE_ATTRIBUTE_DATA fdata;
> wchar_t wfilename[MAX_PATH];
> @@ -958,13 +951,7 @@ static int do_lstat(int follow, const char *file_name, struct stat *buf)
> if (handle != INVALID_HANDLE_VALUE) {
> if ((findbuf.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) &&
> (findbuf.dwReserved0 == IO_REPARSE_TAG_SYMLINK)) {
> - if (follow) {
> - char buffer[MAXIMUM_REPARSE_DATA_BUFFER_SIZE];
> - buf->st_size = readlink(file_name, buffer, MAXIMUM_REPARSE_DATA_BUFFER_SIZE);
> - } else {
> - buf->st_mode = S_IFLNK;
> - }
> - buf->st_mode |= S_IREAD;
> + buf->st_mode = S_IFLNK | S_IREAD;
> if (!(findbuf.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
> buf->st_mode |= S_IWRITE;
> }
> @@ -1022,11 +1009,6 @@ static int get_file_info_by_handle(HANDLE hnd, struct stat *buf)
> return 0;
> }
>
> -int mingw_lstat(const char *file_name, struct stat *buf)
> -{
> - return do_lstat(0, file_name, buf);
> -}
> -
> int mingw_stat(const char *file_name, struct stat *buf)
> {
> wchar_t wfile_name[MAX_PATH];An obviously correct rewrite.
-- Hannes