upd: adjusting error output

This commit is contained in:
mutouyun 2022-11-19 17:13:52 +08:00
parent 890492a3b9
commit 4d5939c513
10 changed files with 32 additions and 30 deletions

View File

@ -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

View File

@ -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

View File

@ -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;

View File

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

View File

@ -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<std::remove_pointer_t<LPVOID>,

View File

@ -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_t> 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<decltype(fd), void (*)(decltype(fd) *)> {
@ -113,7 +114,7 @@ result<shm_t> 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_t> 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.

View File

@ -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);

View File

@ -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<HANDLE> 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<HANDLE> mmap_open(std::string const &file, std::size_t size, mode::type t
0, static_cast<DWORD>(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<LPVOID> 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<SIZE_T> 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);
}

View File

@ -21,18 +21,18 @@ result<shm_t> 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<result_type>(sz.value())};
}

View File

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