Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(393)

Unified Diff: base/platform_file_win.cc

Issue 14886003: Make base:ReplaceFile return an informative error. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ToT Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/platform_file_posix.cc ('k') | third_party/leveldatabase/env_chromium.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/platform_file_win.cc
diff --git a/base/platform_file_win.cc b/base/platform_file_win.cc
index 2d25d3327c45bcfe53c5059be9b7105d4f2dc85e..6d4440245601bdecfaba17f2bee1feb50b44a078 100644
--- a/base/platform_file_win.cc
+++ b/base/platform_file_win.cc
@@ -90,51 +90,8 @@ PlatformFile CreatePlatformFileUnsafe(const FilePath& name,
if (error) {
if (file != kInvalidPlatformFileValue)
*error = PLATFORM_FILE_OK;
- else {
- DWORD last_error = GetLastError();
- switch (last_error) {
- case ERROR_SHARING_VIOLATION:
- *error = PLATFORM_FILE_ERROR_IN_USE;
- break;
- case ERROR_FILE_EXISTS:
- *error = PLATFORM_FILE_ERROR_EXISTS;
- break;
- case ERROR_FILE_NOT_FOUND:
- case ERROR_PATH_NOT_FOUND:
- *error = PLATFORM_FILE_ERROR_NOT_FOUND;
- break;
- case ERROR_ACCESS_DENIED:
- *error = PLATFORM_FILE_ERROR_ACCESS_DENIED;
- break;
- case ERROR_TOO_MANY_OPEN_FILES:
- *error = PLATFORM_FILE_ERROR_TOO_MANY_OPENED;
- break;
- case ERROR_OUTOFMEMORY:
- case ERROR_NOT_ENOUGH_MEMORY:
- *error = PLATFORM_FILE_ERROR_NO_MEMORY;
- break;
- case ERROR_HANDLE_DISK_FULL:
- case ERROR_DISK_FULL:
- case ERROR_DISK_RESOURCES_EXHAUSTED:
- *error = PLATFORM_FILE_ERROR_NO_SPACE;
- break;
- case ERROR_USER_MAPPED_FILE:
- *error = PLATFORM_FILE_ERROR_INVALID_OPERATION;
- break;
- case ERROR_NOT_READY:
- case ERROR_SECTOR_NOT_FOUND:
- case ERROR_DEV_NOT_EXIST:
- case ERROR_IO_DEVICE:
- case ERROR_FILE_CORRUPT:
- case ERROR_DISK_CORRUPT:
- *error = PLATFORM_FILE_ERROR_IO;
- break;
- default:
- UMA_HISTOGRAM_SPARSE_SLOWLY("PlatformFile.UnknownCreateFileErrors",
- last_error);
- *error = PLATFORM_FILE_ERROR_FAILED;
- }
- }
+ else
+ *error = LastErrorToPlatformFileError(GetLastError());
}
return file;
@@ -299,4 +256,40 @@ bool GetPlatformFileInfo(PlatformFile file, PlatformFileInfo* info) {
return true;
}
+PlatformFileError LastErrorToPlatformFileError(DWORD last_error) {
+ switch (last_error) {
+ case ERROR_SHARING_VIOLATION:
+ return PLATFORM_FILE_ERROR_IN_USE;
+ case ERROR_FILE_EXISTS:
+ return PLATFORM_FILE_ERROR_EXISTS;
+ case ERROR_FILE_NOT_FOUND:
+ case ERROR_PATH_NOT_FOUND:
+ return PLATFORM_FILE_ERROR_NOT_FOUND;
+ case ERROR_ACCESS_DENIED:
+ return PLATFORM_FILE_ERROR_ACCESS_DENIED;
+ case ERROR_TOO_MANY_OPEN_FILES:
+ return PLATFORM_FILE_ERROR_TOO_MANY_OPENED;
+ case ERROR_OUTOFMEMORY:
+ case ERROR_NOT_ENOUGH_MEMORY:
+ return PLATFORM_FILE_ERROR_NO_MEMORY;
+ case ERROR_HANDLE_DISK_FULL:
+ case ERROR_DISK_FULL:
+ case ERROR_DISK_RESOURCES_EXHAUSTED:
+ return PLATFORM_FILE_ERROR_NO_SPACE;
+ case ERROR_USER_MAPPED_FILE:
+ return PLATFORM_FILE_ERROR_INVALID_OPERATION;
+ case ERROR_NOT_READY:
+ case ERROR_SECTOR_NOT_FOUND:
+ case ERROR_DEV_NOT_EXIST:
+ case ERROR_IO_DEVICE:
+ case ERROR_FILE_CORRUPT:
+ case ERROR_DISK_CORRUPT:
+ return PLATFORM_FILE_ERROR_IO;
+ default:
+ UMA_HISTOGRAM_SPARSE_SLOWLY("PlatformFile.UnknownCreateFileErrors",
+ last_error);
+ return PLATFORM_FILE_ERROR_FAILED;
+ }
+}
+
} // namespace base
« no previous file with comments | « base/platform_file_posix.cc ('k') | third_party/leveldatabase/env_chromium.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698