2
3
6
7
8
9
24
33
34
35
36
37
52 file_descriptor_t file_descriptor{};
53 const auto result = fopen_s( &file_descriptor, file_path,
"rb" );
57 const auto err_code = errno;
60 RESTINIO_FMT_FORMAT_STRING(
"fopen_s('{}') failed; errno={}" ),
65 return file_descriptor;
73 RESTINIO_FMT_FORMAT_STRING(
"std::fopen failed: '{}'" ),
78 return file_descriptor;
84
85
86
87
94 file_descriptor_t file_descriptor{};
95 const auto result = _wfopen_s( &file_descriptor, file_path.c_str(), L"rb" );
99 const auto err_code = errno;
102 RESTINIO_FMT_FORMAT_STRING(
"_wfopen_s failed; errno={}" ),
107 return file_descriptor;
110 return open_file( file_path.c_str() );
115template <
typename META >
120 file_size_t fsize = 0;
125 if( 0 == std::fseek( fd , 0 , SEEK_END ) )
127 const auto end_pos = std::ftell( fd );
131 fsize =
static_cast< file_size_t >( end_pos );
136 throw exception_t{
"std::ftell failed" };
141 throw exception_t{
"std::fseek failed" };
147 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.