summaryrefslogtreecommitdiff
path: root/init/signal_handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'init/signal_handler.cpp')
-rw-r--r--init/signal_handler.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/init/signal_handler.cpp b/init/signal_handler.cpp
index 39a466dee..68931632f 100644
--- a/init/signal_handler.cpp
+++ b/init/signal_handler.cpp
@@ -136,7 +136,14 @@ static bool wait_for_one_process() {
struct listnode* node;
list_for_each(node, &svc->onrestart.commands) {
command* cmd = node_to_item(node, struct command, clist);
- cmd->func(cmd->nargs, cmd->args);
+ std::vector<std::string> arg_strs;
+ if (expand_command_arguments(cmd->nargs, cmd->args, &arg_strs)) {
+ std::vector<char*> args;
+ for (auto& s : arg_strs) {
+ args.push_back(&s[0]);
+ }
+ cmd->func(args.size(), &args[0]);
+ }
}
svc->NotifyStateChange("restarting");
return true;