ReactOS 0.4.16-dev-1063-gd722e70
openfile.cpp File Reference
#include <corecrt_internal_stdio.h>
#include <sys/stat.h>
Include dependency graph for openfile.cpp:

Go to the source code of this file.

Functions

template<typename Character >
static FILE *__cdecl common_openfile (Character const *const file_name, Character const *const mode, int const share_flag, __crt_stdio_stream const stream) throw ()
 
FILE *__cdecl _openfile (char const *const file_name, char const *const mode, int const share_flag, FILE *const public_stream)
 
FILE *__cdecl _wopenfile (wchar_t const *const file_name, wchar_t const *const mode, int const share_flag, FILE *const public_stream)
 

Function Documentation

◆ _openfile()

FILE *__cdecl _openfile ( char const *const  file_name,
char const *const  mode,
int const  share_flag,
FILE *const  public_stream 
)

Definition at line 59 of file openfile.cpp.

65{
66 return common_openfile(file_name, mode, share_flag, __crt_stdio_stream(public_stream));
67}
GLenum mode
Definition: glext.h:6217
static LPCWSTR file_name
Definition: protocol.c:147
static FILE *__cdecl common_openfile(Character const *const file_name, Character const *const mode, int const share_flag, __crt_stdio_stream const stream)
Definition: openfile.cpp:20

Referenced by __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0().

◆ _wopenfile()

FILE *__cdecl _wopenfile ( wchar_t const *const  file_name,
wchar_t const *const  mode,
int const  share_flag,
FILE *const  public_stream 
)

Definition at line 69 of file openfile.cpp.

75{
76 return common_openfile(file_name, mode, share_flag, __crt_stdio_stream(public_stream));
77}

Referenced by __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0().

◆ common_openfile()

template<typename Character >
static FILE *__cdecl common_openfile ( Character const *const  file_name,
Character const *const  mode,
int const  share_flag,
__crt_stdio_stream const  stream 
)
throw (
)
static

Definition at line 20 of file openfile.cpp.

26{
27 typedef __acrt_stdio_char_traits<Character> stdio_traits;
28
29 _ASSERTE(file_name != nullptr);
30 _ASSERTE(mode != nullptr);
31 _ASSERTE(stream.valid());
32
34 if (!parsed_mode._success)
35 return nullptr;
36
37 int fh;
38 if (stdio_traits::tsopen_s(&fh, file_name, parsed_mode._lowio_mode, share_flag, _S_IREAD | _S_IWRITE) != 0)
39 return nullptr;
40
41 // Ensure that streams get flushed during pre-termination:
42 #ifndef CRTDLL
43 _cflush++;
44 #endif
45
46 // Initialize the stream:
47 stream.set_flags(parsed_mode._stdio_mode);
48 stream->_cnt = 0;
49 stream->_tmpfname = nullptr;
50 stream->_base = nullptr;
51 stream->_ptr = nullptr;
52 stream->_file = fh;
53
54 return stream.public_stream();
55}
int _cflush
Definition: _file.cpp:53
__acrt_stdio_stream_mode __cdecl __acrt_stdio_parse_mode(Character const *const mode)
#define _ASSERTE(expr)
Definition: crtdbg.h:114
#define _S_IWRITE
Definition: cabinet.h:33
#define _S_IREAD
Definition: cabinet.h:34
Definition: parse.h:23

Referenced by _openfile(), and _wopenfile().