12411Sdlw /* 2*4109Sdlw char id_getc[] = "@(#)getc_.c 1.3"; 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 { 223896Sdlw int i; 233896Sdlw unit *lu; 242411Sdlw 253896Sdlw lu = &units[STDIN]; 263896Sdlw if (!lu->ufd) 272411Sdlw return((long)(errno=F_ERNOPEN)); 28*4109Sdlw if (lu->uwrt && ! nowreading(lu)) 29*4109Sdlw return((long)errno); 303896Sdlw if ((i = getc (lu->ufd)) < 0) 312411Sdlw { 323896Sdlw if (feof(lu->ufd)) 332411Sdlw return(-1L); 342411Sdlw i = errno; 353896Sdlw clearerr(lu->ufd); 362411Sdlw return((long)i); 372411Sdlw } 382411Sdlw *c = i & 0177; 392411Sdlw return(0L); 402411Sdlw } 41