Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(483)

Unified Diff: util/file/file_io.cc

Issue 811823003: Cross platform low level file IO wrappers (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: . Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« util/file/file_io.h ('K') | « util/file/file_io.h ('k') | util/file/file_io_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698