1 #ifndef OSMIUM_UTIL_DATA_FILE_HPP
2 #define OSMIUM_UTIL_DATA_FILE_HPP
41 #include <system_error>
72 throw std::system_error(errno, std::system_category(),
"tmpfile failed");
94 DataFile(
const char* filename,
bool writable) :
95 m_file(::fopen(filename, writable ?
"wb+" :
"rb" )) {
97 throw std::system_error(errno, std::system_category(),
"fopen failed");
108 DataFile(
const std::string& filename,
bool writable) :
109 DataFile(filename.c_str(), writable) {
116 operator bool() const noexcept {
117 return m_file !=
nullptr;
129 if (::fclose(m_file) != 0) {
130 throw std::system_error(errno, std::system_category(),
"fclose failed");
139 }
catch (std::system_error&) {
152 throw std::runtime_error(
"no open file");
155 int fd = ::fileno(m_file);
158 throw std::system_error(errno, std::system_category(),
"fileno failed");
181 void grow(
size_t new_size)
const {
182 if (
size() < new_size) {
194 #endif // OSMIUM_UTIL_DATA_FILE_HPP
size_t file_size(int fd)
Definition: file.hpp:67
DataFile(const std::string &filename, bool writable)
Definition: data_file.hpp:108
void grow(size_t new_size) const
Definition: data_file.hpp:181
size_t size() const
Definition: data_file.hpp:169
DataFile()
Definition: data_file.hpp:69
DataFile(const char *filename, bool writable)
Definition: data_file.hpp:94
Namespace for everything in the Osmium library.
Definition: assembler.hpp:55
int fd() const
Definition: data_file.hpp:150
~DataFile() noexcept
Definition: data_file.hpp:136
Definition: data_file.hpp:58
void close()
Definition: data_file.hpp:127
void resize_file(int fd, size_t new_size)
Definition: file.hpp:94
FILE * m_file
Definition: data_file.hpp:60
DataFile(size_t size)
Definition: data_file.hpp:82