12410Sdlw /* 2*3895Sdlw char id_fgetc[] = "@(#)fgetc_.c 1.3"; 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 { 22*3895Sdlw int i; 23*3895Sdlw unit *lu; 242410Sdlw 252410Sdlw if (*u < 0 || *u >= MXUNIT) 262576Sdlw return((long)(errno=F_ERUNIT)); 27*3895Sdlw lu = &units[*u]; 28*3895Sdlw if (!lu->ufd) 292410Sdlw return((long)(errno=F_ERNOPEN)); 30*3895Sdlw if (lu->uwrt) 31*3895Sdlw nowreading(lu); 32*3895Sdlw if ((i = getc (lu->ufd)) < 0) 332410Sdlw { 34*3895Sdlw if (feof(lu->ufd)) 352410Sdlw return(-1L); 362410Sdlw i = errno; 37*3895Sdlw clearerr(lu->ufd); 382410Sdlw return((long)i); 392410Sdlw } 402410Sdlw *c = i & 0177; 412410Sdlw return(0L); 422410Sdlw } 43