Files
wazero/internal/platform/unlink_windows.go
Crypt Keeper 6dd0cef551 Splits EACCES from EPERM on Windows (#1430)
Signed-off-by: Adrian Cole <adrian@tetrate.io>
2023-05-04 14:50:35 +08:00

26 lines
424 B
Go

//go:build windows
package platform
import (
"os"
"syscall"
)
func Unlink(name string) syscall.Errno {
err := syscall.Unlink(name)
if err == nil {
return 0
}
errno := UnwrapOSError(err)
if errno == syscall.EACCES {
lstat, errLstat := os.Lstat(name)
if errLstat == nil && lstat.Mode()&os.ModeSymlink != 0 {
errno = UnwrapOSError(os.Remove(name))
} else {
errno = syscall.EISDIR
}
}
return errno
}