diff --git a/log.c b/log.c index 3364e69..f5a20d0 100644 --- a/log.c +++ b/log.c @@ -63,3 +63,13 @@ void log_errno(enum log_class log_class, const char *module, _log(log_class, module, file, lineno, fmt, errno, ap); va_end(ap); } + +void log_errno_provided(enum log_class log_class, const char *module, + const char *file, int lineno, int _errno, + const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + _log(log_class, module, file, lineno, fmt, _errno, ap); + va_end(ap); +} diff --git a/log.h b/log.h index 9e6cd95..ba32d03 100644 --- a/log.h +++ b/log.h @@ -10,10 +10,18 @@ void log_errno(enum log_class log_class, const char *module, const char *file, int lineno, const char *fmt, ...) __attribute__((format (printf, 5, 6))); +void log_errno_provided( + enum log_class log_class, const char *module, + const char *file, int lineno, int _errno, + const char *fmt, ...) __attribute__((format (printf, 6, 7))); + #define LOG_ERR(fmt, ...) \ log_msg(LOG_CLASS_ERROR, LOG_MODULE, __FILE__, __LINE__, fmt, ## __VA_ARGS__) #define LOG_ERRNO(fmt, ...) \ log_errno(LOG_CLASS_ERROR, LOG_MODULE, __FILE__, __LINE__, fmt, ## __VA_ARGS__) +#define LOG_ERRNO_P(fmt, _errno, ...) \ + log_errno_provided(LOG_CLASS_ERROR, LOG_MODULE, __FILE__, __LINE__, \ + _errno, fmt, ## __VA_ARGS__) #define LOG_WARN(fmt, ...) \ log_msg(LOG_CLASS_WARNING, LOG_MODULE, __FILE__, __LINE__, fmt, ## __VA_ARGS__) #define LOG_INFO(fmt, ...) \