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

Unified Diff: util/file/file_io.h

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
« no previous file with comments | « util/file/fd_io.cc ('k') | util/file/file_io.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: util/file/file_io.h
diff --git a/util/file/fd_io.h b/util/file/file_io.h
similarity index 28%
rename from util/file/fd_io.h
rename to util/file/file_io.h
index 37ad6f1cb2405945d647936532345f3a4b15c5a3..927bc3cb13319ff5843a613cff77bbfd20588648 100644
--- a/util/file/fd_io.h
+++ b/util/file/file_io.h
@@ -12,114 +12,128 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef CRASHPAD_UTIL_FILE_FD_IO_H_
-#define CRASHPAD_UTIL_FILE_FD_IO_H_
+#ifndef CRASHPAD_UTIL_FILE_FILE_IO_H_
+#define CRASHPAD_UTIL_FILE_FILE_IO_H_
cpu_(ooo_6.6-7.5) 2014/12/17 22:10:17 does windows have <sys/types.h> ?
#include <sys/types.h>
+#include "build/build_config.h"
+
+#if defined(OS_WIN)
+#include <windows.h>
+#endif
+
namespace crashpad {
-//! \brief Wraps `read()`, retrying when interrupted or following a short read.
+#if defined(OS_POSIX)
+using FileHandle = int;
+#elif defined(OS_WIN)
+using FileHandle = HANDLE;
+#endif
+
+//! \brief Reads from a file, retrying when interrupted on POSIX or following a
+//! short read.
//!
//! This function reads into \a buffer, stopping only when \a size bytes have
-//! been read or when `read()` returns 0, indicating that end-of-file has been
-//! reached.
+//! been read or when end-of-file has been reached. On Windows, reading from
+//! sockets is not currently supported.
//!
//! \return The number of bytes read and placed into \a buffer, or `-1` on
-//! error, with `errno` set appropriately. On error, a portion of \a fd may
-//! have been read into \a buffer.
-//!
-//! \sa WriteFD
-//! \sa LoggingReadFD
-//! \sa CheckedReadFD
-//! \sa CheckedReadFDAtEOF
-ssize_t ReadFD(int fd, void* buffer, size_t size);
+//! error, with `errno` or `GetLastError()` set appropriately. On error, a
+//! portion of \a file may have been read into \a buffer.
+//!
+//! \sa WriteFile
+//! \sa LoggingReadFile
+//! \sa CheckedReadFile
+//! \sa CheckedReadFileAtEOF
+ssize_t ReadFile(FileHandle file, void* buffer, size_t size);
-//! \brief Wraps `write()`, retrying when interrupted or following a short
-//! write.
+//! \brief Writes to a file, retrying when interrupted or following a short
+//! write on POSIX.
//!
-//! This function writes to \a fd, stopping only when \a size bytes have been
+//! This function writes to \a file, stopping only when \a size bytes have been
//! written.
//!
//! \return The number of bytes written from \a buffer, or `-1` on error, with
-//! `errno` set appropriately. On error, a portion of \a buffer may have
-//! been written to \a fd.
+//! `errno` or `GetLastError()` set appropriately. On error, a portion of
+//! \a buffer may have been written to \a file.
//!
-//! \sa ReadFD
-//! \sa LoggingWriteFD
-//! \sa CheckedWriteFD
-ssize_t WriteFD(int fd, const void* buffer, size_t size);
+//! \sa ReadFile
+//! \sa LoggingWriteFile
+//! \sa CheckedWriteFile
+ssize_t WriteFile(FileHandle file, const void* buffer, size_t size);
-//! \brief Wraps ReadFD(), ensuring that exactly \a size bytes are read.
+//! \brief Wraps ReadFile(), ensuring that exactly \a size bytes are read.
//!
//! \return `true` on success. If \a size is out of the range of possible
-//! `read()` return values, if the underlying ReadFD() fails, or if other
-//! than \a size bytes were read, this function logs a message and returns
-//! `false`.
+//! ReadFile() return values, if the underlying ReadFile() fails, or if
+//! other than \a size bytes were read, this function logs a message and
+//! returns `false`.
//!
-//! \sa LoggingWriteFD
-//! \sa ReadFD
-//! \sa CheckedReadFD
-//! \sa CheckedReadFDAtEOF
-bool LoggingReadFD(int fd, void* buffer, size_t size);
+//! \sa LoggingWriteFile
+//! \sa ReadFile
+//! \sa CheckedReadFile
+//! \sa CheckedReadFileAtEOF
+bool LoggingReadFile(FileHandle file, void* buffer, size_t size);
-//! \brief Wraps WriteFD(), ensuring that exactly \a size bytes are written.
+//! \brief Wraps WriteFile(), ensuring that exactly \a size bytes are written.
//!
//! \return `true` on success. If \a size is out of the range of possible
-//! `write()` return values, if the underlying WriteFD() fails, or if other
-//! than \a size bytes were written, this function logs a message and
+//! WriteFile() return values, if the underlying WriteFile() fails, or if
+//! other than \a size bytes were written, this function logs a message and
//! returns `false`.
//!
-//! \sa LoggingReadFD
-//! \sa WriteFD
-//! \sa CheckedWriteFD
-bool LoggingWriteFD(int fd, const void* buffer, size_t size);
+//! \sa LoggingReadFile
+//! \sa WriteFile
+//! \sa CheckedWriteFile
+bool LoggingWriteFile(FileHandle file, const void* buffer, size_t size);
-//! \brief Wraps ReadFD(), ensuring that exactly \a size bytes are read.
+//! \brief Wraps ReadFile(), ensuring that exactly \a size bytes are read.
//!
-//! If \a size is out of the range of possible `read()` return values, if the
-//! underlying ReadFD() fails, or if other than \a size bytes were read, this
+//! If \a size is out of the range of possible ReadFile() return values, if the
+//! underlying ReadFile() fails, or if other than \a size bytes were read, this
//! function causes execution to terminate without returning.
//!
-//! \sa CheckedWriteFD
-//! \sa ReadFD
-//! \sa LoggingReadFD
-//! \sa CheckedReadFDAtEOF
-void CheckedReadFD(int fd, void* buffer, size_t size);
+//! \sa CheckedWriteFile
+//! \sa ReadFile
+//! \sa LoggingReadFile
+//! \sa CheckedReadFileAtEOF
+void CheckedReadFile(FileHandle file, void* buffer, size_t size);
-//! \brief Wraps WriteFD(), ensuring that exactly \a size bytes are written.
+//! \brief Wraps WriteFile(), ensuring that exactly \a size bytes are written.
//!
-//! If \a size is out of the range of possible `write()` return values, if the
-//! underlying WriteFD() fails, or if other than \a size bytes were written,
+//! If \a size is out of the range of possible WriteFile() return values, if the
+//! underlying WriteFile() fails, or if other than \a size bytes were written,
//! this function causes execution to terminate without returning.
//!
-//! \sa CheckedReadFD
-//! \sa WriteFD
-//! \sa LoggingWriteFD
-void CheckedWriteFD(int fd, const void* buffer, size_t size);
+//! \sa CheckedReadFile
+//! \sa WriteFile
+//! \sa LoggingWriteFile
+void CheckedWriteFile(FileHandle file, const void* buffer, size_t size);
-//! \brief Wraps ReadFD(), ensuring that it indicates end-of-file.
+//! \brief Wraps ReadFile(), ensuring that it indicates end-of-file.
//!
-//! Attempts to read a single byte from \a fd, expecting no data to be read. If
-//! the underlying ReadFD() fails, or if a byte actually is read, this function
-//! causes execution to terminate without returning.
+//! Attempts to read a single byte from \a file, expecting no data to be read.
+//! If the underlying ReadFile() fails, or if a byte actually is read, this
+//! function causes execution to terminate without returning.
//!
-//! \sa CheckedReadFD
-//! \sa ReadFD
-void CheckedReadFDAtEOF(int fd);
+//! \sa CheckedReadFile
+//! \sa ReadFile
+void CheckedReadFileAtEOF(FileHandle file);
-//! \brief Wraps `close()`, logging an error if the operation fails.
+//! \brief Wraps `close()` or `CloseHandle()`, logging an error if the operation
+//! fails.
//!
//! \return On success, `true` is returned. On failure, an error is logged and
//! `false` is returned.
-bool LoggingCloseFD(int fd);
+bool LoggingCloseFile(FileHandle file);
-//! \brief Wraps `close()`, ensuring that it succeeds.
+//! \brief Wraps `close()` or `CloseHandle()`, ensuring that it succeeds.
//!
-//! If `close()` fails, this function causes execution to terminate without
-//! returning.
-void CheckedCloseFD(int fd);
+//! If the underlying function fails, this function causes execution to
+//! terminate without returning.
+void CheckedCloseFile(FileHandle file);
} // namespace crashpad
-#endif // CRASHPAD_UTIL_FILE_FD_IO_H_
+#endif // CRASHPAD_UTIL_FILE_FILE_IO_H_
« no previous file with comments | « util/file/fd_io.cc ('k') | util/file/file_io.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698