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.
This commit is contained in:
Rich Felker 2011-04-04 16:30:39 -04:00
parent bd57e2b43a
commit 98c5583ad5

View file

@ -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);
}