vfprintf.c revision 50e1e10fa0ac12a3e2a9d20a75ee9041873cda96
13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
23839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Copyright (c) 1988 Regents of the University of California.
33839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * All rights reserved.
43839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o *
53839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Redistribution and use in source and binary forms are permitted
63839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * provided that the above copyright notice and this paragraph are
73839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * duplicated in all such forms and that any documentation,
83839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * advertising materials, and other materials related to such
93839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * distribution and use acknowledge that the software was developed
103839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * by the University of California, Berkeley.  The name of the
113839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * University may not be used to endorse or promote products derived
123839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * from this software without specific prior written permission.
133839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
143839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
153839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
163839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
173839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
183839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#if defined(LIBC_SCCS) && !defined(lint)
193839e65723771b85975f4263102dd3ceec4523cTheodore Ts'ostatic char sccsid[] = "@(#)vfprintf.c	5.2 (Berkeley) 6/27/88";
203839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#endif /* LIBC_SCCS and not lint */
213839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
2250e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#if !HAVE_VPRINTF && HAVE_DOPRNT
233839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <stdio.h>
243839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <varargs.h>
253839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
263839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oint
273839e65723771b85975f4263102dd3ceec4523cTheodore Ts'ovfprintf(iop, fmt, ap)
283839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	FILE *iop;
293839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	char *fmt;
303839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	va_list ap;
313839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
323839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int len;
333839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	char localbuf[BUFSIZ];
343839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
353839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	if (iop->_flag & _IONBF) {
363839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		iop->_flag &= ~_IONBF;
373839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		iop->_ptr = iop->_base = localbuf;
383839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		len = _doprnt(fmt, ap, iop);
393839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		(void) fflush(iop);
403839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		iop->_flag |= _IONBF;
413839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		iop->_base = NULL;
423839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		iop->_bufsiz = 0;
433839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		iop->_cnt = 0;
443839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	} else
453839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o		len = _doprnt(fmt, ap, iop);
463839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
473839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	return (ferror(iop) ? EOF : len);
483839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
4950e1e10fa0ac12a3e2a9d20a75ee9041873cda96Theodore Ts'o#endif /* !HAVE_VPRINTF */
50