about summary refs log tree commit diff
path: root/src/stdio/vdprintf.c
blob: 68562e052bf28de8cd060b3d7a668d0d74b8532f (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;
	unsigned 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;
}