2
3
6
7
8
9
24
33
34
35
36
37
46
47
48
49
50
51
52
59 file_descriptor_t file_descriptor{};
60 const auto result = fopen_s( &file_descriptor, file_path,
"rb" );
64 const auto err_code = errno;
67 RESTINIO_FMT_FORMAT_STRING(
"fopen_s('{}') failed; errno={}" ),
72 return file_descriptor;
80 RESTINIO_FMT_FORMAT_STRING(
"std::fopen failed: '{}'" ),
85 return file_descriptor;
90
91
92
93
94
95
96
97
98
99
100
107 file_descriptor_t file_descriptor{};
108 const auto result = _wfopen_s( &file_descriptor, file_path.c_str(), L"rb" );
112 const auto err_code = errno;
115 RESTINIO_FMT_FORMAT_STRING(
"_wfopen_s failed; errno={}" ),
120 return file_descriptor;
123 return open_file( file_path.c_str() );
128template <
typename META >
133 file_size_t fsize = 0;
138 if( 0 == std::fseek( fd , 0 , SEEK_END ) )
140 const auto end_pos = std::ftell( fd );
144 fsize =
static_cast< file_size_t >( end_pos );
149 throw exception_t{
"std::ftell failed" };
154 throw exception_t{
"std::fseek failed" };
160 return META{ fsize, std::chrono::system_clock::now() };
constexpr file_descriptor_t null_file_descriptor()
Get file descriptor which stands for null.
void close_file(file_descriptor_t fd)
Close file by its descriptor.
file_descriptor_t open_file(const char *file_path)
Open file.
std::FILE * file_descriptor_t
file_descriptor_t open_file(const std::filesystem::path &file_path)
Helper function that accepts std::filesystem::path.
META get_file_meta(file_descriptor_t fd)
Get file size.