authorgravatar for carmen@dotcarmen.devCarmen <carmen@dotcarmen.dev> 2025-03-09 00:08:36+07:00
committergravatar for mail@linusgroh.deLinus Groh <mail@linusgroh.de> 2025-03-09 10:54:21+00:00
log17b40b1d6843b4038c7e187ba95184971b2a5456
treeb30a6a72d2454f6103b5a09e90eac627c4138a77
parent0f6056903b4d7a50fbc5124af5c07a7d8fd13e8d

lib/std/os/uefi/status.zig: add error to enum conversion fn


1 files changed, 46 insertions(+), 0 deletions(-)

lib/std/os/uefi/status.zig+46
...@@ -231,11 +231,57 @@ pub const Status = enum(usize) {...@@ -231,11 +231,57 @@ pub const Status = enum(usize) {
231 else => {},231 else => {},
232 }232 }
233 }233 }
234
235 pub fn fromError(e: Error) Status {
236 return switch (e) {
237 Error.Aborted => .aborted,
238 Error.AccessDenied => .access_denied,
239 Error.AlreadyStarted => .already_started,
240 Error.BadBufferSize => .bad_buffer_size,
241 Error.BufferTooSmall => .buffer_too_small,
242 Error.CompromisedData => .compromised_data,
243 Error.ConnectionFin => .connection_fin,
244 Error.ConnectionRefused => .connection_refused,
245 Error.ConnectionReset => .connection_reset,
246 Error.CrcError => .crc_error,
247 Error.DeviceError => .device_error,
248 Error.EndOfFile => .end_of_file,
249 Error.EndOfMedia => .end_of_media,
250 Error.HostUnreachable => .host_unreachable,
251 Error.HttpError => .http_error,
252 Error.IcmpError => .icmp_error,
253 Error.IncompatibleVersion => .incompatible_version,
254 Error.InvalidLanguage => .invalid_language,
255 Error.InvalidParameter => .invalid_parameter,
256 Error.IpAddressConflict => .ip_address_conflict,
257 Error.LoadError => .load_error,
258 Error.MediaChanged => .media_changed,
259 Error.NetworkUnreachable => .network_unreachable,
260 Error.NoMapping => .no_mapping,
261 Error.NoMedia => .no_media,
262 Error.NoResponse => .no_response,
263 Error.NotFound => .not_found,
264 Error.NotReady => .not_ready,
265 Error.NotStarted => .not_started,
266 Error.OutOfResources => .out_of_resources,
267 Error.PortUnreachable => .port_unreachable,
268 Error.ProtocolError => .protocol_error,
269 Error.ProtocolUnreachable => .protocol_unreachable,
270 Error.SecurityViolation => .security_violation,
271 Error.TftpError => .tftp_error,
272 Error.Timeout => .timeout,
273 Error.Unsupported => .unsupported,
274 Error.VolumeCorrupted => .volume_corrupted,
275 Error.VolumeFull => .volume_full,
276 Error.WriteProtected => .write_protected,
277 };
278 }
234};279};
235280
236test "status" {281test "status" {
237 var st: Status = .device_error;282 var st: Status = .device_error;
238 try testing.expectError(error.DeviceError, st.err());283 try testing.expectError(error.DeviceError, st.err());
284 try testing.expectEqual(st, Status.fromError(st.err()));
239285
240 st = .success;286 st = .success;
241 try st.err();287 try st.err();