Back to index

glibc  2.9
Functions
freopen64.c File Reference
#include "libioP.h"
#include "stdio.h"
#include <stdlib.h>
#include <fd_to_filename.h>

Go to the source code of this file.

Functions

FILEfreopen64 (char *filename, const char *mode, FILE *fp) const

Function Documentation

FILE* freopen64 ( char*  filename,
const char*  mode,
FILE fp 
) const

Definition at line 36 of file freopen64.c.

{
#ifdef _G_OPEN64
  FILE *result;
  int fd = -1;
  CHECK_FILE (fp, NULL);
  if (!(fp->_flags & _IO_IS_FILEBUF))
    return NULL;
  _IO_acquire_lock (fp);
  if (filename == NULL && _IO_fileno (fp) >= 0)
    {
      fd = __dup (_IO_fileno (fp));
      if (fd != -1)
       filename = fd_to_filename (fd);
    }
  INTUSE(_IO_file_close_it) (fp);
  _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
  if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL)
    fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
  result = INTUSE(_IO_file_fopen) (fp, filename, mode, 0);
  if (result != NULL)
    result = __fopen_maybe_mmap (result);
  if (result != NULL)
    /* unbound stream orientation */
    result->_mode = 0;
  if (fd != -1)
    {
      __close (fd);
      free ((char *) filename);
    }
  _IO_release_lock (fp);
  return result;
#else
  __set_errno (ENOSYS);
  return NULL;
#endif
}

Here is the call graph for this function: