1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/* * vfprintf.c */ #include <stdio.h> #include <string.h> #include <stdarg.h> #include <unistd.h> #define BUFFER_SIZE 32768 int vfprintf(FILE *file, const char *format, va_list ap) { int rv; char buffer[BUFFER_SIZE]; rv = vsnprintf(buffer, BUFFER_SIZE, format, ap); if ( rv < 0 ) return rv; if ( rv > BUFFER_SIZE-1 ) rv = BUFFER_SIZE-1; return _fwrite(buffer, rv, file); }