mirror of
https://github.com/golang/go
synced 2024-11-18 22:55:23 -07:00
e83601b435
os.Stat implementation uses instructions described at https://blogs.msdn.microsoft.com/oldnewthing/20100212-00/?p=14963/ to distinguish symlinks. In particular, it calls GetFileAttributesEx or FindFirstFile and checks either WIN32_FILE_ATTRIBUTE_DATA.dwFileAttributes or WIN32_FIND_DATA.dwFileAttributes to see if FILE_ATTRIBUTES_REPARSE_POINT flag is set. And that seems to worked fine so far. But now we discovered that OneDrive root folder is determined as directory: c:\>dir C:\Users\Alex | grep OneDrive 30/11/2017 07:25 PM <DIR> OneDrive c:\> while Go identified it as symlink. But we did not follow Microsoft's advice to the letter - we never checked WIN32_FIND_DATA.Reserved0. And adding that extra check makes Go treat OneDrive as symlink. So use FindFirstFile and WIN32_FIND_DATA.Reserved0 to determine symlinks. Fixes #22579 Change-Id: I0cb88929eb8b47b1d24efaf1907ad5a0e20de83f Reviewed-on: https://go-review.googlesource.com/86556 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> |
||
---|---|---|
.. | ||
exec | ||
signal | ||
user | ||
dir_plan9.go | ||
dir_unix.go | ||
dir_windows.go | ||
dir.go | ||
env_test.go | ||
env_unix_test.go | ||
env.go | ||
error_plan9.go | ||
error_posix.go | ||
error_test.go | ||
error_unix_test.go | ||
error_unix.go | ||
error_windows_test.go | ||
error_windows.go | ||
error.go | ||
example_test.go | ||
exec_plan9.go | ||
exec_posix.go | ||
exec_unix.go | ||
exec_windows.go | ||
exec.go | ||
executable_darwin.go | ||
executable_freebsd.go | ||
executable_path.go | ||
executable_plan9.go | ||
executable_procfs.go | ||
executable_solaris.go | ||
executable_test.go | ||
executable_windows.go | ||
executable.go | ||
export_test.go | ||
export_windows_test.go | ||
file_plan9.go | ||
file_posix.go | ||
file_unix.go | ||
file_windows.go | ||
file.go | ||
getwd_darwin.go | ||
getwd.go | ||
os_test.go | ||
os_unix_test.go | ||
os_windows_test.go | ||
path_plan9.go | ||
path_test.go | ||
path_unix.go | ||
path_windows_test.go | ||
path_windows.go | ||
path.go | ||
pipe2_bsd.go | ||
pipe_bsd.go | ||
pipe_linux.go | ||
pipe_test.go | ||
proc.go | ||
stat_darwin.go | ||
stat_dragonfly.go | ||
stat_freebsd.go | ||
stat_linux.go | ||
stat_nacl.go | ||
stat_netbsd.go | ||
stat_openbsd.go | ||
stat_plan9.go | ||
stat_solaris.go | ||
stat_unix.go | ||
stat_windows.go | ||
stat.go | ||
sticky_bsd.go | ||
sticky_notbsd.go | ||
str.go | ||
sys_bsd.go | ||
sys_linux.go | ||
sys_nacl.go | ||
sys_plan9.go | ||
sys_solaris.go | ||
sys_unix.go | ||
sys_windows.go | ||
sys.go | ||
timeout_test.go | ||
types_plan9.go | ||
types_unix.go | ||
types_windows.go | ||
types.go | ||
wait_unimp.go | ||
wait_wait6.go | ||
wait_waitid.go |