| Index: chrome/browser/chromeos/system/udev_info_provider.cc
|
| diff --git a/chrome/browser/chromeos/system/udev_info_provider.cc b/chrome/browser/chromeos/system/udev_info_provider.cc
|
| index 92a30a76319c3f41558b2cd6a92c3796a2212684..bef292510e22466730beee9f397d78a952ae0b58 100644
|
| --- a/chrome/browser/chromeos/system/udev_info_provider.cc
|
| +++ b/chrome/browser/chromeos/system/udev_info_provider.cc
|
| @@ -21,11 +21,10 @@ namespace {
|
|
|
| // Absolute path of the udevadm tool.
|
| const char kUdevadmToolPath[] = "/sbin/udevadm";
|
| -// Args to pass to udevadm (followed by the device path).
|
| -const char* kUdevadmToolArgs[] = { "info", "--query=property", "--path" };
|
| // Key-value separator and string delimiter in output of "udevadm info".
|
| const char kUdevadmEq[] = "=";
|
| const char kUdevadmDelim[] = "\n";
|
| +const char kUdevadmCommentDelim[] = "";
|
|
|
| } // namespace
|
|
|
| @@ -52,28 +51,23 @@ bool UdevInfoProviderImpl::QueryDeviceProperty(const std::string& sys_path,
|
| std::string* result) const {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
|
|
| - FilePath udevadm_path(kUdevadmToolPath);
|
| - CommandLine cmd_line(udevadm_path);
|
| -
|
| - // TODO(ivankr): manually appending switches with AppendArg is a workaround
|
| - // to pass "info" argument before switches like "--path" (CommandLine forces
|
| - // arguments after switches).
|
| - for (size_t i = 0; i < arraysize(kUdevadmToolArgs); ++i)
|
| - cmd_line.AppendArg(kUdevadmToolArgs[i]);
|
| - cmd_line.AppendArg(sys_path);
|
| -
|
| - std::string output_string;
|
| - if (!base::GetAppOutput(cmd_line, &output_string)) {
|
| - LOG(ERROR) << "Error executing: " << cmd_line.GetCommandLineString();
|
| - return false;
|
| - }
|
| - TrimWhitespaceASCII(output_string, TRIM_ALL, &output_string);
|
| + const char* kUdevadmTool[] = {
|
| + kUdevadmToolPath,
|
| + "info",
|
| + "--query=property",
|
| + "--path",
|
| + sys_path.c_str(),
|
| + };
|
|
|
| NameValuePairsParser::NameValueMap device_info;
|
| NameValuePairsParser parser(&device_info);
|
|
|
| - if (!parser.ParseNameValuePairs(output_string, kUdevadmEq, kUdevadmDelim))
|
| - return false;
|
| + if (!parser.ParseNameValuePairsFromTool(
|
| + arraysize(kUdevadmTool), kUdevadmTool, kUdevadmEq,
|
| + kUdevadmDelim, kUdevadmCommentDelim)) {
|
| + LOG(WARNING) << "There were errors parsing the output of "
|
| + << kUdevadmToolPath << ".";
|
| + }
|
|
|
| NameValuePairsParser::NameValueMap::const_iterator it =
|
| device_info.find(property_name);
|
|
|