X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=linux%2Fprintbuf_userspace.c;h=df9567c5f5a9270933d605cc02f4c42d2f4b8fcd;hb=99caca2c70f312c4a2504a7e7a9c92a91426d885;hp=84187f1f68be7e6a9bdf08836dd74fb20d2050ea;hpb=6ac37db8415c636607d878c16af8346df55668f4;p=bcachefs-tools-debian diff --git a/linux/printbuf_userspace.c b/linux/printbuf_userspace.c index 84187f1..df9567c 100644 --- a/linux/printbuf_userspace.c +++ b/linux/printbuf_userspace.c @@ -2,15 +2,15 @@ #include #include -void prt_printf(struct printbuf *out, const char *fmt, ...) +void prt_vprintf(struct printbuf *out, const char *fmt, va_list args) { - va_list args; int len; do { - va_start(args, fmt); - len = vsnprintf(out->buf + out->pos, printbuf_remaining(out), fmt, args); - va_end(args); + va_list args2; + + va_copy(args2, args); + len = vsnprintf(out->buf + out->pos, printbuf_remaining(out), fmt, args2); } while (len + 1 >= printbuf_remaining(out) && !printbuf_make_room(out, len + 1)); @@ -18,3 +18,12 @@ void prt_printf(struct printbuf *out, const char *fmt, ...) printbuf_remaining(out) ? printbuf_remaining(out) - 1 : 0); out->pos += len; } + +void prt_printf(struct printbuf *out, const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + prt_vprintf(out, fmt, args); + va_end(args); +}