pgsql: Fix get_dirent_type() for symlinks on MinGW/MSYS.

Поиск
Список
Период
Сортировка
От Thomas Munro
Тема pgsql: Fix get_dirent_type() for symlinks on MinGW/MSYS.
Дата
Msg-id E1oGtIb-001ZTC-3f@gemulon.postgresql.org
обсуждение исходный текст
Список 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@dunslane.net>
Discussion: https://postgr.es/m/b9ddf605-6b36-f90d-7c30-7b3e95c46276%40dunslane.net

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/fc4e5af30749eadc2acf98de426fa51910f8766b

Modified Files
--------------
src/common/file_utils.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Thomas Munro
Дата:
Сообщение: pgsql: Fix get_dirent_type() for symlinks on MinGW/MSYS.
Следующее
От: Thomas Munro
Дата:
Сообщение: pgsql: Fix get_dirent_type() for symlinks on MinGW/MSYS.