unlink_windows.go

 1package sysfs
 2
 3import (
 4	"os"
 5	"syscall"
 6
 7	"github.com/tetratelabs/wazero/experimental/sys"
 8)
 9
10func unlink(name string) sys.Errno {
11	err := syscall.Unlink(name)
12	if err == nil {
13		return 0
14	}
15	errno := sys.UnwrapOSError(err)
16	if errno == sys.EBADF {
17		lstat, errLstat := os.Lstat(name)
18		if errLstat == nil && lstat.Mode()&os.ModeSymlink != 0 {
19			errno = sys.UnwrapOSError(os.Remove(name))
20		} else {
21			errno = sys.EISDIR
22		}
23	}
24	return errno
25}