diff --git a/include/crucible/fd.h b/include/crucible/fd.h index 685babd..8492846 100644 --- a/include/crucible/fd.h +++ b/include/crucible/fd.h @@ -70,10 +70,11 @@ namespace crucible { string mmap_flags_ntoa(int flags); // Unlink, rename - void unlink_or_die(const string &file); void rename_or_die(const string &from, const string &to); void renameat_or_die(int fromfd, const string &frompath, int tofd, const string &topath); + void ftruncate_or_die(int fd, off_t size); + // Read or write structs: // There is a template specialization to read or write strings // Three-arg version of read_or_die/write_or_die throws an error on incomplete read/writes diff --git a/lib/fd.cc b/lib/fd.cc index 881f98a..e0735a9 100644 --- a/lib/fd.cc +++ b/lib/fd.cc @@ -230,6 +230,14 @@ namespace crucible { } } + void + ftruncate_or_die(int fd, off_t size) + { + if (::ftruncate(fd, size)) { + THROW_ERRNO("ftruncate: " << name_fd(fd) << " size " << size); + } + } + string socket_domain_ntoa(int domain) {