Files
kjol/tools/tsgo/internal/nativepath/symlink_windows.go
2026-07-09 16:50:43 -04:00

30 lines
508 B
Go

package nativepath
import (
"syscall"
"unsafe"
)
func IsSymlinkOrReparsePoint(path string) bool {
if len(path) >= 248 {
path = `\\?\` + path
}
pathUTF16, err := syscall.UTF16PtrFromString(path)
if err != nil {
return false
}
var data syscall.Win32FileAttributeData
err = syscall.GetFileAttributesEx(
pathUTF16,
syscall.GetFileExInfoStandard,
(*byte)(unsafe.Pointer(&data)),
)
if err != nil {
return false
}
return data.FileAttributes&syscall.FILE_ATTRIBUTE_REPARSE_POINT != 0
}