1 #ifndef SILICIUM_READ_FILE_HPP
2 #define SILICIUM_READ_FILE_HPP
14 DWORD
const reading =
static_cast<DWORD
>(std::min<size_t>(destination.
size(), std::numeric_limits<DWORD>::max()));
15 if (!ReadFile(file, destination.
begin(), reading, &read_bytes,
nullptr))
17 DWORD error = GetLastError();
18 if (error == ERROR_BROKEN_PIPE)
21 return static_cast<std::size_t
>(0);
23 return boost::system::error_code(error, boost::system::system_category());
26 ssize_t
const read_bytes =
::read(file, destination.
begin(), destination.
size());
35 return static_cast<std::size_t
>(0);
37 return static_cast<std::size_t
>(read_bytes);
error_or< std::size_t > read(native_file_descriptor file, mutable_memory_range destination)
Definition: read_file.hpp:10
BOOST_CONSTEXPR Iterator const & begin() const BOOST_NOEXCEPT
Definition: iterator_range.hpp:61
Definition: absolute_path.hpp:19
Definition: iterator_range.hpp:26
Definition: error_or.hpp:48
SILICIUM_USE_RESULT boost::system::error_code get_last_error()
Definition: get_last_error.hpp:16
BOOST_CONSTEXPR difference_type size() const BOOST_NOEXCEPT
Definition: iterator_range.hpp:78