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

1.1       root        1: /*
                      2:  * libc/stdio/_finit.c
                      3:  * ANSI-compliant C standard i/o library internals.
                      4:  * _fginit(), _fpinit()
                      5:  * Initialize file for i/o.
                      6:  */
                      7: 
                      8: #include <stdio.h>
                      9: #include <errno.h>
                     10: 
                     11: /*
                     12:  * The get and put function pointers in a FILE
                     13:  * initially contain &_fginit and &_fpinit.
                     14:  * The first get/put on the stream calls _f[gp]init()
                     15:  * which calls finit().
                     16:  * finit() calls setvbuf() to initialize stream buffering
                     17:  * and to reset the get and put functions appropriately.
                     18:  */
                     19: static
                     20: void
                     21: finit(stream) register FILE *stream;
                     22: {
                     23:        register int mode, sav;
                     24: 
                     25:        if (stream->_mode != _MODE_UNINIT)
                     26:                return;                         /* setvbuf already called */
                     27:        sav = errno;                    /* because isatty() can set errno */
                     28:        mode = (isatty(fileno(stream)) && stream==stdout) ? _IOLBF : _IOFBF;
                     29:        if (setvbuf(stream, NULL, mode, (size_t)BUFSIZ) == 0)
                     30:                return;                         /* buffered or line buffered */
                     31:        setvbuf(stream, NULL, _IONBF, (size_t)0);       /* unbuffered */
                     32:        errno = sav;
                     33: }
                     34: 
                     35: /*
                     36:  * Initialize and get.
                     37:  */
                     38: int
                     39: _fginit(stream) register FILE *stream;
                     40: {
                     41:        finit(stream);
                     42:        return (*stream->_f2p->_gt)(stream);
                     43: }
                     44: 
                     45: /*
                     46:  * Initialize and put.
                     47:  */
                     48: int
                     49: _fpinit(c, stream) register char c; register FILE *stream;
                     50: {
                     51:        finit(stream);
                     52:        return (*stream->_f2p->_pt)(c, stream);
                     53: }
                     54: 
                     55: /* end of libc/stdio/_finit.c */

unix.superglobalmegacorp.com

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