xref: /csrg-svn/usr.bin/f77/libU77/fputc_.c (revision 2409)
1*2409Sdlw /*
2*2409Sdlw char id_fputc[] = @(#)fputc_.c	1.1";
3*2409Sdlw  *
4*2409Sdlw  * write a character to a logical unit bypassing formatted I/O
5*2409Sdlw  *
6*2409Sdlw  * calling sequence:
7*2409Sdlw  *	integer fputc
8*2409Sdlw  *	ierror = fputc (unit, char)
9*2409Sdlw  * where:
10*2409Sdlw  *	char will be sent to the logical unit
11*2409Sdlw  *	ierror will be 0 if successful; a system error code otherwise.
12*2409Sdlw  */
13*2409Sdlw 
14*2409Sdlw #include	"../libI77/fiodefs.h"
15*2409Sdlw #include	"../libI77/f_errno.h"
16*2409Sdlw 
17*2409Sdlw extern unit units[];	/* logical units table from iolib */
18*2409Sdlw 
19*2409Sdlw long fputc_(u, c, clen)
20*2409Sdlw long *u; char *c; long clen;
21*2409Sdlw {
22*2409Sdlw 	int i;
23*2409Sdlw 
24*2409Sdlw 	if (*u < 0 || *u >= MXUNIT)
25*2409Sdlw 		return((long)(errno=F_ERARG));
26*2409Sdlw 	if (!units[*u].ufd)
27*2409Sdlw 		return((long)(errno=F_ERNOPEN));
28*2409Sdlw 	putc (*c, units[*u].ufd);
29*2409Sdlw 	if (ferror(units[*u].ufd))
30*2409Sdlw 	{
31*2409Sdlw 		i = errno;
32*2409Sdlw 		clearerr(units[*u].ufd);
33*2409Sdlw 		return((long)i);
34*2409Sdlw 	}
35*2409Sdlw 	return(0L);
36*2409Sdlw }
37