summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go')
-rw-r--r--vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go106
1 files changed, 106 insertions, 0 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go
new file mode 100644
index 000000000..ea511ec25
--- /dev/null
+++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go
@@ -0,0 +1,106 @@
+//go:build !plan9 && !aix
+
+package sys
+
+import "syscall"
+
+func syscallToErrno(err error) (Errno, bool) {
+ errno, ok := err.(syscall.Errno)
+ if !ok {
+ return 0, false
+ }
+ switch errno {
+ case 0:
+ return 0, true
+ case syscall.EACCES:
+ return EACCES, true
+ case syscall.EAGAIN:
+ return EAGAIN, true
+ case syscall.EBADF:
+ return EBADF, true
+ case syscall.EEXIST:
+ return EEXIST, true
+ case syscall.EFAULT:
+ return EFAULT, true
+ case syscall.EINTR:
+ return EINTR, true
+ case syscall.EINVAL:
+ return EINVAL, true
+ case syscall.EIO:
+ return EIO, true
+ case syscall.EISDIR:
+ return EISDIR, true
+ case syscall.ELOOP:
+ return ELOOP, true
+ case syscall.ENAMETOOLONG:
+ return ENAMETOOLONG, true
+ case syscall.ENOENT:
+ return ENOENT, true
+ case syscall.ENOSYS:
+ return ENOSYS, true
+ case syscall.ENOTDIR:
+ return ENOTDIR, true
+ case syscall.ERANGE:
+ return ERANGE, true
+ case syscall.ENOTEMPTY:
+ return ENOTEMPTY, true
+ case syscall.ENOTSOCK:
+ return ENOTSOCK, true
+ case syscall.ENOTSUP:
+ return ENOTSUP, true
+ case syscall.EPERM:
+ return EPERM, true
+ case syscall.EROFS:
+ return EROFS, true
+ default:
+ return EIO, true
+ }
+}
+
+// Unwrap is a convenience for runtime.GOOS which define syscall.Errno.
+func (e Errno) Unwrap() error {
+ switch e {
+ case 0:
+ return nil
+ case EACCES:
+ return syscall.EACCES
+ case EAGAIN:
+ return syscall.EAGAIN
+ case EBADF:
+ return syscall.EBADF
+ case EEXIST:
+ return syscall.EEXIST
+ case EFAULT:
+ return syscall.EFAULT
+ case EINTR:
+ return syscall.EINTR
+ case EINVAL:
+ return syscall.EINVAL
+ case EIO:
+ return syscall.EIO
+ case EISDIR:
+ return syscall.EISDIR
+ case ELOOP:
+ return syscall.ELOOP
+ case ENAMETOOLONG:
+ return syscall.ENAMETOOLONG
+ case ENOENT:
+ return syscall.ENOENT
+ case ENOSYS:
+ return syscall.ENOSYS
+ case ENOTDIR:
+ return syscall.ENOTDIR
+ case ENOTEMPTY:
+ return syscall.ENOTEMPTY
+ case ENOTSOCK:
+ return syscall.ENOTSOCK
+ case ENOTSUP:
+ return syscall.ENOTSUP
+ case EPERM:
+ return syscall.EPERM
+ case EROFS:
+ return syscall.EROFS
+ default:
+ return syscall.EIO
+ }
+}