X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fstdio%2Fvdprintf.c;h=faf9536a7d529ee488c95d40c82b342b402c2a99;hb=0b240ccf523b9af23dd1efa78274f397fcc90cdd;hp=bfb1b0a9d8c4a3c566dd7e5a97c44ea0b8e05d84;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/stdio/vdprintf.c b/src/stdio/vdprintf.c index bfb1b0a9..faf9536a 100644 --- a/src/stdio/vdprintf.c +++ b/src/stdio/vdprintf.c @@ -1,14 +1,19 @@ #include "stdio_impl.h" +static size_t wrap_write(FILE *f, const unsigned char *buf, size_t len) +{ + return __stdio_write(f, buf, len); +} + int vdprintf(int fd, const char *fmt, va_list ap) { int r; - char buf[BUFSIZ]; + unsigned char buf[BUFSIZ]; FILE f = { - .fd = fd, .lbf = EOF, .write = __stdio_write, - .buf = buf+UNGET, .buf_size = sizeof buf - UNGET + .fd = fd, .lbf = EOF, .write = wrap_write, + .buf = buf+UNGET, .buf_size = sizeof buf - UNGET, + .lock = -1 }; r = vfprintf(&f, fmt, ap); - __oflow(&f); - return r; + return fflush(&f) ? EOF : r; }