mirror of
https://github.com/golang/go
synced 2024-11-17 12:24:51 -07:00
1c95d9728a
SameFile opens file to discover identifier and volume serial number that uniquely identify the file. SameFile uses Windows CreateFile API to open the file, and that works well for files and directories. But CreateFile always follows symlinks, so SameFile always opens symlink target instead of symlink itself. This CL uses FILE_FLAG_OPEN_REPARSE_POINT flag to adjust CreateFile behavior when handling symlinks. As per https://docs.microsoft.com/en-us/windows/desktop/FileIO/symbolic-link-effects-on-file-systems-functions#createfile-and-createfiletransacted "... If FILE_FLAG_OPEN_REPARSE_POINT is specified and: If an existing file is opened and it is a symbolic link, the handle returned is a handle to the symbolic link. ...". I also added new tests for both issue #21854 and #27225. Issue #27225 is still to be fixed, so skipping the test on windows for the moment. Fixes #21854 Updates #27225 Change-Id: I8aaa13ad66ce3b4074991bb50994d2aeeeaa7c95 Reviewed-on: https://go-review.googlesource.com/134195 Run-TryBot: Alex Brainman <alex.brainman@gmail.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@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 | ||
fifo_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_nacljs.go | ||
stat_netbsd.go | ||
stat_openbsd.go | ||
stat_plan9.go | ||
stat_solaris.go | ||
stat_test.go | ||
stat_unix.go | ||
stat_windows.go | ||
stat.go | ||
sticky_bsd.go | ||
sticky_notbsd.go | ||
str.go | ||
sys_bsd.go | ||
sys_js.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 |