diff options
Diffstat (limited to 'third_party/leveldatabase')
-rw-r--r-- | third_party/leveldatabase/env_chromium.cc | 13 | ||||
-rw-r--r-- | third_party/leveldatabase/env_chromium.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc index f36d691..9cba729 100644 --- a/third_party/leveldatabase/env_chromium.cc +++ b/third_party/leveldatabase/env_chromium.cc @@ -379,6 +379,19 @@ ErrorParsingResult ParseMethodAndError(const char* string, return NONE; } +bool IndicatesDiskFull(leveldb::Status status) { + if (status.ok()) + return false; + leveldb_env::MethodID method; + int error = -1; + leveldb_env::ErrorParsingResult result = leveldb_env::ParseMethodAndError( + status.ToString().c_str(), &method, &error); + return (result == leveldb_env::METHOD_AND_PFE && + static_cast<base::PlatformFileError>(error) == + base::PLATFORM_FILE_ERROR_NO_SPACE) || + (result == leveldb_env::METHOD_AND_ERRNO && error == ENOSPC); +} + std::string FilePathToString(const base::FilePath& file_path) { #if defined(OS_WIN) return UTF16ToUTF8(file_path.value()); diff --git a/third_party/leveldatabase/env_chromium.h b/third_party/leveldatabase/env_chromium.h index 168d180..e84fad7 100644 --- a/third_party/leveldatabase/env_chromium.h +++ b/third_party/leveldatabase/env_chromium.h @@ -65,6 +65,7 @@ enum ErrorParsingResult { ErrorParsingResult ParseMethodAndError(const char* string, MethodID* method, int* error); +bool IndicatesDiskFull(leveldb::Status status); std::string FilePathToString(const base::FilePath& file_path); class UMALogger { |