diff options
author | Thomas Munro <tmunro@postgresql.org> | 2022-07-28 14:13:37 +1200 |
---|---|---|
committer | Thomas Munro <tmunro@postgresql.org> | 2022-07-28 14:27:28 +1200 |
commit | fc4e5af30749eadc2acf98de426fa51910f8766b (patch) | |
tree | bcf1a2a6f355bd979c119475702344a6b50bb524 /src/fe_utils/query_utils.c | |
parent | 1d01d198536f24995f2d5271f55c73be644438fc (diff) | |
download | postgresql-fc4e5af30749eadc2acf98de426fa51910f8766b.tar.gz postgresql-fc4e5af30749eadc2acf98de426fa51910f8766b.zip |
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@dunslane.net>
Discussion: https://postgr.es/m/b9ddf605-6b36-f90d-7c30-7b3e95c46276%40dunslane.net
Diffstat (limited to 'src/fe_utils/query_utils.c')
0 files changed, 0 insertions, 0 deletions