Implement some basic logging for windows
This commit is contained in:
@@ -26,7 +26,7 @@ static inline bool check_path(const char* data, const char *path,
|
||||
dstr_copy(output, path);
|
||||
dstr_cat(output, data);
|
||||
|
||||
blog(LOG_INFO, "Attempting path: %s\n", output->array);
|
||||
blog(LOG_DEBUG, "Attempting path: %s\n", output->array);
|
||||
|
||||
return os_file_exists(output->array);
|
||||
}
|
||||
|
@@ -27,10 +27,12 @@ static int log_output_level = LOG_DEBUG;
|
||||
static int log_output_level = LOG_INFO;
|
||||
#endif
|
||||
|
||||
static int crashing = 0;
|
||||
static int crashing = 0;
|
||||
static void *log_param = NULL;
|
||||
static void *crash_param = NULL;
|
||||
|
||||
static void def_log_handler(int log_level, const char *format,
|
||||
va_list args)
|
||||
va_list args, void *param)
|
||||
{
|
||||
char out[4096];
|
||||
vsnprintf(out, sizeof(out), format, args);
|
||||
@@ -57,6 +59,8 @@ static void def_log_handler(int log_level, const char *format,
|
||||
fflush(stderr);
|
||||
}
|
||||
}
|
||||
|
||||
UNUSED_PARAMETER(param);
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
@@ -65,24 +69,35 @@ static void def_log_handler(int log_level, const char *format,
|
||||
#define NORETURN __attribute__((noreturn))
|
||||
#endif
|
||||
|
||||
NORETURN static void def_crash_handler(const char *format, va_list args)
|
||||
NORETURN static void def_crash_handler(const char *format, va_list args,
|
||||
void *param)
|
||||
{
|
||||
vfprintf(stderr, format, args);
|
||||
exit(0);
|
||||
|
||||
UNUSED_PARAMETER(param);
|
||||
}
|
||||
|
||||
static void (*log_handler)(int log_level, const char *, va_list) =
|
||||
static void (*log_handler)(int log_level, const char *, va_list, void *) =
|
||||
def_log_handler;
|
||||
static void (*crash_handler)(const char *, va_list) = def_crash_handler;
|
||||
static void (*crash_handler)(const char *, va_list, void *) = def_crash_handler;
|
||||
|
||||
void base_set_log_handler(
|
||||
void (*handler)(int log_level, const char *, va_list))
|
||||
void (*handler)(int log_level, const char *, va_list, void *),
|
||||
void *param)
|
||||
{
|
||||
if (!handler)
|
||||
handler = def_log_handler;
|
||||
|
||||
log_param = param;
|
||||
log_handler = handler;
|
||||
}
|
||||
|
||||
void base_set_crash_handler(void (*handler)(const char *, va_list))
|
||||
void base_set_crash_handler(
|
||||
void (*handler)(const char *, va_list, void *),
|
||||
void *param)
|
||||
{
|
||||
crash_param = param;
|
||||
crash_handler = handler;
|
||||
}
|
||||
|
||||
@@ -97,13 +112,13 @@ void bcrash(const char *format, ...)
|
||||
|
||||
crashing = 1;
|
||||
va_start(args, format);
|
||||
crash_handler(format, args);
|
||||
crash_handler(format, args, crash_param);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
void blogva(int log_level, const char *format, va_list args)
|
||||
{
|
||||
log_handler(log_level, format, args);
|
||||
log_handler(log_level, format, args, log_param);
|
||||
}
|
||||
|
||||
void blog(int log_level, const char *format, ...)
|
||||
@@ -111,6 +126,6 @@ void blog(int log_level, const char *format, ...)
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
log_handler(log_level, format, args);
|
||||
blogva(log_level, format, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
@@ -59,8 +59,11 @@ enum {
|
||||
};
|
||||
|
||||
EXPORT void base_set_log_handler(
|
||||
void (*handler)(int log_level, const char *, va_list));
|
||||
EXPORT void base_set_crash_handler(void (*handler)(const char *, va_list));
|
||||
void (*handler)(int log_level, const char *, va_list, void *),
|
||||
void *param);
|
||||
EXPORT void base_set_crash_handler(
|
||||
void (*handler)(const char *, va_list, void *),
|
||||
void *param);
|
||||
|
||||
EXPORT void blogva(int log_level, const char *format, va_list args);
|
||||
|
||||
|
Reference in New Issue
Block a user