Merge "Remove undocumented functionality from init." into nyc-dev
am: 27fe8c9
* commit '27fe8c904b0e63b047ac90380b6b2433fcec930d':
Remove undocumented functionality from init.
Change-Id: I3893df1ca5d16e72368f8990baea2395781af24d
This commit is contained in:
commit
8bcb7caf0e
3 changed files with 7 additions and 63 deletions
|
|
@ -139,59 +139,19 @@ static void restart_processes()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static void msg_start(const std::string& name)
|
void handle_control_message(const std::string& msg, 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)
|
|
||||||
{
|
|
||||||
Service* svc = ServiceManager::GetInstance().FindServiceByName(name);
|
Service* svc = ServiceManager::GetInstance().FindServiceByName(name);
|
||||||
|
if (svc == nullptr) {
|
||||||
if (svc) {
|
|
||||||
svc->Stop();
|
|
||||||
} else {
|
|
||||||
ERROR("no such service '%s'\n", name.c_str());
|
ERROR("no such service '%s'\n", name.c_str());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void handle_control_message(const std::string& msg, const std::string& arg)
|
|
||||||
{
|
|
||||||
if (msg == "start") {
|
if (msg == "start") {
|
||||||
msg_start(arg);
|
svc->Start();
|
||||||
} else if (msg == "stop") {
|
} else if (msg == "stop") {
|
||||||
msg_stop(arg);
|
svc->Stop();
|
||||||
} else if (msg == "restart") {
|
} else if (msg == "restart") {
|
||||||
msg_restart(arg);
|
svc->Restart();
|
||||||
} else {
|
} else {
|
||||||
ERROR("unknown control msg '%s'\n", msg.c_str());
|
ERROR("unknown control msg '%s'\n", msg.c_str());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -316,7 +316,7 @@ bool Service::HandleLine(const std::vector<std::string>& args, std::string* err)
|
||||||
return (this->*handler)(args, 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
|
// 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.
|
// 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));
|
flags_ &= (~(SVC_DISABLED|SVC_RESTARTING|SVC_RESET|SVC_RESTART|SVC_DISABLED_START));
|
||||||
|
|
@ -352,13 +352,6 @@ bool Service::Start(const std::vector<std::string>& dynamic_args) {
|
||||||
return false;
|
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;
|
std::string scon;
|
||||||
if (!seclabel_.empty()) {
|
if (!seclabel_.empty()) {
|
||||||
scon = seclabel_;
|
scon = seclabel_;
|
||||||
|
|
@ -480,9 +473,6 @@ bool Service::Start(const std::vector<std::string>& dynamic_args) {
|
||||||
for (const auto& s : args_) {
|
for (const auto& s : args_) {
|
||||||
strs.push_back(const_cast<char*>(s.c_str()));
|
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);
|
strs.push_back(nullptr);
|
||||||
if (execve(args_[0].c_str(), (char**) &strs[0], (char**) ENV) < 0) {
|
if (execve(args_[0].c_str(), (char**) &strs[0], (char**) ENV) < 0) {
|
||||||
ERROR("cannot execve('%s'): %s\n", args_[0].c_str(), strerror(errno));
|
ERROR("cannot execve('%s'): %s\n", args_[0].c_str(), strerror(errno));
|
||||||
|
|
@ -511,11 +501,6 @@ bool Service::Start(const std::vector<std::string>& dynamic_args) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Service::Start() {
|
|
||||||
const std::vector<std::string> null_dynamic_args;
|
|
||||||
return Start(null_dynamic_args);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Service::StartIfNotDisabled() {
|
bool Service::StartIfNotDisabled() {
|
||||||
if (!(flags_ & SVC_DISABLED)) {
|
if (!(flags_ & SVC_DISABLED)) {
|
||||||
return Start();
|
return Start();
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,6 @@ public:
|
||||||
const std::string& seclabel, const std::vector<std::string>& args);
|
const std::string& seclabel, const std::vector<std::string>& args);
|
||||||
|
|
||||||
bool HandleLine(const std::vector<std::string>& args, std::string* err);
|
bool HandleLine(const std::vector<std::string>& args, std::string* err);
|
||||||
bool Start(const std::vector<std::string>& dynamic_args);
|
|
||||||
bool Start();
|
bool Start();
|
||||||
bool StartIfNotDisabled();
|
bool StartIfNotDisabled();
|
||||||
bool Enable();
|
bool Enable();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue