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{} }; }