12410Sdlw /* 2*2576Sdlw char id_fgetc[] = "@(#)fgetc_.c 1.2"; 32410Sdlw * 42410Sdlw * get a character from a logical unit bypassing formatted I/O 52410Sdlw * 62410Sdlw * calling sequence: 72410Sdlw * integer fgetc 82410Sdlw * ierror = fgetc (unit, char) 92410Sdlw * where: 102410Sdlw * char will return a character from logical unit 112410Sdlw * ierror will be 0 if successful; a system error code otherwise. 122410Sdlw */ 132410Sdlw 142410Sdlw #include "../libI77/fiodefs.h" 152410Sdlw #include "../libI77/f_errno.h" 162410Sdlw 172410Sdlw extern unit units[]; /* logical units table from iolib */ 182410Sdlw 192410Sdlw long fgetc_(u, c, clen) 202410Sdlw long *u; char *c; long clen; 212410Sdlw { 222410Sdlw int i; 232410Sdlw 242410Sdlw if (*u < 0 || *u >= MXUNIT) 25*2576Sdlw return((long)(errno=F_ERUNIT)); 262410Sdlw if (!units[*u].ufd) 272410Sdlw return((long)(errno=F_ERNOPEN)); 282410Sdlw if ((i = getc (units[*u].ufd)) < 0) 292410Sdlw { 302410Sdlw if (feof(units[*u].ufd)) 312410Sdlw return(-1L); 322410Sdlw i = errno; 332410Sdlw clearerr(units[*u].ufd); 342410Sdlw return((long)i); 352410Sdlw } 362410Sdlw *c = i & 0177; 372410Sdlw return(0L); 382410Sdlw } 39