From 23c5ebeb95cb942df307946e3ced230a7c8312eb Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Tue, 18 Jun 2024 20:43:51 +0200 Subject: patch 9.1.0499: MS-Windows: doesn't handle symlinks properly Problem: MS-Windows: doesn't handle symlinks properly (Timothy Madden) Solution: Implement lstat() on MS-Windows (author) lstat() differs from stat() in how it handles symbolic links, the former doesn't resolve the symlink while the latter does so. Implement a simple yet effective fallback using Win32 APIs. fixes #14933 closes: #15014 Co-authored-by: K.Takata Signed-off-by: LemonBoy Signed-off-by: K.Takata Signed-off-by: Christian Brabandt --- src/filepath.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/filepath.c') diff --git a/src/filepath.c b/src/filepath.c index 9f68d7c688..788d3bbe5b 100644 --- a/src/filepath.c +++ b/src/filepath.c @@ -3645,11 +3645,15 @@ dos_expandpath( } else { + stat_T sb; + // no more wildcards, check if there is a match // remove backslashes for the remaining components only if (*path_end != 0) backslash_halve(buf + len + 1); - if (mch_getperm(buf) >= 0) // add existing file + // add existing file + if ((flags & EW_ALLLINKS) ? mch_lstat((char *)buf, &sb) >= 0 + : mch_getperm(buf) >= 0) addfile(gap, buf, flags); } } -- cgit v1.2.3