Loading init/action.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -80,17 +80,20 @@ Action::Action(bool oneshot, Subcontext* subcontext, const std::string& filename filename_(filename), line_(line) {} const KeywordFunctionMap* Action::function_map_ = nullptr; const BuiltinFunctionMap* Action::function_map_ = nullptr; Result<void> Action::AddCommand(std::vector<std::string>&& args, int line) { if (!function_map_) { return Error() << "no function map available"; } auto function = function_map_->FindFunction(args); if (!function) return Error() << function.error(); auto map_result = function_map_->Find(args); if (!map_result) { return Error() << map_result.error(); } commands_.emplace_back(function->second, function->first, std::move(args), line); commands_.emplace_back(map_result->function, map_result->run_in_subcontext, std::move(args), line); return {}; } Loading init/action.h +2 −2 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ class Action { bool oneshot() const { return oneshot_; } const std::string& filename() const { return filename_; } int line() const { return line_; } static void set_function_map(const KeywordFunctionMap* function_map) { static void set_function_map(const BuiltinFunctionMap* function_map) { function_map_ = function_map; } Loading @@ -91,7 +91,7 @@ class Action { Subcontext* subcontext_; std::string filename_; int line_; static const KeywordFunctionMap* function_map_; static const BuiltinFunctionMap* function_map_; }; } // namespace init Loading init/builtins.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -1152,10 +1152,10 @@ static Result<void> do_enter_default_mount_ns(const BuiltinArguments& args) { } // Builtin-function-map start const BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const { const BuiltinFunctionMap& GetBuiltinFunctionMap() { constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max(); // clang-format off static const Map builtin_functions = { static const BuiltinFunctionMap builtin_functions = { {"bootchart", {1, 1, {false, do_bootchart}}}, {"chmod", {2, 2, {true, do_chmod}}}, {"chown", {2, 3, {true, do_chown}}}, Loading init/builtins.h +8 −11 Original line number Diff line number Diff line Loading @@ -14,8 +14,7 @@ * limitations under the License. */ #ifndef _INIT_BUILTINS_H #define _INIT_BUILTINS_H #pragma once #include <functional> #include <map> Loading @@ -31,18 +30,16 @@ namespace init { using BuiltinFunction = std::function<Result<void>(const BuiltinArguments&)>; using KeywordFunctionMap = KeywordMap<std::pair<bool, BuiltinFunction>>; class BuiltinFunctionMap : public KeywordFunctionMap { public: BuiltinFunctionMap() {} private: const Map& map() const override; struct BuiltinFunctionMapValue { bool run_in_subcontext; BuiltinFunction function; }; using BuiltinFunctionMap = KeywordMap<BuiltinFunctionMapValue>; const BuiltinFunctionMap& GetBuiltinFunctionMap(); extern std::vector<std::string> late_import_paths; } // namespace init } // namespace android #endif init/host_init_verifier.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ int main(int argc, char** argv) { return EXIT_FAILURE; } const BuiltinFunctionMap function_map; const BuiltinFunctionMap& function_map = GetBuiltinFunctionMap(); Action::set_function_map(&function_map); ActionManager& am = ActionManager::GetInstance(); ServiceList& sl = ServiceList::GetInstance(); Loading Loading
init/action.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -80,17 +80,20 @@ Action::Action(bool oneshot, Subcontext* subcontext, const std::string& filename filename_(filename), line_(line) {} const KeywordFunctionMap* Action::function_map_ = nullptr; const BuiltinFunctionMap* Action::function_map_ = nullptr; Result<void> Action::AddCommand(std::vector<std::string>&& args, int line) { if (!function_map_) { return Error() << "no function map available"; } auto function = function_map_->FindFunction(args); if (!function) return Error() << function.error(); auto map_result = function_map_->Find(args); if (!map_result) { return Error() << map_result.error(); } commands_.emplace_back(function->second, function->first, std::move(args), line); commands_.emplace_back(map_result->function, map_result->run_in_subcontext, std::move(args), line); return {}; } Loading
init/action.h +2 −2 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ class Action { bool oneshot() const { return oneshot_; } const std::string& filename() const { return filename_; } int line() const { return line_; } static void set_function_map(const KeywordFunctionMap* function_map) { static void set_function_map(const BuiltinFunctionMap* function_map) { function_map_ = function_map; } Loading @@ -91,7 +91,7 @@ class Action { Subcontext* subcontext_; std::string filename_; int line_; static const KeywordFunctionMap* function_map_; static const BuiltinFunctionMap* function_map_; }; } // namespace init Loading
init/builtins.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -1152,10 +1152,10 @@ static Result<void> do_enter_default_mount_ns(const BuiltinArguments& args) { } // Builtin-function-map start const BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const { const BuiltinFunctionMap& GetBuiltinFunctionMap() { constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max(); // clang-format off static const Map builtin_functions = { static const BuiltinFunctionMap builtin_functions = { {"bootchart", {1, 1, {false, do_bootchart}}}, {"chmod", {2, 2, {true, do_chmod}}}, {"chown", {2, 3, {true, do_chown}}}, Loading
init/builtins.h +8 −11 Original line number Diff line number Diff line Loading @@ -14,8 +14,7 @@ * limitations under the License. */ #ifndef _INIT_BUILTINS_H #define _INIT_BUILTINS_H #pragma once #include <functional> #include <map> Loading @@ -31,18 +30,16 @@ namespace init { using BuiltinFunction = std::function<Result<void>(const BuiltinArguments&)>; using KeywordFunctionMap = KeywordMap<std::pair<bool, BuiltinFunction>>; class BuiltinFunctionMap : public KeywordFunctionMap { public: BuiltinFunctionMap() {} private: const Map& map() const override; struct BuiltinFunctionMapValue { bool run_in_subcontext; BuiltinFunction function; }; using BuiltinFunctionMap = KeywordMap<BuiltinFunctionMapValue>; const BuiltinFunctionMap& GetBuiltinFunctionMap(); extern std::vector<std::string> late_import_paths; } // namespace init } // namespace android #endif
init/host_init_verifier.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ int main(int argc, char** argv) { return EXIT_FAILURE; } const BuiltinFunctionMap function_map; const BuiltinFunctionMap& function_map = GetBuiltinFunctionMap(); Action::set_function_map(&function_map); ActionManager& am = ActionManager::GetInstance(); ServiceList& sl = ServiceList::GetInstance(); Loading