#if !defined(lint) && defined(SCCSIDS) static char sccsid[] = "@(#)fprintf.c 1.1 94/10/31 SMI"; /* from S5R2 1.5 */ #endif /*LINTLIBRARY*/ #include #include #include 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 */ #ifdef POSIX errno = EBADF; #endif 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); }