libchromeos: Add standard system error support to chromeos::Error Added methods to obtain meaningful chromeos::Error values for standard system errors returned via errno from system APIs. Now it is easy to provide additional context error information when working with system APIs (such as file I/O) to report underlying reason for failures. BUG=None TEST=FEATURES=test emerge-test libchromeos buffet Change-Id: I762286ed998a9dad79b9ae1905443ba22e248caa Reviewed-on: https://chromium-review.googlesource.com/218568 Tested-by: Alex Vakulenko <avakulenko@chromium.org> Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/commands/command_manager.cc b/buffet/commands/command_manager.cc index db1b5e7..f43fc66 100644 --- a/buffet/commands/command_manager.cc +++ b/buffet/commands/command_manager.cc
@@ -16,6 +16,13 @@ using chromeos::dbus_utils::ExportedObjectManager; +namespace { + +const char kCommandManagerErrorDomain[] = "Buffet_CommandManager"; +const char kCommandManagerFileReadError[] = "file_read_error"; + +} // namespace + namespace buffet { CommandManager::CommandManager() { @@ -88,8 +95,9 @@ const base::FilePath& json_file_path, chromeos::ErrorPtr* error) { std::string json_string; if (!base::ReadFileToString(json_file_path, &json_string)) { - chromeos::Error::AddToPrintf(error, chromeos::errors::file_system::kDomain, - chromeos::errors::file_system::kFileReadError, + chromeos::errors::system::AddSystemError(error, errno); + chromeos::Error::AddToPrintf(error, kCommandManagerErrorDomain, + kCommandManagerFileReadError, "Failed to read file '%s'", json_file_path.value().c_str()); return std::unique_ptr<const base::DictionaryValue>();