From 4d5939c513fcabdc0634592640d0b4aaa0905d6e Mon Sep 17 00:00:00 2001 From: mutouyun Date: Sat, 19 Nov 2022 17:13:52 +0800 Subject: [PATCH] upd: adjusting error output --- include/libimp/detect_plat.h | 12 ++++++------ src/libimp/codecvt.cpp | 2 +- src/libimp/platform/posix/system.h | 3 ++- src/libimp/platform/win/codecvt.h | 8 ++++---- src/libimp/platform/win/system.h | 2 +- src/libipc/platform/posix/shm_impl.h | 11 ++++++----- src/libipc/platform/win/get_sa.h | 4 ++-- src/libipc/platform/win/mmap_impl.h | 12 ++++++------ src/libipc/platform/win/shm_impl.h | 6 +++--- src/libpmr/memory_resource.cpp | 2 +- 10 files changed, 32 insertions(+), 30 deletions(-) diff --git a/include/libimp/detect_plat.h b/include/libimp/detect_plat.h index 2e82655..c34f601 100644 --- a/include/libimp/detect_plat.h +++ b/include/libimp/detect_plat.h @@ -180,11 +180,11 @@ /// https://stackoverflow.com/questions/6487013/programmatically-determine-whether-exceptions-are-enabled #if defined(__cpp_exceptions) && __cpp_exceptions || \ defined(__EXCEPTIONS) || defined(_CPPUNWIND) -# define LIBIMP_TRY try -# define LIBIMP_CATCH(...) catch(__VA_ARGS__) -# define LIBIMP_THROW(...) throw __VA_ARGS__ +# define LIBIMP_TRY try +# define LIBIMP_CATCH(...) catch (__VA_ARGS__) +# define LIBIMP_THROW($exception, $ret) throw $exception #else -# define LIBIMP_TRY if (true) -# define LIBIMP_CATCH(...) else if (false) -# define LIBIMP_THROW(...) +# define LIBIMP_TRY if (true) +# define LIBIMP_CATCH(...) else if (false) +# define LIBIMP_THROW($exception, $ret) return $ret #endif \ No newline at end of file diff --git a/src/libimp/codecvt.cpp b/src/libimp/codecvt.cpp index 417b704..96ee8ca 100644 --- a/src/libimp/codecvt.cpp +++ b/src/libimp/codecvt.cpp @@ -24,7 +24,7 @@ LIBIMP_NAMESPACE_BEG_ * @see https://codingtidbit.com/2020/02/09/c17-codecvt_utf8-is-deprecated/ * https://stackoverflow.com/questions/42946335/deprecated-header-codecvt-replacement * https://en.cppreference.com/w/cpp/locale/codecvt/in - */ +*/ namespace { /// @brief X-bit unicode transformation format diff --git a/src/libimp/platform/posix/system.h b/src/libimp/platform/posix/system.h index f0e285b..b9ccd39 100644 --- a/src/libimp/platform/posix/system.h +++ b/src/libimp/platform/posix/system.h @@ -46,7 +46,8 @@ std::string error_str(result_code code) noexcept { #if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE) LIBIMP_LOG_(); if (::strerror_r((int)code.value(), msg_buf, sizeof(msg_buf)) != 0) { - log.error("strerror_r fails. error = {}", error_code()); + log.error("failed: strerror_r(code = {}, buf, buf-size = {}). error = {}", + (int)code.value(), sizeof(msg_buf), error_code()); return {}; } return msg_buf; diff --git a/src/libimp/platform/win/codecvt.h b/src/libimp/platform/win/codecvt.h index 8d865a7..abca909 100644 --- a/src/libimp/platform/win/codecvt.h +++ b/src/libimp/platform/win/codecvt.h @@ -36,7 +36,7 @@ std::size_t cvt_cstr(char const *src, std::size_t slen, wchar_t *des, std::size_ int cch_wc = (des == nullptr) ? 0 : (int)dlen; int size_needed = ::MultiByteToWideChar(CP_ACP, 0, src, (int)slen, des, cch_wc); if (size_needed <= 0) { - log.error("MultiByteToWideChar fails. error = {}", sys::error_code()); + log.error("failed: MultiByteToWideChar(CP_ACP). error = {}", sys::error_code()); } return size_needed; } @@ -51,7 +51,7 @@ std::size_t cvt_cstr(wchar_t const *src, std::size_t slen, char *des, std::size_ int cb_mb = (des == nullptr) ? 0 : (int)dlen; int size_needed = ::WideCharToMultiByte(CP_ACP, 0, src, (int)slen, des, cb_mb, NULL, NULL); if (size_needed <= 0) { - log.error("WideCharToMultiByte fails. error = {}", sys::error_code()); + log.error("failed: WideCharToMultiByte(CP_ACP). error = {}", sys::error_code()); } return size_needed; } @@ -73,7 +73,7 @@ std::size_t cvt_cstr(char8_t const *src, std::size_t slen, wchar_t *des, std::si int cch_wc = (des == nullptr) ? 0 : (int)dlen; int size_needed = ::MultiByteToWideChar(CP_UTF8, 0, (char *)src, (int)slen, des, cch_wc); if (size_needed <= 0) { - log.error("MultiByteToWideChar fails. error = {}", sys::error_code()); + log.error("failed: MultiByteToWideChar(CP_UTF8). error = {}", sys::error_code()); } return size_needed; } @@ -88,7 +88,7 @@ std::size_t cvt_cstr(wchar_t const *src, std::size_t slen, char8_t *des, std::si int cb_mb = (des == nullptr) ? 0 : (int)dlen; int size_needed = ::WideCharToMultiByte(CP_UTF8, 0, src, (int)slen, (char *)des, cb_mb, NULL, NULL); if (size_needed <= 0) { - log.error("WideCharToMultiByte fails. error = {}", sys::error_code()); + log.error("failed: WideCharToMultiByte(CP_UTF8). error = {}", sys::error_code()); } return size_needed; } diff --git a/src/libimp/platform/win/system.h b/src/libimp/platform/win/system.h index 6ad86a6..58dbda8 100644 --- a/src/libimp/platform/win/system.h +++ b/src/libimp/platform/win/system.h @@ -58,7 +58,7 @@ std::string error_str(result_code code) noexcept { MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpErrText, 0, NULL) == 0) { - log.error("FormatMessage fails. error = {}", error_code()); + log.error("failed: FormatMessage(dwMessageId = {}). error = {}", err, error_code()); return {}; } LIBIMP_UNUSED auto buf_guard = std::unique_ptr, diff --git a/src/libipc/platform/posix/shm_impl.h b/src/libipc/platform/posix/shm_impl.h index f5e23e6..7673200 100644 --- a/src/libipc/platform/posix/shm_impl.h +++ b/src/libipc/platform/posix/shm_impl.h @@ -84,7 +84,7 @@ result_code ftruncate_fd(int fd, std::size_t size) noexcept { /// @see https://man7.org/linux/man-pages/man3/ftruncate.3p.html if (::ftruncate(fd, size) != posix::succ) { auto err = sys::error(); - log.error("ftruncate({}, {}) fails. error = {}", fd, size, err); + log.error("failed: ftruncate({}, {}). error = {}", fd, size, err); return err.code(); } return {posix::succ}; @@ -102,7 +102,8 @@ result shm_open(std::string name, std::size_t size, mode::type type) noex auto fd = shm_open_fd(name, type); if (!fd) return {}; if (*fd == posix::failed) { - log.error("shm_open fails. error = {}", sys::error()); + log.error("failed: shm_open(name = {}, type = {}). error = {}", + name, type, sys::error()); return {}; } LIBIMP_UNUSED auto guard = std::unique_ptr { @@ -113,7 +114,7 @@ result shm_open(std::string name, std::size_t size, mode::type type) noex /// @brief Try to get the size of this fd struct stat st; if (::fstat(*fd, &st) == posix::failed) { - log.error("fstat fails. error = {}", sys::error()); + log.error("failed: fstat(fd = {}). error = {}", *fd, sys::error()); return {}; } @@ -131,7 +132,7 @@ result shm_open(std::string name, std::size_t size, mode::type type) noex /// @brief Creates a new mapping in the virtual address space of the calling process. void *mem = ::mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, *fd, 0); if (mem == MAP_FAILED) { - log.error("mmap fails. error = {}", sys::error()); + log.error("failed: mmap(size = {}, fd = {}). error = {}", size, *fd, sys::error()); return {}; } return new shm_handle{std::move(name), size, mem}; @@ -146,7 +147,7 @@ result_code shm_close(shm_t h) noexcept { if (shm == nullptr) return {}; if (::munmap(shm->memp, shm->f_sz) == posix::failed) { auto err = sys::error(); - log.error("munmap({}, {}) fails. error = {}", shm->memp, shm->f_sz, err); + log.error("failed: munmap({}, {}). error = {}", shm->memp, shm->f_sz, err); return err.code(); } /// @brief no unlink the file. diff --git a/src/libipc/platform/win/get_sa.h b/src/libipc/platform/win/get_sa.h index 78bae67..c605c2c 100644 --- a/src/libipc/platform/win/get_sa.h +++ b/src/libipc/platform/win/get_sa.h @@ -30,11 +30,11 @@ inline LPSECURITY_ATTRIBUTES get_sa() { using namespace ::LIBIMP_; log::gripper log {"get_sa"}; if (!::InitializeSecurityDescriptor(&sd_, SECURITY_DESCRIPTOR_REVISION)) { - log.error("InitializeSecurityDescriptor fails. error = {}", sys::error()); + log.error("failed: InitializeSecurityDescriptor(SECURITY_DESCRIPTOR_REVISION). error = {}", sys::error()); return; } if (!::SetSecurityDescriptorDacl(&sd_, TRUE, NULL, FALSE)) { - log.error("SetSecurityDescriptorDacl fails. error = {}", sys::error()); + log.error("failed: SetSecurityDescriptorDacl. error = {}", sys::error()); return; } sa_.nLength = sizeof(SECURITY_ATTRIBUTES); diff --git a/src/libipc/platform/win/mmap_impl.h b/src/libipc/platform/win/mmap_impl.h index 8d0d4ba..f2cf929 100644 --- a/src/libipc/platform/win/mmap_impl.h +++ b/src/libipc/platform/win/mmap_impl.h @@ -41,7 +41,7 @@ result_code mmap_close(HANDLE h) { } if (!::CloseHandle(h)) { auto err = sys::error(); - log.error("CloseHandle({}) fails. error = {}", h, err); + log.error("failed: CloseHandle({}). error = {}", h, err); return err.code(); } return {ERROR_SUCCESS}; @@ -77,7 +77,7 @@ result mmap_open(std::string const &file, std::size_t size, mode::type t HANDLE h = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, t_name.c_str()); if (h == NULL) { auto err = sys::error(); - log.error("OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, {}) fails. error = {}", file, err); + log.error("failed: OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, {}). error = {}", file, err); return {nullptr, err.value()}; } return h; @@ -90,7 +90,7 @@ result mmap_open(std::string const &file, std::size_t size, mode::type t 0, static_cast(size), t_name.c_str()); if (h == NULL) { auto err = sys::error(); - log.error("CreateFileMapping(PAGE_READWRITE | SEC_COMMIT, {}, {}) fails. error = {}", size, file, err); + log.error("failed: CreateFileMapping(PAGE_READWRITE | SEC_COMMIT, {}, {}). error = {}", size, file, err); return {nullptr, err.value()}; } return h; @@ -132,7 +132,7 @@ result mmap_memof(HANDLE h) { LPVOID mem = ::MapViewOfFile(h, FILE_MAP_ALL_ACCESS, 0, 0, 0); if (mem == NULL) { auto err = sys::error(); - log.error("MapViewOfFile({}, FILE_MAP_ALL_ACCESS) fails. error = {}", h, err); + log.error("failed: MapViewOfFile({}, FILE_MAP_ALL_ACCESS). error = {}", h, err); return {nullptr, err.value()}; } return mem; @@ -151,7 +151,7 @@ result mmap_sizeof(LPCVOID mem) { MEMORY_BASIC_INFORMATION mem_info {}; if (::VirtualQuery(mem, &mem_info, sizeof(mem_info)) == 0) { auto err = sys::error(); - log.error("VirtualQuery({}) fails. error = {}", mem, err); + log.error("failed: VirtualQuery({}). error = {}", mem, err); return {false, (SIZE_T)err.value()}; } return mem_info.RegionSize; @@ -172,7 +172,7 @@ result_code mmap_release(HANDLE h, LPCVOID mem) { return {}; } if (!::UnmapViewOfFile(mem)) { - log.warning("UnmapViewOfFile fails. error = {}", sys::error()); + log.warning("failed: UnmapViewOfFile. error = {}", sys::error()); } return mmap_close(h); } diff --git a/src/libipc/platform/win/shm_impl.h b/src/libipc/platform/win/shm_impl.h index fa23f46..56059f5 100644 --- a/src/libipc/platform/win/shm_impl.h +++ b/src/libipc/platform/win/shm_impl.h @@ -21,18 +21,18 @@ result shm_open(std::string name, std::size_t size, mode::type type) noex LIBIMP_LOG_(); auto h = mmap_open(name, size, type); if (h == NULL) { - log.error("mmap_open failed."); + log.error("failed: mmap_open(name = {}, size = {}, type = {}).", name, size, type); return {nullptr, h.code_value()}; } auto mem = mmap_memof(*h); if (*mem == NULL) { - log.error("mmap_memof failed."); + log.error("failed: mmap_memof({}).", *h); mmap_close(*h); return {nullptr, mem.code_value()}; } auto sz = mmap_sizeof(*mem); if (!sz) { - log.error("mmap_sizeof failed."); + log.error("failed: mmap_sizeof({}).", *mem); mmap_close(*h); return {nullptr, static_cast(sz.value())}; } diff --git a/src/libpmr/memory_resource.cpp b/src/libpmr/memory_resource.cpp index 6f7c52d..a74dd35 100644 --- a/src/libpmr/memory_resource.cpp +++ b/src/libpmr/memory_resource.cpp @@ -66,7 +66,7 @@ void *new_delete_resource::allocate(std::size_t bytes, std::size_t alignment) no void *p = nullptr; int ret = ::posix_memalign(&p, alignment, bytes); if (ret != 0) { - log.error("posix_memalign(alignment = {}, bytes = {}) fails. error = {}", + log.error("failed: posix_memalign(alignment = {}, bytes = {}). error = {}", alignment, bytes, sys::error(ret)); return nullptr; }