This source file includes following definitions.
- fdopen_nothrow
 
- rpl_fdopen
 
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 #include <config.h>
  18 
  19 
  20 #include <stdio.h>
  21 
  22 #include <errno.h>
  23 
  24 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER
  25 # include "msvc-inval.h"
  26 #endif
  27 
  28 #undef fdopen
  29 
  30 #if defined _WIN32 && !defined __CYGWIN__
  31 # if HAVE_MSVC_INVALID_PARAMETER_HANDLER
  32 static FILE *
  33 fdopen_nothrow (int fd, const char *mode)
     
  34 {
  35   FILE *result;
  36 
  37   TRY_MSVC_INVAL
  38     {
  39       result = _fdopen (fd, mode);
  40     }
  41   CATCH_MSVC_INVAL
  42     {
  43       result = NULL;
  44     }
  45   DONE_MSVC_INVAL;
  46 
  47   return result;
  48 }
  49 # else
  50 #  define fdopen_nothrow _fdopen
  51 # endif
  52 #else
  53 # define fdopen_nothrow fdopen
  54 #endif
  55 
  56 FILE *
  57 rpl_fdopen (int fd, const char *mode)
     
  58 {
  59   int saved_errno = errno;
  60   FILE *fp;
  61 
  62   errno = 0;
  63   fp = fdopen_nothrow (fd, mode);
  64   if (fp == NULL)
  65     {
  66       if (errno == 0)
  67         errno = EBADF;
  68     }
  69   else
  70     errno = saved_errno;
  71 
  72   return fp;
  73 }