From 112c970ca62de2f43019a4cc787d12a0b88d2fbc Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 10 Aug 2013 13:52:14 +0200 Subject: avutil/bprint: add av_vbprintf() Reviewed-by: Nicolas George Signed-off-by: Michael Niedermayer --- libavutil/bprint.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'libavutil/bprint.c') diff --git a/libavutil/bprint.c b/libavutil/bprint.c index fd7611aaed..e7799563ec 100644 --- a/libavutil/bprint.c +++ b/libavutil/bprint.c @@ -113,6 +113,29 @@ void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_bprint_grow(buf, extra_len); } +void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg) +{ + unsigned room; + char *dst; + int extra_len; + va_list vl; + + while (1) { + room = av_bprint_room(buf); + dst = room ? buf->str + buf->len : NULL; + va_copy(vl, vl_arg); + extra_len = vsnprintf(dst, room, fmt, vl); + va_end(vl); + if (extra_len <= 0) + return; + if (extra_len < room) + break; + if (av_bprint_alloc(buf, extra_len)) + break; + } + av_bprint_grow(buf, extra_len); +} + void av_bprint_chars(AVBPrint *buf, char c, unsigned n) { unsigned room, real_n; -- cgit v1.2.3