Răsfoiți Sursa

simplify vdprintf implementation greatly based on recent vfprintf changes

since vfprintf will provide a temporary buffer in the case where the
target FILE has a zero buffer size, don't bother setting up a real
buffer for vdprintf. this also allows us to skip the call to fflush
since we know everything will be written out before vfprintf returns.
Rich Felker 14 ani în urmă
părinte
comite
98c5583ad5
1 a modificat fișierele cu 2 adăugiri și 5 ștergeri
  1. 2 5
      src/stdio/vdprintf.c

+ 2 - 5
src/stdio/vdprintf.c

@@ -7,13 +7,10 @@ static size_t wrap_write(FILE *f, const unsigned char *buf, size_t 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,
+		.buf = (void *)fmt, .buf_size = 0,
 		.lock = -1
 	};
-	r = vfprintf(&f, fmt, ap);
-	return fflush(&f) ? EOF : r;
+	return vfprintf(&f, fmt, ap);
 }