summaryrefslogtreecommitdiff
path: root/src/screen/cerror.zig
blob: cd7f6e6125fd702e8225ebfcb9098903579d79e6 (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
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{}
    };
}