浏览代码

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 年之前
父节点
当前提交
98c5583ad5
共有 1 个文件被更改,包括 2 次插入5 次删除
  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);
 }