Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/platform_file.h" | 5 #include "base/platform_file.h" |
| 6 | 6 |
| 7 #include <io.h> | 7 #include <io.h> |
| 8 | 8 |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 79 if (flags & PLATFORM_FILE_HIDDEN) | 79 if (flags & PLATFORM_FILE_HIDDEN) |
| 80 create_flags |= FILE_ATTRIBUTE_HIDDEN; | 80 create_flags |= FILE_ATTRIBUTE_HIDDEN; |
| 81 if (flags & PLATFORM_FILE_DELETE_ON_CLOSE) | 81 if (flags & PLATFORM_FILE_DELETE_ON_CLOSE) |
| 82 create_flags |= FILE_FLAG_DELETE_ON_CLOSE; | 82 create_flags |= FILE_FLAG_DELETE_ON_CLOSE; |
| 83 if (flags & PLATFORM_FILE_BACKUP_SEMANTICS) | 83 if (flags & PLATFORM_FILE_BACKUP_SEMANTICS) |
| 84 create_flags |= FILE_FLAG_BACKUP_SEMANTICS; | 84 create_flags |= FILE_FLAG_BACKUP_SEMANTICS; |
| 85 | 85 |
| 86 HANDLE file = CreateFile(name.value().c_str(), access, sharing, NULL, | 86 HANDLE file = CreateFile(name.value().c_str(), access, sharing, NULL, |
| 87 disposition, create_flags, NULL); | 87 disposition, create_flags, NULL); |
| 88 | 88 |
| 89 if (INVALID_HANDLE_VALUE != file){ | |
|
Peter Kasting
2014/03/14 02:23:10
Drive-by: Please write (file != INVALID_HANDLE_VAL
| |
| 90 // Don't allow directories to be opened without the proper flag (block ADS). | |
| 91 if (!(flags & PLATFORM_FILE_BACKUP_SEMANTICS)) { | |
| 92 BY_HANDLE_FILE_INFORMATION info = { 0 }; | |
| 93 DCHECK(GetFileInformationByHandle(file, &info)); | |
|
Peter Kasting
2014/03/14 02:23:10
Never do real work in a DCHECK. In non-DCHECK bui
| |
| 94 if (info.dwFileAttributes & (FILE_ATTRIBUTE_DIRECTORY | | |
| 95 FILE_ATTRIBUTE_REPARSE_POINT)) { | |
| 96 CloseHandle(file); | |
| 97 file = INVALID_HANDLE_VALUE; | |
| 98 } | |
| 99 } | |
| 100 } | |
| 101 | |
| 89 if (created && (INVALID_HANDLE_VALUE != file)) { | 102 if (created && (INVALID_HANDLE_VALUE != file)) { |
| 90 if (flags & (PLATFORM_FILE_OPEN_ALWAYS)) | 103 if (flags & (PLATFORM_FILE_OPEN_ALWAYS)) |
| 91 *created = (ERROR_ALREADY_EXISTS != GetLastError()); | 104 *created = (ERROR_ALREADY_EXISTS != GetLastError()); |
| 92 else if (flags & (PLATFORM_FILE_CREATE_ALWAYS | PLATFORM_FILE_CREATE)) | 105 else if (flags & (PLATFORM_FILE_CREATE_ALWAYS | PLATFORM_FILE_CREATE)) |
| 93 *created = true; | 106 *created = true; |
| 94 } | 107 } |
| 95 | 108 |
| 96 if (error) { | 109 if (error) { |
| 97 if (file != kInvalidPlatformFileValue) | 110 if (file != kInvalidPlatformFileValue) |
| 98 *error = PLATFORM_FILE_OK; | 111 *error = PLATFORM_FILE_OK; |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 316 case ERROR_DISK_CORRUPT: | 329 case ERROR_DISK_CORRUPT: |
| 317 return PLATFORM_FILE_ERROR_IO; | 330 return PLATFORM_FILE_ERROR_IO; |
| 318 default: | 331 default: |
| 319 UMA_HISTOGRAM_SPARSE_SLOWLY("PlatformFile.UnknownErrors.Windows", | 332 UMA_HISTOGRAM_SPARSE_SLOWLY("PlatformFile.UnknownErrors.Windows", |
| 320 last_error); | 333 last_error); |
| 321 return PLATFORM_FILE_ERROR_FAILED; | 334 return PLATFORM_FILE_ERROR_FAILED; |
| 322 } | 335 } |
| 323 } | 336 } |
| 324 | 337 |
| 325 } // namespace base | 338 } // namespace base |
| OLD | NEW |