From 80492f6ad3eb28c91e197a51cf4780189cd9cb10 Mon Sep 17 00:00:00 2001 From: apio Date: Tue, 7 Mar 2023 13:14:21 +0100 Subject: [PATCH] luna: Add error_name, similar to strerrorname_np from glibc man strerrorname_np(3) --- libluna/include/luna/SystemError.h | 1 + libluna/src/SystemError.cpp | 64 ++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/libluna/include/luna/SystemError.h b/libluna/include/luna/SystemError.h index 9985897a..2a8962f4 100644 --- a/libluna/include/luna/SystemError.h +++ b/libluna/include/luna/SystemError.h @@ -60,6 +60,7 @@ #ifndef _LUNA_SOURCE const char* error_string(int error); +const char* error_name(int error); #endif #endif diff --git a/libluna/src/SystemError.cpp b/libluna/src/SystemError.cpp index 5237d5a7..5484a76f 100644 --- a/libluna/src/SystemError.cpp +++ b/libluna/src/SystemError.cpp @@ -61,3 +61,67 @@ const char* error_string(int error) default: return "Unknown error"; } } + +const char* error_name(int error) +{ +#define ERROR(name) \ + case name: return #name + + switch (error) + { + ERROR(EPERM); + ERROR(ENOENT); + ERROR(ESRCH); + ERROR(EINTR); + ERROR(EIO); + ERROR(ENXIO); + ERROR(E2BIG); + ERROR(ENOEXEC); + ERROR(EBADF); + ERROR(ECHILD); + ERROR(EAGAIN); + ERROR(ENOMEM); + ERROR(EACCES); + ERROR(EFAULT); + ERROR(ENOTBLK); + ERROR(EBUSY); + ERROR(EEXIST); + ERROR(EXDEV); + ERROR(ENODEV); + ERROR(ENOTDIR); + ERROR(EISDIR); + ERROR(EINVAL); + ERROR(ENFILE); + ERROR(EMFILE); + ERROR(ENOTTY); + ERROR(ETXTBSY); + ERROR(EFBIG); + ERROR(ENOSPC); + ERROR(ESPIPE); + ERROR(EROFS); + ERROR(EMLINK); + ERROR(EPIPE); + ERROR(EDOM); + ERROR(ERANGE); + ERROR(EDEADLK); + ERROR(ENAMETOOLONG); + ERROR(ENOLCK); + ERROR(ENOSYS); + ERROR(ENOTEMPTY); + ERROR(ELOOP); + ERROR(ENOMSG); + ERROR(EOVERFLOW); + ERROR(EILSEQ); + ERROR(ENOTSOCK); + ERROR(ENOTSUP); + ERROR(EADDRINUSE); + ERROR(ENETRESET); + ERROR(ECONNRESET); + ERROR(EISCONN); + ERROR(ETIMEDOUT); + ERROR(EALREADY); + default: return nullptr; + } + +#undef ERROR +}