Annotation of coherent/b/lib/libc/XSTDIO/_fgetc.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * libc/stdio/_fgetc.c
                      3:  * ANSI-compliant C standard i/o library internals.
                      4:  * _fgetc(), _fgetca()
                      5:  * Read character, unbuffered.
                      6:  */
                      7: 
                      8: #include <stdio.h>
                      9: #if    COHERENT || GEMDOS
                     10: #include <errno.h>
                     11: #endif
                     12: 
                     13: int
                     14: _fgetc(fp) register FILE *fp;
                     15: {
                     16:        unsigned char c;
                     17:        register int n;
                     18: 
                     19:        /* Special kludge: fflush stdout if line buffered. */
                     20:        if ((stdout->_ff1 & _IOLBF) != 0)
                     21:                fflush(stdout);
                     22: 
                     23:        if ((n = read(fileno(fp), &c, 1)) == 1)
                     24:                return c;
                     25:        else if (n == 0)
                     26:                fp->_ff1 |= _FEOF;
                     27:        else {
                     28: #if    COHERENT || GEMDOS
                     29:                if (errno == EINTR)
                     30:                        errno = 0;
                     31:                else
                     32: #endif
                     33:                fp->_ff1 |= _FERR;
                     34:        }
                     35:        return EOF;
                     36: }
                     37: 
                     38: #if    _ASCII
                     39: 
                     40: /* ASCII: ignore '\r', map _EOFCHAR to EOF. */
                     41: int
                     42: _fgetca(fp) register FILE *fp;
                     43: {
                     44:        register int c;
                     45: 
                     46:        while ((c = _fgetc(fp)) == '\r')
                     47:                ;
                     48:        if (c == _EOFCHAR) {
                     49:                fp->_ff |= _FEOF;
                     50:                return EOF;
                     51:        }
                     52:        return c;
                     53: }
                     54: 
                     55: #endif
                     56: 
                     57: /* end of libc/stdio/_fgetc.c */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.