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