mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-07-27 11:06:31 +00:00
186 lines
4.9 KiB
Zig
186 lines
4.9 KiB
Zig
const std = @import("std");
|
|
const testing = std.testing;
|
|
const c = @import("c.zig");
|
|
|
|
/// Errors that libuv can produce
|
|
///
|
|
/// http://docs.libuv.org/en/v1.x/errors.html
|
|
pub const Error = error{
|
|
E2BIG,
|
|
EACCES,
|
|
EADDRINUSE,
|
|
EADDRNOTAVAIL,
|
|
EAFNOSUPPORT,
|
|
EAGAIN,
|
|
EAI_ADDRFAMILY,
|
|
EAI_AGAIN,
|
|
EAI_BADFLAGS,
|
|
EAI_BADHINTS,
|
|
EAI_CANCELED,
|
|
EAI_FAIL,
|
|
EAI_FAMILY,
|
|
EAI_MEMORY,
|
|
EAI_NODATA,
|
|
EAI_NONAME,
|
|
EAI_OVERFLOW,
|
|
EAI_PROTOCOL,
|
|
EAI_SERVICE,
|
|
EAI_SOCKTYPE,
|
|
EALREADY,
|
|
EBADF,
|
|
EBUSY,
|
|
ECANCELED,
|
|
ECHARSET,
|
|
ECONNABORTED,
|
|
ECONNREFUSED,
|
|
ECONNRESET,
|
|
EDESTADDRREQ,
|
|
EEXIST,
|
|
EFAULT,
|
|
EFBIG,
|
|
EHOSTUNREACH,
|
|
EINTR,
|
|
EINVAL,
|
|
EIO,
|
|
EISCONN,
|
|
EISDIR,
|
|
ELOOP,
|
|
EMFILE,
|
|
EMSGSIZE,
|
|
ENAMETOOLONG,
|
|
ENETDOWN,
|
|
ENETUNREACH,
|
|
ENFILE,
|
|
ENOBUFS,
|
|
ENODEV,
|
|
ENOENT,
|
|
ENOMEM,
|
|
ENONET,
|
|
ENOPROTOOPT,
|
|
ENOSPC,
|
|
ENOSYS,
|
|
ENOTCONN,
|
|
ENOTDIR,
|
|
ENOTEMPTY,
|
|
ENOTSOCK,
|
|
ENOTSUP,
|
|
EPERM,
|
|
EPIPE,
|
|
EPROTO,
|
|
EPROTONOSUPPORT,
|
|
EPROTOTYPE,
|
|
ERANGE,
|
|
EROFS,
|
|
ESHUTDOWN,
|
|
ESPIPE,
|
|
ESRCH,
|
|
ETIMEDOUT,
|
|
ETXTBSY,
|
|
EXDEV,
|
|
UNKNOWN,
|
|
EOF,
|
|
ENXIO,
|
|
EMLINK,
|
|
EHOSTDOWN,
|
|
EREMOTEIO,
|
|
ENOTTY,
|
|
EFTYPE,
|
|
EILSEQ,
|
|
ESOCKTNOSUPPORT,
|
|
};
|
|
|
|
/// Convert the result of a libuv API call to an error (or no error).
|
|
pub fn convertError(r: i32) !void {
|
|
if (r >= 0) return;
|
|
|
|
return switch (r) {
|
|
c.UV_E2BIG => Error.E2BIG,
|
|
c.UV_EACCES => Error.EACCES,
|
|
c.UV_EADDRINUSE => Error.EADDRINUSE,
|
|
c.UV_EADDRNOTAVAIL => Error.EADDRNOTAVAIL,
|
|
c.UV_EAFNOSUPPORT => Error.EAFNOSUPPORT,
|
|
c.UV_EAGAIN => Error.EAGAIN,
|
|
c.UV_EAI_ADDRFAMILY => Error.EAI_ADDRFAMILY,
|
|
c.UV_EAI_AGAIN => Error.EAI_AGAIN,
|
|
c.UV_EAI_BADFLAGS => Error.EAI_BADFLAGS,
|
|
c.UV_EAI_BADHINTS => Error.EAI_BADHINTS,
|
|
c.UV_EAI_CANCELED => Error.EAI_CANCELED,
|
|
c.UV_EAI_FAIL => Error.EAI_FAIL,
|
|
c.UV_EAI_FAMILY => Error.EAI_FAMILY,
|
|
c.UV_EAI_MEMORY => Error.EAI_MEMORY,
|
|
c.UV_EAI_NODATA => Error.EAI_NODATA,
|
|
c.UV_EAI_NONAME => Error.EAI_NONAME,
|
|
c.UV_EAI_OVERFLOW => Error.EAI_OVERFLOW,
|
|
c.UV_EAI_PROTOCOL => Error.EAI_PROTOCOL,
|
|
c.UV_EAI_SERVICE => Error.EAI_SERVICE,
|
|
c.UV_EAI_SOCKTYPE => Error.EAI_SOCKTYPE,
|
|
c.UV_EALREADY => Error.EALREADY,
|
|
c.UV_EBADF => Error.EBADF,
|
|
c.UV_EBUSY => Error.EBUSY,
|
|
c.UV_ECANCELED => Error.ECANCELED,
|
|
c.UV_ECHARSET => Error.ECHARSET,
|
|
c.UV_ECONNABORTED => Error.ECONNABORTED,
|
|
c.UV_ECONNREFUSED => Error.ECONNREFUSED,
|
|
c.UV_ECONNRESET => Error.ECONNRESET,
|
|
c.UV_EDESTADDRREQ => Error.EDESTADDRREQ,
|
|
c.UV_EEXIST => Error.EEXIST,
|
|
c.UV_EFAULT => Error.EFAULT,
|
|
c.UV_EFBIG => Error.EFBIG,
|
|
c.UV_EHOSTUNREACH => Error.EHOSTUNREACH,
|
|
c.UV_EINTR => Error.EINTR,
|
|
c.UV_EINVAL => Error.EINVAL,
|
|
c.UV_EIO => Error.EIO,
|
|
c.UV_EISCONN => Error.EISCONN,
|
|
c.UV_EISDIR => Error.EISDIR,
|
|
c.UV_ELOOP => Error.ELOOP,
|
|
c.UV_EMFILE => Error.EMFILE,
|
|
c.UV_EMSGSIZE => Error.EMSGSIZE,
|
|
c.UV_ENAMETOOLONG => Error.ENAMETOOLONG,
|
|
c.UV_ENETDOWN => Error.ENETDOWN,
|
|
c.UV_ENETUNREACH => Error.ENETUNREACH,
|
|
c.UV_ENFILE => Error.ENFILE,
|
|
c.UV_ENOBUFS => Error.ENOBUFS,
|
|
c.UV_ENODEV => Error.ENODEV,
|
|
c.UV_ENOENT => Error.ENOENT,
|
|
c.UV_ENOMEM => Error.ENOMEM,
|
|
c.UV_ENONET => Error.ENONET,
|
|
c.UV_ENOPROTOOPT => Error.ENOPROTOOPT,
|
|
c.UV_ENOSPC => Error.ENOSPC,
|
|
c.UV_ENOSYS => Error.ENOSYS,
|
|
c.UV_ENOTCONN => Error.ENOTCONN,
|
|
c.UV_ENOTDIR => Error.ENOTDIR,
|
|
c.UV_ENOTEMPTY => Error.ENOTEMPTY,
|
|
c.UV_ENOTSOCK => Error.ENOTSOCK,
|
|
c.UV_ENOTSUP => Error.ENOTSUP,
|
|
c.UV_EPERM => Error.EPERM,
|
|
c.UV_EPIPE => Error.EPIPE,
|
|
c.UV_EPROTO => Error.EPROTO,
|
|
c.UV_EPROTONOSUPPORT => Error.EPROTONOSUPPORT,
|
|
c.UV_EPROTOTYPE => Error.EPROTOTYPE,
|
|
c.UV_ERANGE => Error.ERANGE,
|
|
c.UV_EROFS => Error.EROFS,
|
|
c.UV_ESHUTDOWN => Error.ESHUTDOWN,
|
|
c.UV_ESPIPE => Error.ESPIPE,
|
|
c.UV_ESRCH => Error.ESRCH,
|
|
c.UV_ETIMEDOUT => Error.ETIMEDOUT,
|
|
c.UV_ETXTBSY => Error.ETXTBSY,
|
|
c.UV_EXDEV => Error.EXDEV,
|
|
c.UV_UNKNOWN => Error.UNKNOWN,
|
|
c.UV_EOF => Error.EOF,
|
|
c.UV_ENXIO => Error.ENXIO,
|
|
c.UV_EHOSTDOWN => Error.EHOSTDOWN,
|
|
c.UV_EREMOTEIO => Error.EREMOTEIO,
|
|
c.UV_ENOTTY => Error.ENOTTY,
|
|
c.UV_EFTYPE => Error.EFTYPE,
|
|
c.UV_EILSEQ => Error.EILSEQ,
|
|
c.UV_ESOCKTNOSUPPORT => Error.ESOCKTNOSUPPORT,
|
|
else => unreachable,
|
|
};
|
|
}
|
|
|
|
test {
|
|
// This is mostly just forcing our error type and function to be
|
|
// codegenned and run once to ensure we have all the types.
|
|
try testing.expectError(Error.EFTYPE, convertError(c.UV_EFTYPE));
|
|
}
|