xref: /csrg-svn/lib/libc/stdio/fputs.c (revision 17951)
1*17951Sserge /* @(#)fputs.c	4.3 (Berkeley) 02/13/85 */
22007Swnj #include	<stdio.h>
32007Swnj 
42007Swnj fputs(s, iop)
52007Swnj register char *s;
62007Swnj register FILE *iop;
72007Swnj {
817201Slepreau 	register r = 0;
92007Swnj 	register c;
10*17951Sserge 	int unbuffered;
11*17951Sserge 	char localbuf[BUFSIZ];
122007Swnj 
13*17951Sserge 	unbuffered = iop->_flag & _IONBF;
14*17951Sserge 	if (unbuffered) {
15*17951Sserge 		iop->_flag &= ~_IONBF;
16*17951Sserge 		iop->_ptr = iop->_base = localbuf;
17*17951Sserge 		iop->_bufsiz = BUFSIZ;
18*17951Sserge 	}
19*17951Sserge 
202007Swnj 	while (c = *s++)
212007Swnj 		r = putc(c, iop);
22*17951Sserge 
23*17951Sserge 	if (unbuffered) {
24*17951Sserge 		fflush(iop);
25*17951Sserge 		iop->_flag |= _IONBF;
26*17951Sserge 		iop->_base = NULL;
27*17951Sserge 		iop->_bufsiz = NULL;
28*17951Sserge 		iop->_cnt = 0;
29*17951Sserge 	}
30*17951Sserge 
312007Swnj 	return(r);
322007Swnj }
33