Files
Arquivotheca.Solaris-2.5/lib/libbc/libc/stdio/sys5/fprintf.c
seta75D 7c4988eac0 Init
2021-10-11 19:38:01 -03:00

46 lines
850 B
C
Executable File

#pragma ident "@(#)fprintf.c 1.8 92/07/20 SMI" /* from S5R2 1.5 */
/*LINTLIBRARY*/
#include <stdio.h>
#include <varargs.h>
extern int _doprnt();
/*VARARGS2*/
int
fprintf(iop, format, va_alist)
FILE *iop;
char *format;
va_dcl
{
unsigned char localbuf[BUFSIZ];
register int count;
va_list ap;
va_start(ap);
if (!(iop->_flag & _IOWRT)) {
/* if no write flag */
if (iop->_flag & _IORW) {
/* if ok, cause read-write */
iop->_flag |= _IOWRT;
} else {
/* else error */
return EOF;
}
}
if (iop->_flag & _IONBF) {
iop->_flag &= ~_IONBF;
iop->_ptr = iop->_base = localbuf;
iop->_bufsiz = BUFSIZ;
count = _doprnt(format, ap, iop);
fflush(iop);
iop->_flag |= _IONBF;
iop->_base = NULL;
iop->_bufsiz = 0;
iop->_cnt = 0;
} else
count = _doprnt(format, ap, iop);
va_end(ap);
return(ferror(iop)? EOF: count);
}