/* FUNCTION <>---record position in a stream or file INDEX fgetpos ANSI_SYNOPSIS #include int fgetpos(FILE *<[fp]>, fpos_t *<[pos]>); TRAD_SYNOPSIS #include int fgetpos(<[fp]>, <[pos]>) FILE *<[fp]>; fpos_t *<[pos]>; DESCRIPTION Objects of type <> can have a ``position'' that records how much of the file your program has already read. Many of the <> functions depend on this position, and many change it as a side effect. You can use <> to report on the current position for a file identified by <[fp]>; <> will write a value representing that position at <<*<[pos]>>>. Later, you can use this value with <> to return the file to this position. In the current implementation, <> simply uses a character count to represent the file position; this is the same number that would be returned by <>. RETURNS <> returns <<0>> when successful. If <> fails, the result is <<1>>. Failure occurs on streams that do not support positioning; the global <> indicates this condition with the value <>. PORTABILITY <> is required by the ANSI C standard, but the meaning of the value it records is not specified beyond requiring that it be acceptable as an argument to <>. In particular, other conforming C implementations may return a different result from <> than what <> writes at <<*<[pos]>>>. No supporting OS subroutines are required. */ #include int _DEFUN (fgetpos, (fp, pos), FILE * fp _AND fpos_t * pos) { _flockfile(fp); *pos = ftell (fp); if (*pos != -1) { _funlockfile(fp); return 0; } _funlockfile(fp); return 1; }