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 |