diff --git a/src/log.cpp b/src/log.cpp index 85d6b21..a65afb9 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -21,20 +21,20 @@ bool LogScope::has(enum LogPriority priority) { return priority <= this->priority; } -void LogScope::vprintf(enum LogPriority priority, const char *fmt, va_list args) { +void LogScope::vlogf(enum LogPriority priority, const char *fmt, va_list args) { if (!this->has(priority)) { return; } fprintf(stderr, "%s: ", this->name); vfprintf(stderr, fmt, args); + fprintf(stderr, "\n"); } -void LogScope::vlogf(enum LogPriority priority, const char *fmt, va_list args) { - if (!this->has(priority)) { - return; - } - this->vprintf(priority, fmt, args); - fprintf(stderr, "\n"); +void LogScope::logf(enum LogPriority priority, const char *fmt, ...) { + va_list args; + va_start(args, fmt); + this->vlogf(priority, fmt, args); + va_end(args); } void LogScope::errorf(const char *fmt, ...) { @@ -59,16 +59,13 @@ void LogScope::debugf(const char *fmt, ...) { } void LogScope::errorf_errno(const char *fmt, ...) { - if (!this->has(LOG_ERROR)) { - return; - } - const char *err = strerror(errno); + static char buf[1024]; va_list args; va_start(args, fmt); - this->vprintf(LOG_ERROR, fmt, args); + vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); - fprintf(stderr, ": %s\n", err); + this->logf(LOG_ERROR, "%s: %s", buf, err); } diff --git a/src/log.hpp b/src/log.hpp index c827afe..495d8fc 100644 --- a/src/log.hpp +++ b/src/log.hpp @@ -20,6 +20,7 @@ class LogScope { bool has(enum LogPriority priority); void vprintf(enum LogPriority priority, const char *fmt, va_list args) ATTRIB_PRINTF(3, 0); void vlogf(enum LogPriority priority, const char *fmt, va_list args) ATTRIB_PRINTF(3, 0); + void logf(enum LogPriority priority, const char *fmt, ...) ATTRIB_PRINTF(3, 4); public: LogScope(const char *name); diff --git a/src/rendervulkan.cpp b/src/rendervulkan.cpp index efa3c66..f933262 100644 --- a/src/rendervulkan.cpp +++ b/src/rendervulkan.cpp @@ -130,7 +130,7 @@ static void vk_errorf(VkResult result, const char *fmt, ...) { static char buf[1024]; va_list args; va_start(args, fmt); - snprintf(buf, sizeof(buf), fmt, args); + vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); vk_log.errorf("%s (VkResult: %d)", buf, result);