Chromium Code Reviews| 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..c1eceeb4e2cdff4bf1a300b04a8e5342a4d54daf 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 fh, void* buffer, size_t size) { |
|
Mark Mentovai
2014/12/16 22:40:25
Throughout this file: the header declared the para
Mark Mentovai
2014/12/16 22:40:25
I’m really glad that all of these wrappers are sha
scottmg
2014/12/17 00:22:58
Done.
|
| ssize_t expect = base::checked_cast<ssize_t>(size); |
| - ssize_t rv = ReadFD(fd, buffer, size); |
| + ssize_t rv = ReadFile(fh, 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 fh, 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(fh, 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 fh, void* buffer, size_t size) { |
| + CHECK(LoggingReadFile(fh, buffer, size)); |
| } |
| -void CheckedWriteFD(int fd, const void* buffer, size_t size) { |
| - CHECK(LoggingWriteFD(fd, buffer, size)); |
| +void CheckedWriteFile(FileHandle fh, const void* buffer, size_t size) { |
| + CHECK(LoggingWriteFile(fh, buffer, size)); |
| } |
| -void CheckedReadFDAtEOF(int fd) { |
| +void CheckedReadFileAtEOF(FileHandle fh) { |
|
Mark Mentovai
2014/12/16 22:40:25
Especially now that we’ve got multiple implementat
scottmg
2014/12/17 00:22:58
Agreed. I'll skip for now and add once I can actua
|
| char c; |
| - ssize_t rv = ReadFD(fd, &c, 1); |
| + ssize_t rv = ReadFile(fh, &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 fh) { |
| + CHECK(LoggingCloseFile(fh)); |
| } |
| } // namespace crashpad |