Chromium Code Reviews| 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_ |