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>();