summaryrefslogtreecommitdiff
path: root/init/service_parser.h
diff options
context:
space:
mode:
authorDaniel Norman <danielnorman@google.com>2019-07-09 11:00:53 -0700
committerDaniel Norman <danielnorman@google.com>2019-07-11 14:43:11 -0700
commit3f42a767cd478de9cac764d91a2318d86f0671c2 (patch)
treee7b14913c9fc395def6e5c0f70a3df888aae716a /init/service_parser.h
parent6da50e319c159e276c6186b319c71b80a5d6998e (diff)
Checks the interface inheritance hierarchy in init_rc files.
Bug: 118016875 Test: Added 'interface' lines to an init_rc file and observed errors when misspelled or missing entire inheritance hierarchy. Change-Id: I681420f15539742d8415808b2a0dcbf0bf6faaf1
Diffstat (limited to 'init/service_parser.h')
-rw-r--r--init/service_parser.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/init/service_parser.h b/init/service_parser.h
index 5a1676803..5ad26ef6c 100644
--- a/init/service_parser.h
+++ b/init/service_parser.h
@@ -26,13 +26,16 @@
namespace android {
namespace init {
+using InterfaceInheritanceHierarchyMap = std::map<std::string, std::set<std::string>>;
+
class ServiceParser : public SectionParser {
public:
- ServiceParser(ServiceList* service_list, std::vector<Subcontext>* subcontexts,
- const std::optional<std::set<std::string>>& known_interfaces)
+ ServiceParser(
+ ServiceList* service_list, std::vector<Subcontext>* subcontexts,
+ const std::optional<InterfaceInheritanceHierarchyMap>& interface_inheritance_hierarchy)
: service_list_(service_list),
subcontexts_(subcontexts),
- known_interfaces_(known_interfaces),
+ interface_inheritance_hierarchy_(interface_inheritance_hierarchy),
service_(nullptr) {}
Result<void> ParseSection(std::vector<std::string>&& args, const std::string& filename,
int line) override;
@@ -85,7 +88,7 @@ class ServiceParser : public SectionParser {
ServiceList* service_list_;
std::vector<Subcontext>* subcontexts_;
- std::optional<std::set<std::string>> known_interfaces_;
+ std::optional<InterfaceInheritanceHierarchyMap> interface_inheritance_hierarchy_;
std::unique_ptr<Service> service_;
std::string filename_;
};