| Index: util/file/file_io.cc
|
| diff --git a/util/file/fd_io.cc b/util/file/file_io.cc
|
| similarity index 40%
|
| copy from util/file/fd_io.cc
|
| copy to util/file/file_io.cc
|
| index cc97400ba34ba3e827a71f9c9dc1955ad18e1e8d..6f2d0b58811e4850ca8a4fc4c10f285a0807d091 100644
|
| --- a/util/file/fd_io.cc
|
| +++ b/util/file/file_io.cc
|
| @@ -12,71 +12,16 @@
|
| // See the License for the specific language governing permissions and
|
| // limitations under the License.
|
|
|
| -#include "util/file/fd_io.h"
|
| -
|
| -#include <unistd.h>
|
| +#include "util/file/file_io.h"
|
|
|
| #include "base/logging.h"
|
| #include "base/numerics/safe_conversions.h"
|
| -#include "base/posix/eintr_wrapper.h"
|
| -
|
| -namespace {
|
| -
|
| -struct ReadTraits {
|
| - using VoidBufferType = void*;
|
| - using CharBufferType = char*;
|
| - static ssize_t Operate(int fd, CharBufferType buffer, size_t size) {
|
| - return read(fd, buffer, size);
|
| - }
|
| -};
|
| -
|
| -struct WriteTraits {
|
| - using VoidBufferType = const void*;
|
| - using CharBufferType = const char*;
|
| - static ssize_t Operate(int fd, CharBufferType buffer, size_t size) {
|
| - return write(fd, buffer, size);
|
| - }
|
| -};
|
| -
|
| -template <typename Traits>
|
| -ssize_t ReadOrWrite(int fd,
|
| - typename Traits::VoidBufferType buffer,
|
| - size_t size) {
|
| - typename Traits::CharBufferType buffer_c =
|
| - reinterpret_cast<typename Traits::CharBufferType>(buffer);
|
| -
|
| - ssize_t total_bytes = 0;
|
| - while (size > 0) {
|
| - ssize_t bytes = HANDLE_EINTR(Traits::Operate(fd, buffer_c, size));
|
| - if (bytes < 0) {
|
| - return bytes;
|
| - } else if (bytes == 0) {
|
| - break;
|
| - }
|
| -
|
| - buffer_c += bytes;
|
| - size -= bytes;
|
| - total_bytes += bytes;
|
| - }
|
| -
|
| - return total_bytes;
|
| -}
|
| -
|
| -} // namespace
|
|
|
| namespace crashpad {
|
|
|
| -ssize_t ReadFD(int fd, void* buffer, size_t size) {
|
| - return ReadOrWrite<ReadTraits>(fd, buffer, size);
|
| -}
|
| -
|
| -ssize_t WriteFD(int fd, const void* buffer, size_t size) {
|
| - return ReadOrWrite<WriteTraits>(fd, buffer, size);
|
| -}
|
| -
|
| -bool LoggingReadFD(int fd, void* buffer, size_t size) {
|
| +bool LoggingReadFile(FileHandle file, void* buffer, size_t size) {
|
| ssize_t expect = base::checked_cast<ssize_t>(size);
|
| - ssize_t rv = ReadFD(fd, buffer, size);
|
| + ssize_t rv = ReadFile(file, buffer, size);
|
| if (rv < 0) {
|
| PLOG(ERROR) << "read";
|
| return false;
|
| @@ -89,9 +34,9 @@ bool LoggingReadFD(int fd, void* buffer, size_t size) {
|
| return true;
|
| }
|
|
|
| -bool LoggingWriteFD(int fd, const void* buffer, size_t size) {
|
| +bool LoggingWriteFile(FileHandle file, const void* buffer, size_t size) {
|
| ssize_t expect = base::checked_cast<ssize_t>(size);
|
| - ssize_t rv = WriteFD(fd, buffer, size);
|
| + ssize_t rv = WriteFile(file, buffer, size);
|
| if (rv < 0) {
|
| PLOG(ERROR) << "write";
|
| return false;
|
| @@ -104,17 +49,17 @@ bool LoggingWriteFD(int fd, const void* buffer, size_t size) {
|
| return true;
|
| }
|
|
|
| -void CheckedReadFD(int fd, void* buffer, size_t size) {
|
| - CHECK(LoggingReadFD(fd, buffer, size));
|
| +void CheckedReadFile(FileHandle file, void* buffer, size_t size) {
|
| + CHECK(LoggingReadFile(file, buffer, size));
|
| }
|
|
|
| -void CheckedWriteFD(int fd, const void* buffer, size_t size) {
|
| - CHECK(LoggingWriteFD(fd, buffer, size));
|
| +void CheckedWriteFile(FileHandle file, const void* buffer, size_t size) {
|
| + CHECK(LoggingWriteFile(file, buffer, size));
|
| }
|
|
|
| -void CheckedReadFDAtEOF(int fd) {
|
| +void CheckedReadFileAtEOF(FileHandle file) {
|
| char c;
|
| - ssize_t rv = ReadFD(fd, &c, 1);
|
| + ssize_t rv = ReadFile(file, &c, 1);
|
| if (rv < 0) {
|
| PCHECK(rv == 0) << "read";
|
| } else {
|
| @@ -122,14 +67,8 @@ void CheckedReadFDAtEOF(int fd) {
|
| }
|
| }
|
|
|
| -bool LoggingCloseFD(int fd) {
|
| - int rv = IGNORE_EINTR(close(fd));
|
| - PLOG_IF(ERROR, rv != 0) << "close";
|
| - return rv == 0;
|
| -}
|
| -
|
| -void CheckedCloseFD(int fd) {
|
| - CHECK(LoggingCloseFD(fd));
|
| +void CheckedCloseFile(FileHandle file) {
|
| + CHECK(LoggingCloseFile(file));
|
| }
|
|
|
| } // namespace crashpad
|
|
|