From 00e1c4f330d0723dfe24267ccb5588c09ec9a12c Mon Sep 17 00:00:00 2001 From: Dmitri Plotnikov Date: Wed, 12 Apr 2017 13:00:52 -0700 Subject: [PATCH] Passing additional parameter to powerctl Test: adb reboot recovery,foo and verify that the parameter reaches bootloader Change-Id: I9690cf96cf9730e5324b9f5310c3d0341fe25fe2 --- init/builtins.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/init/builtins.cpp b/init/builtins.cpp index 7298dff4f..e1d9b94ee 100644 --- a/init/builtins.cpp +++ b/init/builtins.cpp @@ -607,7 +607,7 @@ static int do_powerctl(const std::vector& args) { bool runFsck = false; bool commandInvalid = false; - if (cmd_params.size() > 2) { + if (cmd_params.size() > 3) { commandInvalid = true; } else if (cmd_params[0] == "shutdown") { cmd = ANDROID_RB_POWEROFF; @@ -619,7 +619,7 @@ static int do_powerctl(const std::vector& args) { } } else if (cmd_params[0] == "reboot") { cmd = ANDROID_RB_RESTART2; - if (cmd_params.size() == 2) { + if (cmd_params.size() >= 2) { reboot_target = cmd_params[1]; // When rebooting to the bootloader notify the bootloader writing // also the BCB. @@ -631,6 +631,10 @@ static int do_powerctl(const std::vector& args) { << err; } } + // If there is an additional bootloader parameter, pass it along + if (cmd_params.size() == 3) { + reboot_target += "," + cmd_params[2]; + } } } else if (command == "thermal-shutdown") { // no additional parameter allowed cmd = ANDROID_RB_THERMOFF;