OLD | NEW |
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 | 60 |
61 //! \brief Platform-specific alias for a position in an open file. | 61 //! \brief Platform-specific alias for a position in an open file. |
62 using FileOffset = off_t; | 62 using FileOffset = off_t; |
63 | 63 |
64 //! \brief Scoped wrapper of a FileHandle. | 64 //! \brief Scoped wrapper of a FileHandle. |
65 using ScopedFileHandle = base::ScopedFD; | 65 using ScopedFileHandle = base::ScopedFD; |
66 | 66 |
67 //! \brief A value that can never be a valid FileHandle. | 67 //! \brief A value that can never be a valid FileHandle. |
68 const FileHandle kInvalidFileHandle = -1; | 68 const FileHandle kInvalidFileHandle = -1; |
69 | 69 |
| 70 using FileOperationResult = ssize_t; |
| 71 |
70 #elif defined(OS_WIN) | 72 #elif defined(OS_WIN) |
71 | 73 |
72 using FileHandle = HANDLE; | 74 using FileHandle = HANDLE; |
73 using FileOffset = LONGLONG; | 75 using FileOffset = LONGLONG; |
74 using ScopedFileHandle = ScopedFileHANDLE; | 76 using ScopedFileHandle = ScopedFileHANDLE; |
| 77 using FileOperationResult = LONG_PTR; |
75 | 78 |
76 const FileHandle kInvalidFileHandle = INVALID_HANDLE_VALUE; | 79 const FileHandle kInvalidFileHandle = INVALID_HANDLE_VALUE; |
77 | 80 |
78 #endif | 81 #endif |
79 | 82 |
80 //! \brief Determines the mode that LoggingOpenFileForWrite() uses. | 83 //! \brief Determines the mode that LoggingOpenFileForWrite() uses. |
81 enum class FileWriteMode { | 84 enum class FileWriteMode { |
82 //! \brief Opens the file if it exists, or fails if it does not. | 85 //! \brief Opens the file if it exists, or fails if it does not. |
83 kReuseOrFail, | 86 kReuseOrFail, |
84 | 87 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 //! sockets is not currently supported. | 122 //! sockets is not currently supported. |
120 //! | 123 //! |
121 //! \return The number of bytes read and placed into \a buffer, or `-1` on | 124 //! \return The number of bytes read and placed into \a buffer, or `-1` on |
122 //! error, with `errno` or `GetLastError()` set appropriately. On error, a | 125 //! error, with `errno` or `GetLastError()` set appropriately. On error, a |
123 //! portion of \a file may have been read into \a buffer. | 126 //! portion of \a file may have been read into \a buffer. |
124 //! | 127 //! |
125 //! \sa WriteFile | 128 //! \sa WriteFile |
126 //! \sa LoggingReadFile | 129 //! \sa LoggingReadFile |
127 //! \sa CheckedReadFile | 130 //! \sa CheckedReadFile |
128 //! \sa CheckedReadFileAtEOF | 131 //! \sa CheckedReadFileAtEOF |
129 ssize_t ReadFile(FileHandle file, void* buffer, size_t size); | 132 FileOperationResult ReadFile(FileHandle file, void* buffer, size_t size); |
130 | 133 |
131 //! \brief Writes to a file, retrying when interrupted or following a short | 134 //! \brief Writes to a file, retrying when interrupted or following a short |
132 //! write on POSIX. | 135 //! write on POSIX. |
133 //! | 136 //! |
134 //! This function writes to \a file, stopping only when \a size bytes have been | 137 //! This function writes to \a file, stopping only when \a size bytes have been |
135 //! written. | 138 //! written. |
136 //! | 139 //! |
137 //! \return The number of bytes written from \a buffer, or `-1` on error, with | 140 //! \return The number of bytes written from \a buffer, or `-1` on error, with |
138 //! `errno` or `GetLastError()` set appropriately. On error, a portion of | 141 //! `errno` or `GetLastError()` set appropriately. On error, a portion of |
139 //! \a buffer may have been written to \a file. | 142 //! \a buffer may have been written to \a file. |
140 //! | 143 //! |
141 //! \sa ReadFile | 144 //! \sa ReadFile |
142 //! \sa LoggingWriteFile | 145 //! \sa LoggingWriteFile |
143 //! \sa CheckedWriteFile | 146 //! \sa CheckedWriteFile |
144 ssize_t WriteFile(FileHandle file, const void* buffer, size_t size); | 147 FileOperationResult WriteFile(FileHandle file, const void* buffer, size_t size); |
145 | 148 |
146 //! \brief Wraps ReadFile(), ensuring that exactly \a size bytes are read. | 149 //! \brief Wraps ReadFile(), ensuring that exactly \a size bytes are read. |
147 //! | 150 //! |
148 //! \return `true` on success. If \a size is out of the range of possible | 151 //! \return `true` on success. If \a size is out of the range of possible |
149 //! ReadFile() return values, if the underlying ReadFile() fails, or if | 152 //! ReadFile() return values, if the underlying ReadFile() fails, or if |
150 //! other than \a size bytes were read, this function logs a message and | 153 //! other than \a size bytes were read, this function logs a message and |
151 //! returns `false`. | 154 //! returns `false`. |
152 //! | 155 //! |
153 //! \sa LoggingWriteFile | 156 //! \sa LoggingWriteFile |
154 //! \sa ReadFile | 157 //! \sa ReadFile |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 | 338 |
336 //! \brief Wraps `close()` or `CloseHandle()`, ensuring that it succeeds. | 339 //! \brief Wraps `close()` or `CloseHandle()`, ensuring that it succeeds. |
337 //! | 340 //! |
338 //! If the underlying function fails, this function causes execution to | 341 //! If the underlying function fails, this function causes execution to |
339 //! terminate without returning. | 342 //! terminate without returning. |
340 void CheckedCloseFile(FileHandle file); | 343 void CheckedCloseFile(FileHandle file); |
341 | 344 |
342 } // namespace crashpad | 345 } // namespace crashpad |
343 | 346 |
344 #endif // CRASHPAD_UTIL_FILE_FILE_IO_H_ | 347 #endif // CRASHPAD_UTIL_FILE_FILE_IO_H_ |
OLD | NEW |