From: Rich Felker Date: Mon, 4 Apr 2011 20:30:39 +0000 (-0400) Subject: simplify vdprintf implementation greatly based on recent vfprintf changes X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=commitdiff_plain;h=98c5583ad5d633166e28034c0a3544ad48b532b6 simplify vdprintf implementation greatly based on recent vfprintf changes since vfprintf will provide a temporary buffer in the case where the target FILE has a zero buffer size, don't bother setting up a real buffer for vdprintf. this also allows us to skip the call to fflush since we know everything will be written out before vfprintf returns. --- diff --git a/src/stdio/vdprintf.c b/src/stdio/vdprintf.c index faf9536a..b41a3c74 100644 --- a/src/stdio/vdprintf.c +++ b/src/stdio/vdprintf.c @@ -7,13 +7,10 @@ static size_t wrap_write(FILE *f, const unsigned char *buf, size_t len) int vdprintf(int fd, const char *fmt, va_list ap) { - int r; - unsigned char buf[BUFSIZ]; FILE f = { .fd = fd, .lbf = EOF, .write = wrap_write, - .buf = buf+UNGET, .buf_size = sizeof buf - UNGET, + .buf = (void *)fmt, .buf_size = 0, .lock = -1 }; - r = vfprintf(&f, fmt, ap); - return fflush(&f) ? EOF : r; + return vfprintf(&f, fmt, ap); }