### 6.7 `fsetpos64`—restore position of a large stream or file ¶

Synopsis

    #include <stdio.h>
    int fsetpos64(FILE *fp, const _fpos64_t *pos);
    int _fsetpos64_r(struct _reent *ptr, FILE *fp,
        const _fpos64_t *pos);

Description
Objects of type `FILE` can have a “position” that records how much of the file your program has already read. Many of the `stdio` functions depend on this position, and many change it as a side effect.

You can use `fsetpos64` to return the large file identified by fp to a previous position `*pos` (after first recording it with `fgetpos64`).

See `fseeko64` for a similar facility.

Returns
`fgetpos64` returns `0` when successful. If `fgetpos64` fails, the result is `1`. The reason for failure is indicated in `errno`: either `ESPIPE` (the stream identified by fp doesn’t support 64-bit repositioning) or `EINVAL` (invalid file position).

Portability
`fsetpos64` is a glibc extension.

Supporting OS subroutines required: `close`, `fstat`, `isatty`, `lseek64`, `read`, `sbrk`, `write`.