summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go
blob: be31c7b911515123ddbcb8c408959bad95044031 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package sysfs

import (
	"os"
	"syscall"

	"github.com/tetratelabs/wazero/experimental/sys"
)

func unlink(name string) sys.Errno {
	err := syscall.Unlink(name)
	if err == nil {
		return 0
	}
	errno := sys.UnwrapOSError(err)
	if errno == sys.EBADF {
		lstat, errLstat := os.Lstat(name)
		if errLstat == nil && lstat.Mode()&os.ModeSymlink != 0 {
			errno = sys.UnwrapOSError(os.Remove(name))
		} else {
			errno = sys.EISDIR
		}
	}
	return errno
}