diff options
author | Clément Bœsch <ubitux@gmail.com> | 2011-09-03 19:51:28 +0200 |
---|---|---|
committer | Clément Bœsch <ubitux@gmail.com> | 2011-09-04 09:37:41 +0200 |
commit | 61e2e2969127e4cb8e0d32151fed3e03515fe436 (patch) | |
tree | 72ed060de80329fb6f8891582584779498061659 /libavutil | |
parent | 1889c6724a449b2e4826612d3b72efc76dbfb713 (diff) | |
download | ffmpeg-61e2e2969127e4cb8e0d32151fed3e03515fe436.tar.gz |
av_string: add av_asprintf().
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/avstring.c | 26 | ||||
-rw-r--r-- | libavutil/avstring.h | 10 | ||||
-rw-r--r-- | libavutil/avutil.h | 2 |
3 files changed, 37 insertions, 1 deletions
diff --git a/libavutil/avstring.c b/libavutil/avstring.c index b573dd6761..4cebbe04a6 100644 --- a/libavutil/avstring.c +++ b/libavutil/avstring.c @@ -91,6 +91,32 @@ size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) return len; } +char *av_asprintf(const char *fmt, ...) +{ + char *p = NULL; + va_list va; + int len; + + va_start(va, fmt); + len = vsnprintf(NULL, 0, fmt, va); + va_end(va); + if (len < 0) + goto end; + + p = av_malloc(len + 1); + if (!p) + goto end; + + va_start(va, fmt); + len = vsnprintf(p, len + 1, fmt, va); + va_end(va); + if (len < 0) + av_freep(&p); + +end: + return p; +} + char *av_d2str(double d) { char *str= av_malloc(16); diff --git a/libavutil/avstring.h b/libavutil/avstring.h index 662af6b70d..2be84a9ed0 100644 --- a/libavutil/avstring.h +++ b/libavutil/avstring.h @@ -111,6 +111,16 @@ size_t av_strlcat(char *dst, const char *src, size_t size); size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) av_printf_format(3, 4); /** + * Print arguments following specified format into a large enough auto + * allocated buffer. It is similar to GNU asprintf(). + * @param fmt printf-compatible format string, specifying how the + * following parameters are used. + * @return the allocated string + * @note You have to free the string yourself with av_free(). + */ +char *av_asprintf(const char *fmt, ...) av_printf_format(1, 2); + +/** * Convert a number to a av_malloced string. */ char *av_d2str(double d); diff --git a/libavutil/avutil.h b/libavutil/avutil.h index f77cde783d..06c0470ce7 100644 --- a/libavutil/avutil.h +++ b/libavutil/avutil.h @@ -40,7 +40,7 @@ #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) #define LIBAVUTIL_VERSION_MAJOR 51 -#define LIBAVUTIL_VERSION_MINOR 15 +#define LIBAVUTIL_VERSION_MINOR 16 #define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ |