1 #ifndef OSMIUM_UTIL_FILE_HPP
2 #define OSMIUM_UTIL_FILE_HPP
40 #include <system_error>
42 #include <sys/types.h>
71 const auto size = ::_filelengthi64(fd);
73 throw std::system_error(errno, std::system_category(),
"_filelengthi64 failed");
79 if (::fstat(fd, &s) != 0) {
80 throw std::system_error(errno, std::system_category(),
"fstat failed");
82 return size_t(s.st_size);
99 if (::_stati64(name, &s) != 0) {
100 throw std::system_error(errno, std::system_category(),
"_stati64 failed");
105 if (::stat(name, &s) != 0) {
106 throw std::system_error(errno, std::system_category(),
"stat failed");
109 return size_t(s.st_size);
135 if (::_chsize_s(fd, static_cast_with_assert<__int64>(new_size)) != 0) {
137 if (::ftruncate(fd, static_cast_with_assert<off_t>(new_size)) != 0) {
139 throw std::system_error(errno, std::system_category(),
"resizing file failed");
151 return si.dwPageSize;
154 return size_t(::sysconf(_SC_PAGESIZE));
167 auto offset = _lseeki64(fd, 0, SEEK_CUR);
169 auto offset = ::lseek(fd, 0, SEEK_CUR);
174 return size_t(offset);
183 return _isatty(fd) != 0;
193 #endif // OSMIUM_UTIL_FILE_HPP
size_t file_size(int fd)
Definition: file.hpp:67
bool isatty(int fd)
Definition: file.hpp:180
size_t get_pagesize()
Definition: file.hpp:146
size_t file_offset(int fd)
Definition: file.hpp:164
Namespace for everything in the Osmium library.
Definition: assembler.hpp:73
void resize_file(int fd, size_t new_size)
Definition: file.hpp:132