12411Sdlw /* 2*3896Sdlw char id_getc[] = "@(#)getc_.c 1.2"; 32411Sdlw * 42411Sdlw * get a character from the standard input 52411Sdlw * 62411Sdlw * calling sequence: 72411Sdlw * integer getc 82411Sdlw * ierror = getc (char) 92411Sdlw * where: 102411Sdlw * char will be read from the standard input, usually the terminal 112411Sdlw * ierror will be 0 if successful; a system error code otherwise. 122411Sdlw */ 132411Sdlw 142411Sdlw #include "../libI77/f_errno.h" 152411Sdlw #include "../libI77/fiodefs.h" 162411Sdlw 172411Sdlw extern unit units[]; /* logical units table from iolib */ 182411Sdlw 192411Sdlw long getc_(c, clen) 202411Sdlw char *c; long clen; 212411Sdlw { 22*3896Sdlw int i; 23*3896Sdlw unit *lu; 242411Sdlw 25*3896Sdlw lu = &units[STDIN]; 26*3896Sdlw if (!lu->ufd) 272411Sdlw return((long)(errno=F_ERNOPEN)); 28*3896Sdlw if (lu->uwrt) 29*3896Sdlw nowreading(lu); 30*3896Sdlw if ((i = getc (lu->ufd)) < 0) 312411Sdlw { 32*3896Sdlw if (feof(lu->ufd)) 332411Sdlw return(-1L); 342411Sdlw i = errno; 35*3896Sdlw clearerr(lu->ufd); 362411Sdlw return((long)i); 372411Sdlw } 382411Sdlw *c = i & 0177; 392411Sdlw return(0L); 402411Sdlw } 41