From 98b6e59272398e64ddff3e850cbdbe4f3cf3919b Mon Sep 17 00:00:00 2001 From: Victor Zverovich Date: Sat, 3 May 2014 12:06:28 -0700 Subject: [PATCH] Add FileDescriptor::write. --- test/gtest-extra.cc | 8 ++++++++ test/gtest-extra.h | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/test/gtest-extra.cc b/test/gtest-extra.cc index f4018ba2..df024560 100644 --- a/test/gtest-extra.cc +++ b/test/gtest-extra.cc @@ -80,6 +80,14 @@ std::streamsize FileDescriptor::read(void *buffer, std::size_t count) { return result; } +std::streamsize FileDescriptor::write(const void *buffer, std::size_t count) { + std::streamsize result = 0; + FMT_RETRY(result, ::write(fd_, buffer, count)); + if (result == -1) + fmt::ThrowSystemError(errno, "cannot write to file"); + return result; +} + FileDescriptor FileDescriptor::dup(int fd) { int new_fd = 0; FMT_RETRY(new_fd, ::FMT_POSIX(dup(fd))); diff --git a/test/gtest-extra.h b/test/gtest-extra.h index 888234ef..c7bd6168 100644 --- a/test/gtest-extra.h +++ b/test/gtest-extra.h @@ -194,10 +194,14 @@ class FileDescriptor { // Returns the file descriptor. int get() const FMT_NOEXCEPT(true) { return fd_; } - // Attempts to read count chars from the file associated with this file + // Attempts to read count bytes from the file associated with this file // descriptor into the specified buffer. std::streamsize read(void *buffer, std::size_t count); + // Attempts to write count bytes from the specified buffer to the file + // associated with this file descriptor. + std::streamsize write(const void *buffer, std::size_t count); + // Duplicates a file descriptor with the dup function and returns // the duplicate. Throws fmt::SystemError on error. static FileDescriptor dup(int fd);