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

Unified Diff: base/platform_file_posix.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.h ('k') | base/platform_file_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/platform_file_posix.cc
diff --git a/base/platform_file_posix.cc b/base/platform_file_posix.cc
index fa8fc6234bed42d150b493d7e46f6fb58cc49e39..94184ab3e6eef16f3f5eadea4f4ecf93118e9ac4 100644
--- a/base/platform_file_posix.cc
+++ b/base/platform_file_posix.cc
@@ -122,39 +122,8 @@ PlatformFile CreatePlatformFileUnsafe(const FilePath& name,
if (error) {
if (descriptor >= 0)
*error = PLATFORM_FILE_OK;
- else {
- switch (errno) {
- case EACCES:
- case EISDIR:
- case EROFS:
- case EPERM:
- *error = PLATFORM_FILE_ERROR_ACCESS_DENIED;
- break;
- case ETXTBSY:
- *error = PLATFORM_FILE_ERROR_IN_USE;
- break;
- case EEXIST:
- *error = PLATFORM_FILE_ERROR_EXISTS;
- break;
- case ENOENT:
- *error = PLATFORM_FILE_ERROR_NOT_FOUND;
- break;
- case EMFILE:
- *error = PLATFORM_FILE_ERROR_TOO_MANY_OPENED;
- break;
- case ENOMEM:
- *error = PLATFORM_FILE_ERROR_NO_MEMORY;
- break;
- case ENOSPC:
- *error = PLATFORM_FILE_ERROR_NO_SPACE;
- break;
- case ENOTDIR:
- *error = PLATFORM_FILE_ERROR_NOT_A_DIRECTORY;
- break;
- default:
- *error = PLATFORM_FILE_ERROR_FAILED;
- }
- }
+ else
+ *error = ErrnoToPlatformFileError(errno);
}
return descriptor;
@@ -335,4 +304,30 @@ bool GetPlatformFileInfo(PlatformFile file, PlatformFileInfo* info) {
return true;
}
+PlatformFileError ErrnoToPlatformFileError(int saved_errno) {
+ switch (saved_errno) {
+ case EACCES:
+ case EISDIR:
+ case EROFS:
+ case EPERM:
+ return PLATFORM_FILE_ERROR_ACCESS_DENIED;
+ case ETXTBSY:
+ return PLATFORM_FILE_ERROR_IN_USE;
+ case EEXIST:
+ return PLATFORM_FILE_ERROR_EXISTS;
+ case ENOENT:
+ return PLATFORM_FILE_ERROR_NOT_FOUND;
+ case EMFILE:
+ return PLATFORM_FILE_ERROR_TOO_MANY_OPENED;
+ case ENOMEM:
+ return PLATFORM_FILE_ERROR_NO_MEMORY;
+ case ENOSPC:
+ return PLATFORM_FILE_ERROR_NO_SPACE;
+ case ENOTDIR:
+ return PLATFORM_FILE_ERROR_NOT_A_DIRECTORY;
+ default:
+ return PLATFORM_FILE_ERROR_FAILED;
+ }
+}
+
} // namespace base
« no previous file with comments | « base/platform_file.h ('k') | base/platform_file_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698