Loading init/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -143,6 +143,7 @@ LOCAL_MODULE := init_tests LOCAL_SRC_FILES := \ devices_test.cpp \ init_parser_test.cpp \ init_test.cpp \ property_service_test.cpp \ util_test.cpp \ Loading @@ -154,7 +155,7 @@ LOCAL_SHARED_LIBRARIES += \ LOCAL_STATIC_LIBRARIES := libinit LOCAL_SANITIZE := integer LOCAL_CLANG := true LOCAL_CPPFLAGS := -Wall -Wextra -Werror LOCAL_CPPFLAGS := -Wall -Wextra -Werror -std=gnu++1z include $(BUILD_NATIVE_TEST) Loading init/action.cpp +4 −5 Original line number Diff line number Diff line Loading @@ -363,7 +363,7 @@ void ActionManager::DumpState() const { } } bool ActionParser::ParseSection(const std::vector<std::string>& args, const std::string& filename, bool ActionParser::ParseSection(std::vector<std::string>&& args, const std::string& filename, int line, std::string* err) { std::vector<std::string> triggers(args.begin() + 1, args.end()); if (triggers.size() < 1) { Loading @@ -380,13 +380,12 @@ bool ActionParser::ParseSection(const std::vector<std::string>& args, const std: return true; } bool ActionParser::ParseLineSection(const std::vector<std::string>& args, int line, std::string* err) { return action_ ? action_->AddCommand(args, line, err) : false; bool ActionParser::ParseLineSection(std::vector<std::string>&& args, int line, std::string* err) { return action_ ? action_->AddCommand(std::move(args), line, err) : false; } void ActionParser::EndSection() { if (action_ && action_->NumCommands() > 0) { ActionManager::GetInstance().AddAction(std::move(action_)); action_manager_->AddAction(std::move(action_)); } } init/action.h +10 −10 Original line number Diff line number Diff line Loading @@ -91,6 +91,9 @@ class ActionManager { public: static ActionManager& GetInstance(); // Exposed for testing ActionManager(); void AddAction(std::unique_ptr<Action> action); void QueueEventTrigger(const std::string& trigger); void QueuePropertyTrigger(const std::string& name, const std::string& value); Loading @@ -101,8 +104,6 @@ public: void DumpState() const; private: ActionManager(); ActionManager(ActionManager const&) = delete; void operator=(ActionManager const&) = delete; Loading @@ -114,16 +115,15 @@ private: class ActionParser : public SectionParser { public: ActionParser() : action_(nullptr) { } bool ParseSection(const std::vector<std::string>& args, const std::string& filename, int line, ActionParser(ActionManager* action_manager) : action_manager_(action_manager), action_(nullptr) {} bool ParseSection(std::vector<std::string>&& args, const std::string& filename, int line, std::string* err) override; bool ParseLineSection(const std::vector<std::string>& args, int line, std::string* err) override; bool ParseLineSection(std::vector<std::string>&& args, int line, std::string* err) override; void EndSection() override; void EndFile(const std::string&) override { } private: ActionManager* action_manager_; std::unique_ptr<Action> action_; }; Loading init/builtins.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -390,7 +390,7 @@ static void import_late(const std::vector<std::string>& args, size_t start_index // Turning this on and letting the INFO logging be discarded adds 0.2s to // Nexus 9 boot time, so it's disabled by default. if (false) parser.DumpState(); if (false) DumpState(); } /* mount_fstab Loading Loading @@ -838,7 +838,7 @@ static int do_init_user0(const std::vector<std::string>& args) { return e4crypt_do_init_user0(); } BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const { const BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const { constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max(); // clang-format off static const Map builtin_functions = { Loading init/builtins.h +7 −6 Original line number Diff line number Diff line Loading @@ -17,19 +17,20 @@ #ifndef _INIT_BUILTINS_H #define _INIT_BUILTINS_H #include <functional> #include <map> #include <string> #include <vector> #include "keyword_map.h" using BuiltinFunction = int (*) (const std::vector<std::string>& args); using BuiltinFunction = std::function<int(const std::vector<std::string>&)>; class BuiltinFunctionMap : public KeywordMap<BuiltinFunction> { public: BuiltinFunctionMap() { } BuiltinFunctionMap() {} private: Map& map() const override; const Map& map() const override; }; #endif Loading
init/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -143,6 +143,7 @@ LOCAL_MODULE := init_tests LOCAL_SRC_FILES := \ devices_test.cpp \ init_parser_test.cpp \ init_test.cpp \ property_service_test.cpp \ util_test.cpp \ Loading @@ -154,7 +155,7 @@ LOCAL_SHARED_LIBRARIES += \ LOCAL_STATIC_LIBRARIES := libinit LOCAL_SANITIZE := integer LOCAL_CLANG := true LOCAL_CPPFLAGS := -Wall -Wextra -Werror LOCAL_CPPFLAGS := -Wall -Wextra -Werror -std=gnu++1z include $(BUILD_NATIVE_TEST) Loading
init/action.cpp +4 −5 Original line number Diff line number Diff line Loading @@ -363,7 +363,7 @@ void ActionManager::DumpState() const { } } bool ActionParser::ParseSection(const std::vector<std::string>& args, const std::string& filename, bool ActionParser::ParseSection(std::vector<std::string>&& args, const std::string& filename, int line, std::string* err) { std::vector<std::string> triggers(args.begin() + 1, args.end()); if (triggers.size() < 1) { Loading @@ -380,13 +380,12 @@ bool ActionParser::ParseSection(const std::vector<std::string>& args, const std: return true; } bool ActionParser::ParseLineSection(const std::vector<std::string>& args, int line, std::string* err) { return action_ ? action_->AddCommand(args, line, err) : false; bool ActionParser::ParseLineSection(std::vector<std::string>&& args, int line, std::string* err) { return action_ ? action_->AddCommand(std::move(args), line, err) : false; } void ActionParser::EndSection() { if (action_ && action_->NumCommands() > 0) { ActionManager::GetInstance().AddAction(std::move(action_)); action_manager_->AddAction(std::move(action_)); } }
init/action.h +10 −10 Original line number Diff line number Diff line Loading @@ -91,6 +91,9 @@ class ActionManager { public: static ActionManager& GetInstance(); // Exposed for testing ActionManager(); void AddAction(std::unique_ptr<Action> action); void QueueEventTrigger(const std::string& trigger); void QueuePropertyTrigger(const std::string& name, const std::string& value); Loading @@ -101,8 +104,6 @@ public: void DumpState() const; private: ActionManager(); ActionManager(ActionManager const&) = delete; void operator=(ActionManager const&) = delete; Loading @@ -114,16 +115,15 @@ private: class ActionParser : public SectionParser { public: ActionParser() : action_(nullptr) { } bool ParseSection(const std::vector<std::string>& args, const std::string& filename, int line, ActionParser(ActionManager* action_manager) : action_manager_(action_manager), action_(nullptr) {} bool ParseSection(std::vector<std::string>&& args, const std::string& filename, int line, std::string* err) override; bool ParseLineSection(const std::vector<std::string>& args, int line, std::string* err) override; bool ParseLineSection(std::vector<std::string>&& args, int line, std::string* err) override; void EndSection() override; void EndFile(const std::string&) override { } private: ActionManager* action_manager_; std::unique_ptr<Action> action_; }; Loading
init/builtins.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -390,7 +390,7 @@ static void import_late(const std::vector<std::string>& args, size_t start_index // Turning this on and letting the INFO logging be discarded adds 0.2s to // Nexus 9 boot time, so it's disabled by default. if (false) parser.DumpState(); if (false) DumpState(); } /* mount_fstab Loading Loading @@ -838,7 +838,7 @@ static int do_init_user0(const std::vector<std::string>& args) { return e4crypt_do_init_user0(); } BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const { const BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const { constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max(); // clang-format off static const Map builtin_functions = { Loading
init/builtins.h +7 −6 Original line number Diff line number Diff line Loading @@ -17,19 +17,20 @@ #ifndef _INIT_BUILTINS_H #define _INIT_BUILTINS_H #include <functional> #include <map> #include <string> #include <vector> #include "keyword_map.h" using BuiltinFunction = int (*) (const std::vector<std::string>& args); using BuiltinFunction = std::function<int(const std::vector<std::string>&)>; class BuiltinFunctionMap : public KeywordMap<BuiltinFunction> { public: BuiltinFunctionMap() { } BuiltinFunctionMap() {} private: Map& map() const override; const Map& map() const override; }; #endif