major stdio overhaul, using readv/writev, plus other changes
[musl] / src / stdio / vdprintf.c
1 #include "stdio_impl.h"
2
3 static size_t wrap_write(FILE *f, const unsigned char *buf, size_t len)
4 {
5         return __stdio_write(f, buf, len);
6 }
7
8 int vdprintf(int fd, const char *fmt, va_list ap)
9 {
10         int r;
11         unsigned char buf[BUFSIZ];
12         FILE f = {
13                 .fd = fd, .lbf = EOF, .write = wrap_write,
14                 .buf = buf+UNGET, .buf_size = sizeof buf - UNGET,
15                 .lock = -1
16         };
17         r = vfprintf(&f, fmt, ap);
18         return fflush(&f) ? EOF : r;
19 }