ueventd: fix extraneous 'Invalid section' error
When adding a new error case for host_init_parser, I didn't handle the individual line callbacks used for ueventd correctly. This change fixes that. Test: bullhead boots without extraneous ueventd warnings Change-Id: I56cad854b0defd936a7fbcab73fe2f2963c0e2e4
This commit is contained in:
parent
ae74e42d25
commit
d5d626c9f7
1 changed files with 11 additions and 11 deletions
|
@ -70,24 +70,23 @@ void Parser::ParseData(const std::string& filename, const std::string& data) {
|
|||
case T_EOF:
|
||||
end_section();
|
||||
return;
|
||||
case T_NEWLINE:
|
||||
case T_NEWLINE: {
|
||||
state.line++;
|
||||
if (args.empty()) break;
|
||||
// If we have a line matching a prefix we recognize, call its callback and unset any
|
||||
// current section parsers. This is meant for /sys/ and /dev/ line entries for
|
||||
// uevent.
|
||||
for (const auto& [prefix, callback] : line_callbacks_) {
|
||||
if (android::base::StartsWith(args[0], prefix)) {
|
||||
end_section();
|
||||
auto line_callback = std::find_if(
|
||||
line_callbacks_.begin(), line_callbacks_.end(),
|
||||
[&args](const auto& c) { return android::base::StartsWith(args[0], c.first); });
|
||||
if (line_callback != line_callbacks_.end()) {
|
||||
end_section();
|
||||
|
||||
if (auto result = callback(std::move(args)); !result) {
|
||||
parse_error_count_++;
|
||||
LOG(ERROR) << filename << ": " << state.line << ": " << result.error();
|
||||
}
|
||||
break;
|
||||
if (auto result = line_callback->second(std::move(args)); !result) {
|
||||
parse_error_count_++;
|
||||
LOG(ERROR) << filename << ": " << state.line << ": " << result.error();
|
||||
}
|
||||
}
|
||||
if (section_parsers_.count(args[0])) {
|
||||
} else if (section_parsers_.count(args[0])) {
|
||||
end_section();
|
||||
section_parser = section_parsers_[args[0]].get();
|
||||
section_start_line = state.line;
|
||||
|
@ -111,6 +110,7 @@ void Parser::ParseData(const std::string& filename, const std::string& data) {
|
|||
}
|
||||
args.clear();
|
||||
break;
|
||||
}
|
||||
case T_TEXT:
|
||||
args.emplace_back(state.text);
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue