Index: util/file/fd_io.cc |
diff --git a/util/file/fd_io.cc b/util/file/fd_io.cc |
deleted file mode 100644 |
index cc97400ba34ba3e827a71f9c9dc1955ad18e1e8d..0000000000000000000000000000000000000000 |
--- a/util/file/fd_io.cc |
+++ /dev/null |
@@ -1,135 +0,0 @@ |
-// Copyright 2014 The Crashpad Authors. All rights reserved. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
- |
-#include "util/file/fd_io.h" |
- |
-#include <unistd.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) { |
- ssize_t expect = base::checked_cast<ssize_t>(size); |
- ssize_t rv = ReadFD(fd, buffer, size); |
- if (rv < 0) { |
- PLOG(ERROR) << "read"; |
- return false; |
- } |
- if (rv != expect) { |
- LOG(ERROR) << "read: expected " << expect << ", observed " << rv; |
- return false; |
- } |
- |
- return true; |
-} |
- |
-bool LoggingWriteFD(int fd, const void* buffer, size_t size) { |
- ssize_t expect = base::checked_cast<ssize_t>(size); |
- ssize_t rv = WriteFD(fd, buffer, size); |
- if (rv < 0) { |
- PLOG(ERROR) << "write"; |
- return false; |
- } |
- if (rv != expect) { |
- LOG(ERROR) << "write: expected " << expect << ", observed " << rv; |
- return false; |
- } |
- |
- return true; |
-} |
- |
-void CheckedReadFD(int fd, void* buffer, size_t size) { |
- CHECK(LoggingReadFD(fd, buffer, size)); |
-} |
- |
-void CheckedWriteFD(int fd, const void* buffer, size_t size) { |
- CHECK(LoggingWriteFD(fd, buffer, size)); |
-} |
- |
-void CheckedReadFDAtEOF(int fd) { |
- char c; |
- ssize_t rv = ReadFD(fd, &c, 1); |
- if (rv < 0) { |
- PCHECK(rv == 0) << "read"; |
- } else { |
- CHECK_EQ(rv, 0) << "read"; |
- } |
-} |
- |
-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)); |
-} |
- |
-} // namespace crashpad |