Chromium Code Reviews| 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 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 95 case FileWriteMode::kReuseOrCreate: | 95 case FileWriteMode::kReuseOrCreate: |
| 96 disposition = OPEN_ALWAYS; | 96 disposition = OPEN_ALWAYS; |
| 97 break; | 97 break; |
| 98 case FileWriteMode::kTruncateOrCreate: | 98 case FileWriteMode::kTruncateOrCreate: |
| 99 disposition = CREATE_ALWAYS; | 99 disposition = CREATE_ALWAYS; |
| 100 break; | 100 break; |
| 101 case FileWriteMode::kCreateOrFail: | 101 case FileWriteMode::kCreateOrFail: |
| 102 disposition = CREATE_NEW; | 102 disposition = CREATE_NEW; |
| 103 break; | 103 break; |
| 104 } | 104 } |
| 105 HANDLE file = CreateFile(path.value().c_str(), GENERIC_WRITE, 0, nullptr, | 105 HANDLE file = CreateFile(path.value().c_str(), |
| 106 disposition, FILE_ATTRIBUTE_NORMAL, nullptr); | 106 GENERIC_WRITE, |
| 107 FILE_SHARE_READ | FILE_SHARE_WRITE, | |
| 108 nullptr, | |
| 109 disposition, | |
| 110 FILE_ATTRIBUTE_NORMAL, | |
| 111 nullptr); | |
| 107 PLOG_IF(ERROR, file == INVALID_HANDLE_VALUE) << "CreateFile " | 112 PLOG_IF(ERROR, file == INVALID_HANDLE_VALUE) << "CreateFile " |
| 108 << path.value().c_str(); | 113 << path.value().c_str(); |
| 109 return file; | 114 return file; |
| 110 } | 115 } |
| 111 | 116 |
| 117 bool LoggingLockFile(FileHandle file, FileLocking locking) { | |
| 118 DWORD flags = | |
| 119 locking == FileLocking::kExclusive ? LOCKFILE_EXCLUSIVE_LOCK : 0; | |
|
Robert Sesek
2015/03/12 15:28:03
nit: () around condition
scottmg
2015/03/19 22:06:20
Done.
| |
| 120 | |
| 121 // Note that the `Offset` fields of overlapped indicate the start location for | |
| 122 // locking (beginning of file in this case), and `hEvent` must be also be set | |
| 123 // to 0. | |
| 124 OVERLAPPED overlapped = {0}; | |
| 125 if (!LockFileEx(file, flags, 0, MAXDWORD, MAXDWORD, &overlapped)) { | |
| 126 PLOG(ERROR) << "LockFileEx"; | |
| 127 return false; | |
| 128 } | |
| 129 return true; | |
| 130 } | |
| 131 | |
| 132 bool LoggingUnlockFile(FileHandle file) { | |
| 133 // Note that the `Offset` fields of overlapped indicate the start location for | |
| 134 // locking (beginning of file in this case), and `hEvent` must be also be set | |
| 135 // to 0. | |
| 136 OVERLAPPED overlapped = {0}; | |
| 137 if (!UnlockFileEx(file, 0, MAXDWORD, MAXDWORD, &overlapped)) { | |
| 138 PLOG(ERROR) << "LockFileEx"; | |
| 139 return false; | |
| 140 } | |
| 141 return true; | |
| 142 } | |
| 143 | |
| 112 FileOffset LoggingSeekFile(FileHandle file, FileOffset offset, int whence) { | 144 FileOffset LoggingSeekFile(FileHandle file, FileOffset offset, int whence) { |
| 113 DWORD method = 0; | 145 DWORD method = 0; |
| 114 switch (whence) { | 146 switch (whence) { |
| 115 case SEEK_SET: | 147 case SEEK_SET: |
| 116 method = FILE_BEGIN; | 148 method = FILE_BEGIN; |
| 117 break; | 149 break; |
| 118 case SEEK_CUR: | 150 case SEEK_CUR: |
| 119 method = FILE_CURRENT; | 151 method = FILE_CURRENT; |
| 120 break; | 152 break; |
| 121 case SEEK_END: | 153 case SEEK_END: |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 137 return new_offset.QuadPart; | 169 return new_offset.QuadPart; |
| 138 } | 170 } |
| 139 | 171 |
| 140 bool LoggingCloseFile(FileHandle file) { | 172 bool LoggingCloseFile(FileHandle file) { |
| 141 BOOL rv = CloseHandle(file); | 173 BOOL rv = CloseHandle(file); |
| 142 PLOG_IF(ERROR, !rv) << "CloseHandle"; | 174 PLOG_IF(ERROR, !rv) << "CloseHandle"; |
| 143 return rv; | 175 return rv; |
| 144 } | 176 } |
| 145 | 177 |
| 146 } // namespace crashpad | 178 } // namespace crashpad |
| OLD | NEW |