From: | Thomas Munro <tmunro(at)postgresql(dot)org> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Fix get_dirent_type() for symlinks on MinGW/MSYS. |
Date: | 2022-07-28 02:31:09 |
Message-ID: | E1oGtIq-001ZTr-P1@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Fix get_dirent_type() for symlinks on MinGW/MSYS.
On Windows with MSVC, get_dirent_type() was recently made to return
DT_LNK for junction points by commit 9d3444dc, which fixed some
defective dirent.c code.
On Windows with Cygwin, get_dirent_type() already worked for symlinks,
as it does on POSIX systems, because Cygwin has its own fake symlinks
that behave like POSIX (on closer inspection, Cygwin's dirent has the
BSD d_type extension but it's probably always DT_UNKNOWN, so we fall
back to lstat(), which understands Cygwin symlinks with S_ISLNK()).
On Windows with MinGW/MSYS, we need extra code, because the MinGW
runtime has its own readdir() without d_type, and the lstat()-based
fallback has no knowledge of our convention for treating junctions as
symlinks.
Back-patch to 14, where get_dirent_type() landed.
Reported-by: Andrew Dunstan <andrew(at)dunslane(dot)net>
Discussion: https://postgr.es/m/b9ddf605-6b36-f90d-7c30-7b3e95c46276%40dunslane.net
Branch
------
REL_14_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/5ad478c9d95657948fd818ac7e97a28eea3c3433
Modified Files
--------------
src/common/file_utils.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
From | Date | Subject | |
---|---|---|---|
Next Message | Fujii Masao | 2022-07-28 05:57:22 | pgsql: Fix comment in procarray.c. |
Previous Message | Thomas Munro | 2022-07-28 02:30:54 | pgsql: Fix get_dirent_type() for symlinks on MinGW/MSYS. |