diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index d873306f..b9be442f 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -730,22 +730,28 @@ LWS_VISIBLE void lwsl_emit_stderr(int level, const char *line) } -LWS_VISIBLE void _lws_log(int filter, const char *format, ...) +LWS_VISIBLE void _lws_logv(int filter, const char *format, va_list vl) { char buf[256]; - va_list ap; if (!(log_level & filter)) return; - va_start(ap, format); - vsnprintf(buf, sizeof(buf), format, ap); + vsnprintf(buf, sizeof(buf), format, vl); buf[sizeof(buf) - 1] = '\0'; - va_end(ap); lwsl_emit(filter, buf); } +LWS_VISIBLE void _lws_log(int filter, const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + _lws_logv(filter, format, ap); + va_end(ap); +} + /** * lws_set_log_level() - Set the logging bitfield * @level: OR together the LLL_ debug contexts you want output from diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index edea1a26..8ede31ba 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -114,6 +114,7 @@ enum lws_log_levels { }; LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format, ...); +LWS_VISIBLE LWS_EXTERN void _lws_logv(int filter, const char *format, va_list vl); /* notice, warn and log are always compiled in */ #define lwsl_notice(...) _lws_log(LLL_NOTICE, __VA_ARGS__)