summaryrefslogtreecommitdiff
path: root/src/stdio/vdprintf.c
blob: 35ed6e0b6c737dfe75d5b9e86a65e57b19749038 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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];
	FILE f = {
		.fd = fd, .lbf = EOF, .write = wrap_write,
		.buf = buf+UNGET, .buf_size = sizeof buf - UNGET
	};
	r = vfprintf(&f, fmt, ap);
	__oflow(&f);
	return r;
}