1*2410Sdlw /* 2*2410Sdlw char id_fgetc[] = "@(#)fgetc_.c 1.1"; 3*2410Sdlw * 4*2410Sdlw * get a character from a logical unit bypassing formatted I/O 5*2410Sdlw * 6*2410Sdlw * calling sequence: 7*2410Sdlw * integer fgetc 8*2410Sdlw * ierror = fgetc (unit, char) 9*2410Sdlw * where: 10*2410Sdlw * char will return a character from logical unit 11*2410Sdlw * ierror will be 0 if successful; a system error code otherwise. 12*2410Sdlw */ 13*2410Sdlw 14*2410Sdlw #include "../libI77/fiodefs.h" 15*2410Sdlw #include "../libI77/f_errno.h" 16*2410Sdlw 17*2410Sdlw extern unit units[]; /* logical units table from iolib */ 18*2410Sdlw 19*2410Sdlw long fgetc_(u, c, clen) 20*2410Sdlw long *u; char *c; long clen; 21*2410Sdlw { 22*2410Sdlw int i; 23*2410Sdlw 24*2410Sdlw if (*u < 0 || *u >= MXUNIT) 25*2410Sdlw return((long)(errno=F_ERARG)); 26*2410Sdlw if (!units[*u].ufd) 27*2410Sdlw return((long)(errno=F_ERNOPEN)); 28*2410Sdlw if ((i = getc (units[*u].ufd)) < 0) 29*2410Sdlw { 30*2410Sdlw if (feof(units[*u].ufd)) 31*2410Sdlw return(-1L); 32*2410Sdlw i = errno; 33*2410Sdlw clearerr(units[*u].ufd); 34*2410Sdlw return((long)i); 35*2410Sdlw } 36*2410Sdlw *c = i & 0177; 37*2410Sdlw return(0L); 38*2410Sdlw } 39