Fix lstat() for broken junction points on Windows.
authorThomas Munro <tmunro@postgresql.org>
Tue, 25 Oct 2022 02:20:00 +0000 (15:20 +1300)
committerThomas Munro <tmunro@postgresql.org>
Tue, 25 Oct 2022 03:19:01 +0000 (16:19 +1300)
commit387803d81d6256fcb60b9192bb5b00042442b4e3
treeb760220fd6545eedcfd019e05c8478100749c70b
parent4650036f5ab81c93e3b6ed549ef672a325b79705
Fix lstat() for broken junction points on Windows.

When using junction points to emulate symlinks on Windows, one edge case
was not handled correctly by commit c5cb8f3b: if a junction point is
broken (pointing to a non-existent path), we'd report ENOENT.  This
doesn't break any known use case, but was noticed while developing a
test suite for these functions and is fixed here for completeness.

Also add translation ERROR_CANT_RESOLVE_FILENAME -> ENOENT, as that is
one of the errors Windows can report for some kinds of broken paths.

Discussion: https://postgr.es/m/CA%2BhUKG%2BajSQ_8eu2AogTncOnZ5me2D-Cn66iN_-wZnRjLN%2Bicg%40mail.gmail.com
src/port/win32error.c
src/port/win32stat.c