Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

lseek(2)

write(2)

reentrant(3)

fopen(3S)

popen(3S)

setvbuf(3S)

stdio(3S)

ungetc(3S)



fseek(3S)                      DG/UX 5.4R3.00                      fseek(3S)


NAME
       fseek, rewind, ftell - reposition a file pointer in a stream

SYNOPSIS
       #include <stdio.h>

       int fseek (FILE *stream, long offset, int ptrname);

       void rewind (FILE *stream);

       long ftell (FILE *stream);

DESCRIPTION
       fseek sets the position of the next input or output operation on the
       stream [see intro(3)].  The new position is at the signed distance
       offset bytes from the beginning, from the current position, or from
       the end of the file, according to a ptrname value of SEEK_SET,
       SEEK_CUR, or SEEK_END (defined in stdio.h) as follows:


       SEEK_SET    set position equal to offset bytes.

       SEEK_CUR    set position to current location plus offset.

       SEEK_END    set position to EOF plus offset.

       fseek allows the file position indicator to be set beyond the end of
       the existing data in the file.  If data is later written at this
       point, subsequent reads of data in the gap will return zero until
       data is actually written into the gap.  fseek, by itself, does not
       extend the size of the file.

       rewind (stream) is equivalent to:

            (void) fseek (stream, 0L, SEEK_SET);

       except that rewind also clears the error indicator on stream.

       fseek and rewind clear the EOF indicator and undo any effects of
       ungetc on stream.  After fseek or rewind, the next operation on a
       file opened for update may be either input or output.

       If stream is writable and buffered data has not been written to the
       underlying file, fseek and rewind cause the unwritten data to be
       written to the file.

       ftell returns the offset of the current byte relative to the
       beginning of the file associated with the named stream.


   Considerations for Threads Programming






Licensed material--property of copyright holder(s)                         1




fseek(3S)                      DG/UX 5.4R3.00                      fseek(3S)


                     +---------+-----------------------------+
                     |         |                      async- |
                     |function | reentrant   cancel   cancel |
                     |         |              point    safe  |
                     +---------+-----------------------------+
                     |fseek    |     Y          Y        N   |
                     |ftell    |     Y          Y        N   |
                     |rewind   |     Y          Y        N   |
                     +---------+-----------------------------+

SEE ALSO
       lseek(2), write(2), reentrant(3), fopen(3S), popen(3S), setvbuf(3S),
       stdio(3S), ungetc(3S).

DIAGNOSTICS
       fseek returns -1 for improper seeks, otherwise zero.  An improper
       seek can be, for example, an fseek done on a file that has not been
       opened via fopen; in particular, fseek may not be used on a terminal
       or on a file opened via popen.  If the file has not been opened,
       errno is set to EBADF along with a non-zero return value.  After a
       stream is closed, no further operations are defined on that stream.

NOTES
       Although on the UNIX system an offset returned by ftell is measured
       in bytes, and it is permissible to seek to positions relative to that
       offset, portability to non-UNIX systems requires that an offset be
       used by fseek directly.  Arithmetic may not meaningfully be performed
       on such an offset, which is not necessarily measured in bytes.

       The stdio routines in libc automatically set their buffer size to an
       optimal value for sequential I/O.  If your application is doing alot
       of random I/O and reading small amounts of data, it would be wise to
       use the setvbuf() function (see the setvbuf(3S) man page).  Use of
       setvbuf() to buffer data at a size closer to the average amount
       read/written will probably increase performance.






















Licensed material--property of copyright holder(s)                         2


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026