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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
pub const CError = error {
OperationNotPermitted,
NoSuchFileOrDirectory,
NoSuchProcess,
InterruptedSystemCall,
InputOutputError,
NoSuchDeviceOrAddress,
ArgumentListTooLong,
ExecFormatError,
BadFileDescriptor,
NoChildProcesses,
ResourceTemporarilyUnavailable,
CannotAllocateMemory,
PermissionDenied,
BadAddress,
BlockDeviceRequired,
DeviceOrResourceBusy,
FileExists,
InvalidCrossDeviceLink,
NoSuchDevice,
NotADirectory,
IsADirectory,
InvalidArgument,
TooManyOpenFilesInSystem,
TooManyOpenFiles,
InappropriateIoctlForDevice,
TextFileBusy,
FileTooLarge,
NoSpaceLeftOnDevice,
IllegalSeek,
ReadOnlyFileSystem,
TooManyLinks,
BrokenPipe,
NumericalArgumentOutOfDomain,
NumericalResultOutOfRange,
ResourceDeadlockAvoided,
FileNameTooLong,
NoLocksAvailable,
FunctionNotImplemented,
DirectoryNotEmpty,
TooManyLevelsOfSymbolicLinks,
NoMessageOfDesiredType,
IdentifierRemoved,
ChannelNumberOutOfRange,
Level2NotSynchronized,
Level3Halted,
Level3Reset,
LinkNumberOutOfRange,
ProtocolDriverNotAttached,
NoCSIStructureAvailable,
Level2Halted,
InvalidExchange,
InvalidRequestDescriptor,
ExchangeFull,
NoAnode,
InvalidRequestCode,
InvalidSlot,
BadFontFileFormat,
DeviceNotAStream,
NoDataAvailable,
TimerExpired,
OutOfStreamsResources,
MachineIsNotOnTheNetwork,
PackageNotInstalled,
ObjectIsRemote,
LinkHasBeenSevered,
AdvertiseError,
SrmountError,
CommunicationErrorOnSend,
ProtocolError,
MultihopAttempted,
RFSSpecificError,
BadMessage,
ValueTooLargeForDefinedDataType,
NameNotUniqueOnNetwork,
FileDescriptorInBadState,
RemoteAddressChanged,
CanNotAccessANeededSharedLibrary,
AccessingACorruptedSharedLibrary,
LibSectionInAOutCorrupted,
AttemptingToLinkInTooManySharedLibraries,
CannotExecASharedLibraryDirectly,
InvalidOrIncompleteMultibyteOrWideCharacter,
InterruptedSystemCallShouldBeRestarted,
StreamsPipeError,
TooManyUsers,
SocketOperationOnNonSocket,
DestinationAddressRequired,
MessageTooLong,
ProtocolWrongTypeForSocket,
ProtocolNotAvailable,
ProtocolNotSupported,
SocketTypeNotSupported,
OperationNotSupported,
ProtocolFamilyNotSupported,
AddressFamilyNotSupportedByProtocol,
AddressAlreadyInUse,
CannotAssignRequestedAddress,
NetworkIsDown,
NetworkIsUnreachable,
NetworkDroppedConnectionOnReset,
SoftwareCausedConnectionAbort,
ConnectionResetByPeer,
NoBufferSpaceAvailable,
TransportEndpointIsAlreadyConnected,
TransportEndpointIsNotConnected,
CannotSendAfterTransportEndpointShutdown,
TooManyReferences,
ConnectionTimedOut,
ConnectionRefused,
HostIsDown,
NoRouteToHost,
OperationAlreadyInProgress,
OperationNowInProgress,
StaleFileHandle,
StructureNeedsCleaning,
NotAXENIXNamedTypeFile,
NoXENIXSemaphoresAvailable,
IsANamedTypeFile,
RemoteIOError,
DiskQuotaExceeded,
NoMediumFound,
WrongMediumType,
OperationCanceled,
RequiredKeyNotAvailable,
KeyHasExpired,
KeyHasBeenRevoked,
KeyWasRejectedByService,
OwnerDied,
StateNotRecoverable,
OperationNotPossibleDueToRFKill,
MemoryPageHasHardwareError,
};
pub fn from_usize(errno: usize) CError!void {
const n = -@as(isize, @bitCast(errno));
return switch (n) {
1 => CError.OperationNotPermitted,
2 => CError.NoSuchFileOrDirectory,
3 => CError.NoSuchProcess,
4 => CError.InterruptedSystemCall,
5 => CError.InputOutputError,
6 => CError.NoSuchDeviceOrAddress,
7 => CError.ArgumentListTooLong,
8 => CError.ExecFormatError,
9 => CError.BadFileDescriptor,
10 => CError.NoChildProcesses,
11 => CError.ResourceTemporarilyUnavailable,
12 => CError.CannotAllocateMemory,
13 => CError.PermissionDenied,
14 => CError.BadAddress,
15 => CError.BlockDeviceRequired,
16 => CError.DeviceOrResourceBusy,
17 => CError.FileExists,
18 => CError.InvalidCrossDeviceLink,
19 => CError.NoSuchDevice,
20 => CError.NotADirectory,
21 => CError.IsADirectory,
22 => CError.InvalidArgument,
23 => CError.TooManyOpenFilesInSystem,
24 => CError.TooManyOpenFiles,
25 => CError.InappropriateIoctlForDevice,
26 => CError.TextFileBusy,
27 => CError.FileTooLarge,
28 => CError.NoSpaceLeftOnDevice,
29 => CError.IllegalSeek,
30 => CError.ReadOnlyFileSystem,
31 => CError.TooManyLinks,
32 => CError.BrokenPipe,
33 => CError.NumericalArgumentOutOfDomain,
34 => CError.NumericalResultOutOfRange,
35 => CError.ResourceDeadlockAvoided,
36 => CError.FileNameTooLong,
37 => CError.NoLocksAvailable,
38 => CError.FunctionNotImplemented,
39 => CError.DirectoryNotEmpty,
40 => CError.TooManyLevelsOfSymbolicLinks,
42 => CError.NoMessageOfDesiredType,
43 => CError.IdentifierRemoved,
44 => CError.ChannelNumberOutOfRange,
45 => CError.Level2NotSynchronized,
46 => CError.Level3Halted,
47 => CError.Level3Reset,
48 => CError.LinkNumberOutOfRange,
49 => CError.ProtocolDriverNotAttached,
50 => CError.NoCSIStructureAvailable,
51 => CError.Level2Halted,
52 => CError.InvalidExchange,
53 => CError.InvalidRequestDescriptor,
54 => CError.ExchangeFull,
55 => CError.NoAnode,
56 => CError.InvalidRequestCode,
57 => CError.InvalidSlot,
59 => CError.BadFontFileFormat,
60 => CError.DeviceNotAStream,
61 => CError.NoDataAvailable,
62 => CError.TimerExpired,
63 => CError.OutOfStreamsResources,
64 => CError.MachineIsNotOnTheNetwork,
65 => CError.PackageNotInstalled,
66 => CError.ObjectIsRemote,
67 => CError.LinkHasBeenSevered,
68 => CError.AdvertiseError,
69 => CError.SrmountError,
70 => CError.CommunicationErrorOnSend,
71 => CError.ProtocolError,
72 => CError.MultihopAttempted,
73 => CError.RFSSpecificError,
74 => CError.BadMessage,
75 => CError.ValueTooLargeForDefinedDataType,
76 => CError.NameNotUniqueOnNetwork,
77 => CError.FileDescriptorInBadState,
78 => CError.RemoteAddressChanged,
79 => CError.CanNotAccessANeededSharedLibrary,
80 => CError.AccessingACorruptedSharedLibrary,
81 => CError.LibSectionInAOutCorrupted,
82 => CError.AttemptingToLinkInTooManySharedLibraries,
83 => CError.CannotExecASharedLibraryDirectly,
84 => CError.InvalidOrIncompleteMultibyteOrWideCharacter,
85 => CError.InterruptedSystemCallShouldBeRestarted,
86 => CError.StreamsPipeError,
87 => CError.TooManyUsers,
88 => CError.SocketOperationOnNonSocket,
89 => CError.DestinationAddressRequired,
90 => CError.MessageTooLong,
91 => CError.ProtocolWrongTypeForSocket,
92 => CError.ProtocolNotAvailable,
93 => CError.ProtocolNotSupported,
94 => CError.SocketTypeNotSupported,
95 => CError.OperationNotSupported,
96 => CError.ProtocolFamilyNotSupported,
97 => CError.AddressFamilyNotSupportedByProtocol,
98 => CError.AddressAlreadyInUse,
99 => CError.CannotAssignRequestedAddress,
100 => CError.NetworkIsDown,
101 => CError.NetworkIsUnreachable,
102 => CError.NetworkDroppedConnectionOnReset,
103 => CError.SoftwareCausedConnectionAbort,
104 => CError.ConnectionResetByPeer,
105 => CError.NoBufferSpaceAvailable,
106 => CError.TransportEndpointIsAlreadyConnected,
107 => CError.TransportEndpointIsNotConnected,
108 => CError.CannotSendAfterTransportEndpointShutdown,
109 => CError.TooManyReferences,
110 => CError.ConnectionTimedOut,
111 => CError.ConnectionRefused,
112 => CError.HostIsDown,
113 => CError.NoRouteToHost,
114 => CError.OperationAlreadyInProgress,
115 => CError.OperationNowInProgress,
116 => CError.StaleFileHandle,
117 => CError.StructureNeedsCleaning,
118 => CError.NotAXENIXNamedTypeFile,
119 => CError.NoXENIXSemaphoresAvailable,
120 => CError.IsANamedTypeFile,
121 => CError.RemoteIOError,
122 => CError.DiskQuotaExceeded,
123 => CError.NoMediumFound,
124 => CError.WrongMediumType,
125 => CError.OperationCanceled,
126 => CError.RequiredKeyNotAvailable,
127 => CError.KeyHasExpired,
128 => CError.KeyHasBeenRevoked,
129 => CError.KeyWasRejectedByService,
130 => CError.OwnerDied,
131 => CError.StateNotRecoverable,
132 => CError.OperationNotPossibleDueToRFKill,
133 => CError.MemoryPageHasHardwareError,
else => void{}
};
}
|