mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
fix broken windows build (recent typo) and cleanup logger.c
This commit is contained in:
28
lib/logger.c
28
lib/logger.c
@@ -94,10 +94,10 @@ logger_utf8_to_local(const char *str)
|
||||
|
||||
/* FIXME: This is only implemented on Windows for now */
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
BOOL failed;
|
||||
BOOL failed = false;
|
||||
|
||||
int wclen = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
|
||||
WCHAR wcstr = malloc(sizeof(WCHAR) * wclen);
|
||||
WCHAR *wcstr = (WCHAR *) calloc(wclen, sizeof(WCHAR));
|
||||
MultiByteToWideChar(CP_UTF8, 0, str, -1, wcstr, wclen);
|
||||
|
||||
int mblen = WideCharToMultiByte(CP_ACP, 0, wcstr, wclen, NULL, 0, NULL, &failed);
|
||||
@@ -107,7 +107,7 @@ logger_utf8_to_local(const char *str)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret = malloc(sizeof(CHAR) * mblen);
|
||||
ret = (char *) calloc(mblen, sizeof(CHAR));
|
||||
WideCharToMultiByte(CP_ACP, 0, wcstr, wclen, ret, mblen, NULL, NULL);
|
||||
free(wcstr);
|
||||
#endif
|
||||
@@ -118,9 +118,6 @@ logger_utf8_to_local(const char *str)
|
||||
void
|
||||
logger_log(logger_t *logger, int level, const char *fmt, ...)
|
||||
{
|
||||
char buffer[4096] = {0};
|
||||
va_list ap;
|
||||
|
||||
MUTEX_LOCK(logger->lvl_mutex);
|
||||
if (level > logger->level) {
|
||||
MUTEX_UNLOCK(logger->lvl_mutex);
|
||||
@@ -128,14 +125,22 @@ logger_log(logger_t *logger, int level, const char *fmt, ...)
|
||||
}
|
||||
MUTEX_UNLOCK(logger->lvl_mutex);
|
||||
|
||||
buffer[sizeof(buffer)-1] = '\0';
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(buffer, sizeof(buffer)-1, fmt, ap);
|
||||
char buffer[4096] = {0};
|
||||
char err_fmt[] = "---logger message is truncated from %d to %d chars---\n";
|
||||
char err_buf[128] = {0};
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
int message_len = vsnprintf(buffer, sizeof(buffer), fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (message_len >= sizeof(buffer)) {
|
||||
snprintf(err_buf, sizeof(err_buf), err_fmt, message_len, (int) sizeof(buffer) -1);
|
||||
}
|
||||
MUTEX_LOCK(logger->cb_mutex);
|
||||
if (logger->callback) {
|
||||
logger->callback(logger->cls, level, buffer);
|
||||
if (err_buf[0]) {
|
||||
logger->callback(logger->cls, level, err_buf);
|
||||
}
|
||||
MUTEX_UNLOCK(logger->cb_mutex);
|
||||
} else {
|
||||
MUTEX_UNLOCK(logger->cb_mutex);
|
||||
@@ -146,5 +151,8 @@ logger_log(logger_t *logger, int level, const char *fmt, ...)
|
||||
} else {
|
||||
fprintf(stderr, "%s\n", buffer);
|
||||
}
|
||||
if (err_buf[0]) {
|
||||
fprintf(stderr,"%s\n", err_buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user