...
1 package gojs
2
3 import (
4 "io"
5
6 "github.com/tetratelabs/wazero/experimental/sys"
7 )
8
9
10
11
12 type Errno struct {
13 s string
14 }
15
16
17 func (e *Errno) Error() string {
18 return e.s
19 }
20
21
22
23 var (
24
25 ErrnoAcces = &Errno{"EACCES"}
26
27 ErrnoAgain = &Errno{"EAGAIN"}
28
29 ErrnoBadf = &Errno{"EBADF"}
30
31 ErrnoExist = &Errno{"EEXIST"}
32
33 ErrnoFault = &Errno{"EFAULT"}
34
35 ErrnoIntr = &Errno{"EINTR"}
36
37 ErrnoInval = &Errno{"EINVAL"}
38
39 ErrnoIo = &Errno{"EIO"}
40
41 ErrnoIsdir = &Errno{"EISDIR"}
42
43 ErrnoLoop = &Errno{"ELOOP"}
44
45 ErrnoNametoolong = &Errno{"ENAMETOOLONG"}
46
47 ErrnoNoent = &Errno{"ENOENT"}
48
49 ErrnoNosys = &Errno{"ENOSYS"}
50
51 ErrnoNotdir = &Errno{"ENOTDIR"}
52
53 ErrnoNotempty = &Errno{"ENOTEMPTY"}
54
55 ErrnoNotsup = &Errno{"ENOTSUP"}
56
57 ErrnoPerm = &Errno{"EPERM"}
58
59 ErrnoRofs = &Errno{"EROFS"}
60 )
61
62
63
64 func ToErrno(err error) *Errno {
65 if err == nil || err == io.EOF {
66 return nil
67 }
68 errno, ok := err.(sys.Errno)
69 if !ok {
70 return ErrnoIo
71 }
72 switch errno {
73 case sys.EACCES:
74 return ErrnoAcces
75 case sys.EAGAIN:
76 return ErrnoAgain
77 case sys.EBADF:
78 return ErrnoBadf
79 case sys.EEXIST:
80 return ErrnoExist
81 case sys.EFAULT:
82 return ErrnoFault
83 case sys.EINTR:
84 return ErrnoIntr
85 case sys.EINVAL:
86 return ErrnoInval
87 case sys.EIO:
88 return ErrnoIo
89 case sys.EISDIR:
90 return ErrnoIsdir
91 case sys.ELOOP:
92 return ErrnoLoop
93 case sys.ENAMETOOLONG:
94 return ErrnoNametoolong
95 case sys.ENOENT:
96 return ErrnoNoent
97 case sys.ENOSYS:
98 return ErrnoNosys
99 case sys.ENOTDIR:
100 return ErrnoNotdir
101 case sys.ENOTEMPTY:
102 return ErrnoNotempty
103 case sys.ENOTSUP:
104 return ErrnoNotsup
105 case sys.EPERM:
106 return ErrnoPerm
107 case sys.EROFS:
108 return ErrnoRofs
109 default:
110 return ErrnoIo
111 }
112 }
113
View as plain text