mirror of
https://github.com/djhackersdev/bemanitools.git
synced 2026-08-23 00:44:02 -05:00
feat: Add log-ext, handle win last errors
Helper to easily deal with GetLastError, log it and make the application fail
This commit is contained in:
@@ -8,6 +8,7 @@ src_core := \
|
||||
config-property-node.c \
|
||||
log-bt-ext.c \
|
||||
log-bt.c \
|
||||
log-ext.c \
|
||||
log-sink-async.c \
|
||||
log-sink-debug.c \
|
||||
log-sink-file.c \
|
||||
|
||||
27
src/main/core/log-ext.c
Normal file
27
src/main/core/log-ext.c
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#include "iface-core/log.h"
|
||||
|
||||
void core_log_ext_win_last_error_log(const char *module, bt_core_log_message_t log_message)
|
||||
{
|
||||
LPSTR buffer;
|
||||
DWORD last_error;
|
||||
|
||||
last_error = GetLastError();
|
||||
|
||||
FormatMessageA(
|
||||
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
|
||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL,
|
||||
last_error,
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
(LPSTR) &buffer,
|
||||
0,
|
||||
NULL);
|
||||
|
||||
log_message(module, "Last error (%08X): %s", last_error, buffer);
|
||||
|
||||
LocalFree(buffer);
|
||||
}
|
||||
22
src/main/core/log-ext.h
Normal file
22
src/main/core/log-ext.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#ifndef CORE_LOG_EXT_H
|
||||
#define CORE_LOG_EXT_H
|
||||
|
||||
#include "iface-core/log.h"
|
||||
|
||||
#define log_fatal_on_win_last_error(...) \
|
||||
if (GetLastError() != 0) { \
|
||||
_bt_core_log_api.v1.fatal( \
|
||||
LOG_MODULE, \
|
||||
"%s:%d: function `%s'", \
|
||||
__FILE__, \
|
||||
__LINE__, \
|
||||
__FUNCTION__); \
|
||||
_bt_core_log_api.v1.fatal(LOG_MODULE, __VA_ARGS__); \
|
||||
core_log_ext_win_last_error_log(LOG_MODULE, _bt_core_log_api.v1.fatal); \
|
||||
_bt_core_log_api.v1.fatal(LOG_MODULE, ""); \
|
||||
abort(); \
|
||||
}
|
||||
|
||||
void core_log_ext_win_last_error_log(const char *module, bt_core_log_message_t log_message);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user