diff -r 85863b89e38b -r a10ba529ae39 src/log.c --- a/src/log.c Sat May 23 00:33:23 2009 +0300 +++ b/src/log.c Wed May 27 23:07:00 2009 +0300 @@ -72,7 +72,7 @@ _log_output_ctx.arg = arg; } -void log_output_tag (enum log_level level, const char *tag, const char *func, const char *user_fmt, va_list user_fmtargs, const char *log_fmt, ...) +void log_output_tag_va (enum log_level level, const char *tag, const char *func, const char *user_fmt, va_list user_fmtargs, const char *log_fmt, va_list log_fmtargs) { char buf[LOG_MSG_MAX], *buf_ptr = buf; size_t buf_size = sizeof(buf); @@ -89,16 +89,21 @@ buf_ptr += str_advance(NULL, &buf_size, str_append_fmt_va(buf_ptr, buf_size, user_fmt, user_fmtargs)); // output the suffix - if (log_fmt) { - va_list vargs; - - va_start(vargs, log_fmt); - buf_ptr += str_advance(NULL, &buf_size, str_append_fmt_va(buf_ptr, buf_size, log_fmt, vargs)); - va_end(vargs); - } + if (log_fmt) + buf_ptr += str_advance(NULL, &buf_size, str_append_fmt_va(buf_ptr, buf_size, log_fmt, log_fmtargs)); // send it to the output func _log_output_ctx.func(buf, _log_output_ctx.arg); + +} + +void log_output_tag (enum log_level level, const char *tag, const char *func, const char *user_fmt, va_list user_fmtargs, const char *log_fmt, ...) +{ + va_list vargs; + + va_start(vargs, log_fmt); + log_output_tag_va(level, tag, func, user_fmt, user_fmtargs, log_fmt, vargs); + va_end(vargs); } void _log_msg (enum log_level level, const char *func, const char *format, ...) @@ -111,6 +116,11 @@ va_end(vargs); } +void _log_msg_va2 (enum log_level level, const char *func, const char *fmt1, va_list fmtargs1, const char *fmt2, va_list fmtargs2) +{ + log_output_tag_va(level, log_level_name(level), func, fmt1, fmtargs1, fmt2, fmtargs2); +} + void _log_err (enum log_level level, err_t err, const char *func, const char *format, ...) { va_list vargs;