Annotation of coherent/b/lib/libc/stdio/fseek.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * libc/stdio/fseek.c
                      3:  * ANSI-compliant C standard i/o library.
                      4:  * fseek()
                      5:  * ANSI 4.9.9.2.
                      6:  * Seek to offset from whence in stream.
                      7:  */
                      8: 
                      9: #include <stdio.h>
                     10: #include "stdio.int.h"
                     11: 
                     12: int
                     13: fseek(stream, offset, whence) register FILE *stream; long offset; int whence;
                     14: {
                     15:        register _FILE2 *f2p;
                     16: 
                     17:        f2p = stream->_f2p;
                     18: 
                     19:        /* Adjust offset for ungotten character if necessary. */
                     20:        if ((whence == SEEK_CUR) && (stream->_ff2 & _FUNGOT))
                     21:                offset--;
                     22: 
                     23:        /* Ensure buffer is clean. */
                     24:        if (_fpseek(stream)==EOF)
                     25:                return EOF;
                     26: 
                     27:        /* Perform the seek. */
                     28:        if ((offset=lseek(fileno(stream), offset, whence)) == -1L)
                     29:                return EOF;
                     30: 
                     31:        /* Reset buffer pointers if necessary. */
                     32:        if (f2p->_bp != NULL)
                     33:                f2p->_dp = stream->_cp = f2p->_bp + (unsigned)offset%(unsigned)(f2p->_ep - f2p->_bp);
                     34: 
                     35:        /* If the file was opened for append, force seek to end on write. */
                     36:        if ((stream->_ff2 & _FAPPND) && (offset != 0L || whence == SEEK_SET))
                     37:                f2p->_pt = &_fputa;
                     38: 
                     39:        /* Clear EOF flag. */
                     40:        stream->_ff1 &= ~_FEOF;
                     41: 
                     42:        return 0;
                     43: }
                     44: 
                     45: /* end of libc/stdio/fseek.c */

unix.superglobalmegacorp.com

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