lib/fs: Try EvalSymlinks without '\\?\' prefix on failure (fixes #5226) (#5227)

This commit is contained in:
Simon Frei
2018-09-26 20:28:20 +02:00
committed by Audrius Butkevicius
parent 91c3218a0c
commit 03d0f0dc34
4 changed files with 17 additions and 6 deletions

View File

@@ -210,3 +210,15 @@ func isMaybeWin83(absPath string) bool {
}
return strings.Contains(strings.TrimPrefix(filepath.Base(absPath), WindowsTempPrefix), "~")
}
func evalSymlinks(in string) (string, error) {
out, err := filepath.EvalSymlinks(in)
if err != nil && strings.HasPrefix(in, `\\?\`) {
// Try again without the `\\?\` prefix
out, err = filepath.EvalSymlinks(in[4:])
}
if err != nil {
return "", err
}
return longFilenameSupport(out), nil
}