Loading init/init.cpp +6 −46 Original line number Diff line number Diff line Loading @@ -139,59 +139,19 @@ static void restart_processes() }); } static void msg_start(const std::string& name) { Service* svc = nullptr; std::vector<std::string> vargs; size_t colon_pos = name.find(':'); if (colon_pos == std::string::npos) { svc = ServiceManager::GetInstance().FindServiceByName(name); } else { std::string service_name(name.substr(0, colon_pos)); std::string args(name.substr(colon_pos + 1)); vargs = android::base::Split(args, " "); svc = ServiceManager::GetInstance().FindServiceByName(service_name); } if (svc) { svc->Start(vargs); } else { ERROR("no such service '%s'\n", name.c_str()); } } static void msg_stop(const std::string& name) { void handle_control_message(const std::string& msg, const std::string& name) { Service* svc = ServiceManager::GetInstance().FindServiceByName(name); if (svc) { svc->Stop(); } else { if (svc == nullptr) { ERROR("no such service '%s'\n", name.c_str()); } } static void msg_restart(const std::string& name) { Service* svc = ServiceManager::GetInstance().FindServiceByName(name); if (svc) { svc->Restart(); } else { ERROR("no such service '%s'\n", name.c_str()); } return; } void handle_control_message(const std::string& msg, const std::string& arg) { if (msg == "start") { msg_start(arg); svc->Start(); } else if (msg == "stop") { msg_stop(arg); svc->Stop(); } else if (msg == "restart") { msg_restart(arg); svc->Restart(); } else { ERROR("unknown control msg '%s'\n", msg.c_str()); } Loading init/service.cpp +1 −16 Original line number Diff line number Diff line Loading @@ -316,7 +316,7 @@ bool Service::HandleLine(const std::vector<std::string>& args, std::string* err) return (this->*handler)(args, err); } bool Service::Start(const std::vector<std::string>& dynamic_args) { bool Service::Start() { // Starting a service removes it from the disabled or reset state and // immediately takes it out of the restarting state if it was in there. flags_ &= (~(SVC_DISABLED|SVC_RESTARTING|SVC_RESET|SVC_RESTART|SVC_DISABLED_START)); Loading Loading @@ -352,13 +352,6 @@ bool Service::Start(const std::vector<std::string>& dynamic_args) { return false; } if ((!(flags_ & SVC_ONESHOT)) && !dynamic_args.empty()) { ERROR("service '%s' must be one-shot to use dynamic args, disabling\n", args_[0].c_str()); flags_ |= SVC_DISABLED; return false; } std::string scon; if (!seclabel_.empty()) { scon = seclabel_; Loading Loading @@ -480,9 +473,6 @@ bool Service::Start(const std::vector<std::string>& dynamic_args) { for (const auto& s : args_) { strs.push_back(const_cast<char*>(s.c_str())); } for (const auto& s : dynamic_args) { strs.push_back(const_cast<char*>(s.c_str())); } strs.push_back(nullptr); if (execve(args_[0].c_str(), (char**) &strs[0], (char**) ENV) < 0) { ERROR("cannot execve('%s'): %s\n", args_[0].c_str(), strerror(errno)); Loading Loading @@ -511,11 +501,6 @@ bool Service::Start(const std::vector<std::string>& dynamic_args) { return true; } bool Service::Start() { const std::vector<std::string> null_dynamic_args; return Start(null_dynamic_args); } bool Service::StartIfNotDisabled() { if (!(flags_ & SVC_DISABLED)) { return Start(); Loading init/service.h +0 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,6 @@ public: const std::string& seclabel, const std::vector<std::string>& args); bool HandleLine(const std::vector<std::string>& args, std::string* err); bool Start(const std::vector<std::string>& dynamic_args); bool Start(); bool StartIfNotDisabled(); bool Enable(); Loading Loading
init/init.cpp +6 −46 Original line number Diff line number Diff line Loading @@ -139,59 +139,19 @@ static void restart_processes() }); } static void msg_start(const std::string& name) { Service* svc = nullptr; std::vector<std::string> vargs; size_t colon_pos = name.find(':'); if (colon_pos == std::string::npos) { svc = ServiceManager::GetInstance().FindServiceByName(name); } else { std::string service_name(name.substr(0, colon_pos)); std::string args(name.substr(colon_pos + 1)); vargs = android::base::Split(args, " "); svc = ServiceManager::GetInstance().FindServiceByName(service_name); } if (svc) { svc->Start(vargs); } else { ERROR("no such service '%s'\n", name.c_str()); } } static void msg_stop(const std::string& name) { void handle_control_message(const std::string& msg, const std::string& name) { Service* svc = ServiceManager::GetInstance().FindServiceByName(name); if (svc) { svc->Stop(); } else { if (svc == nullptr) { ERROR("no such service '%s'\n", name.c_str()); } } static void msg_restart(const std::string& name) { Service* svc = ServiceManager::GetInstance().FindServiceByName(name); if (svc) { svc->Restart(); } else { ERROR("no such service '%s'\n", name.c_str()); } return; } void handle_control_message(const std::string& msg, const std::string& arg) { if (msg == "start") { msg_start(arg); svc->Start(); } else if (msg == "stop") { msg_stop(arg); svc->Stop(); } else if (msg == "restart") { msg_restart(arg); svc->Restart(); } else { ERROR("unknown control msg '%s'\n", msg.c_str()); } Loading
init/service.cpp +1 −16 Original line number Diff line number Diff line Loading @@ -316,7 +316,7 @@ bool Service::HandleLine(const std::vector<std::string>& args, std::string* err) return (this->*handler)(args, err); } bool Service::Start(const std::vector<std::string>& dynamic_args) { bool Service::Start() { // Starting a service removes it from the disabled or reset state and // immediately takes it out of the restarting state if it was in there. flags_ &= (~(SVC_DISABLED|SVC_RESTARTING|SVC_RESET|SVC_RESTART|SVC_DISABLED_START)); Loading Loading @@ -352,13 +352,6 @@ bool Service::Start(const std::vector<std::string>& dynamic_args) { return false; } if ((!(flags_ & SVC_ONESHOT)) && !dynamic_args.empty()) { ERROR("service '%s' must be one-shot to use dynamic args, disabling\n", args_[0].c_str()); flags_ |= SVC_DISABLED; return false; } std::string scon; if (!seclabel_.empty()) { scon = seclabel_; Loading Loading @@ -480,9 +473,6 @@ bool Service::Start(const std::vector<std::string>& dynamic_args) { for (const auto& s : args_) { strs.push_back(const_cast<char*>(s.c_str())); } for (const auto& s : dynamic_args) { strs.push_back(const_cast<char*>(s.c_str())); } strs.push_back(nullptr); if (execve(args_[0].c_str(), (char**) &strs[0], (char**) ENV) < 0) { ERROR("cannot execve('%s'): %s\n", args_[0].c_str(), strerror(errno)); Loading Loading @@ -511,11 +501,6 @@ bool Service::Start(const std::vector<std::string>& dynamic_args) { return true; } bool Service::Start() { const std::vector<std::string> null_dynamic_args; return Start(null_dynamic_args); } bool Service::StartIfNotDisabled() { if (!(flags_ & SVC_DISABLED)) { return Start(); Loading
init/service.h +0 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,6 @@ public: const std::string& seclabel, const std::vector<std::string>& args); bool HandleLine(const std::vector<std::string>& args, std::string* err); bool Start(const std::vector<std::string>& dynamic_args); bool Start(); bool StartIfNotDisabled(); bool Enable(); Loading