Back to index

glibc  2.9
Functions
iofgetpos.c File Reference
#include "libioP.h"
#include <errno.h>
#include <stdlib.h>
#include <shlib-compat.h>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int _IO_new_fgetpos (_IO_FILE *fp, _IO_fpos_t *posp)

Function Documentation

int _IO_new_fgetpos ( _IO_FILE fp,
_IO_fpos_t posp 
)

Definition at line 35 of file iofgetpos.c.

{
  _IO_off64_t pos;
  int result = 0;
  CHECK_FILE (fp, EOF);
  _IO_acquire_lock (fp);
  pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
  if (_IO_in_backup (fp) && pos != _IO_pos_BAD)
    {
      if (fp->_mode <= 0)
       pos -= fp->_IO_save_end - fp->_IO_save_base;
    }
  if (pos == _IO_pos_BAD)
    {
      /* ANSI explicitly requires setting errno to a positive value on
        failure.  */
#ifdef EIO
      if (errno == 0)
       __set_errno (EIO);
#endif
      result = EOF;
    }
  else if ((_IO_off64_t) (__typeof (posp->__pos)) pos != pos)
    {
#ifdef EOVERFLOW
      __set_errno (EOVERFLOW);
#endif
      result = EOF;
    }
  else
    {
      posp->__pos = pos;
      if (fp->_mode > 0
         && (*fp->_codecvt->__codecvt_do_encoding) (fp->_codecvt) < 0)
       /* This is a stateful encoding, safe the state.  */
       posp->__state = fp->_wide_data->_IO_state;
    }

  _IO_release_lock (fp);
  return result;
}

Here is the call graph for this function: