summaryrefslogtreecommitdiff
path: root/libavutil
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-08-10 13:52:14 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-08-10 17:01:42 +0200
commit112c970ca62de2f43019a4cc787d12a0b88d2fbc (patch)
treed8d13a7e695f4cb0ca476112f2b7647a0fcb4274 /libavutil
parentb37ff488b8aab2fe1245f1ba3130b1d881559794 (diff)
avutil/bprint: add av_vbprintf()
Reviewed-by: Nicolas George <nicolas.george@normalesup.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavutil')
-rw-r--r--libavutil/bprint.c23
-rw-r--r--libavutil/bprint.h7
-rw-r--r--libavutil/version.h2
3 files changed, 31 insertions, 1 deletions
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;
diff --git a/libavutil/bprint.h b/libavutil/bprint.h
index dc86f12415..bb1de25c4a 100644
--- a/libavutil/bprint.h
+++ b/libavutil/bprint.h
@@ -21,6 +21,8 @@
#ifndef AVUTIL_BPRINT_H
#define AVUTIL_BPRINT_H
+#include <stdarg.h>
+
#include "attributes.h"
#include "avstring.h"
@@ -122,6 +124,11 @@ void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size);
void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3);
/**
+ * Append a formatted string to a print buffer.
+ */
+void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg);
+
+/**
* Append char c n times to a print buffer.
*/
void av_bprint_chars(AVBPrint *buf, char c, unsigned n);
diff --git a/libavutil/version.h b/libavutil/version.h
index 6eafda680d..e522b79d4a 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -75,7 +75,7 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 52
-#define LIBAVUTIL_VERSION_MINOR 41
+#define LIBAVUTIL_VERSION_MINOR 42
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \