X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Fbprint.c;h=f9d5d6ad40f3006d78b1aaad5169ffaf6465da6b;hb=465a72b4b4ad1366b47436506a1352ee0c0ef232;hp=115bf0c8de6aebbf8c5f492cffe91fba86c67488;hpb=ca7fa3a5167dc480917491bca4a1bc873d24125a;p=ffmpeg diff --git a/libavutil/bprint.c b/libavutil/bprint.c index 115bf0c8de6..f9d5d6ad40f 100644 --- a/libavutil/bprint.c +++ b/libavutil/bprint.c @@ -78,6 +78,15 @@ void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max) av_bprint_alloc(buf, size_init - 1); } +void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size) +{ + buf->str = buffer; + buf->len = 0; + buf->size = size; + buf->size_max = size; + *buf->str = 0; +} + void av_bprintf(AVBPrint *buf, const char *fmt, ...) { unsigned room; @@ -178,35 +187,40 @@ static void bprint_pascal(AVBPrint *b, unsigned size) int main(void) { AVBPrint b; + char buf[256]; av_bprint_init(&b, 0, -1); bprint_pascal(&b, 5); - printf("Short text in unlimited buffer: %zu/%u\n", strlen(b.str), b.len); + printf("Short text in unlimited buffer: %u/%u\n", (unsigned)strlen(b.str), b.len); printf("%s\n", b.str); av_bprint_finalize(&b, NULL); av_bprint_init(&b, 0, -1); bprint_pascal(&b, 25); - printf("Long text in unlimited buffer: %zu/%u\n", strlen(b.str), b.len); + printf("Long text in unlimited buffer: %u/%u\n", (unsigned)strlen(b.str), b.len); av_bprint_finalize(&b, NULL); av_bprint_init(&b, 0, 2048); bprint_pascal(&b, 25); - printf("Long text in limited buffer: %zu/%u\n", strlen(b.str), b.len); + printf("Long text in limited buffer: %u/%u\n", (unsigned)strlen(b.str), b.len); av_bprint_finalize(&b, NULL); av_bprint_init(&b, 0, 1); bprint_pascal(&b, 5); - printf("Short text in automatic buffer: %zu/%u\n", strlen(b.str), b.len); + printf("Short text in automatic buffer: %u/%u\n", (unsigned)strlen(b.str), b.len); av_bprint_init(&b, 0, 1); bprint_pascal(&b, 25); - printf("Long text in automatic buffer: %zu/%u\n", strlen(b.str), b.len); + printf("Long text in automatic buffer: %u/%u\n", (unsigned)strlen(b.str)/8*8, b.len); /* Note that the size of the automatic buffer is arch-dependant. */ av_bprint_init(&b, 0, 0); bprint_pascal(&b, 25); - printf("Long text count only buffer: %zu/%u\n", strlen(b.str), b.len); + printf("Long text count only buffer: %u/%u\n", (unsigned)strlen(b.str), b.len); + + av_bprint_init_for_buffer(&b, buf, sizeof(buf)); + bprint_pascal(&b, 25); + printf("Long text count only buffer: %u/%u\n", (unsigned)strlen(buf), b.len); return 0; }