recovery: Add "boot-fastboot" command to BCB.
This change adds a new "boot-fastboot" command in order to boot into fastboot
without overwriting recovery tasks. This also allows bootloaders to boot
directly into userspace fastboot from the bootloader menu, or via
bootloader fastboot.
Bug: 112277594
Test: adb reboot fastboot
Change-Id: Ia0c9a0961a76c6cbe19486590179abaa50d93f58
diff --git a/recovery_main.cpp b/recovery_main.cpp
index 99f9650..020a531 100644
--- a/recovery_main.cpp
+++ b/recovery_main.cpp
@@ -97,8 +97,13 @@
}
stage = std::string(boot.stage);
+ std::string boot_command;
if (boot.command[0] != 0) {
- std::string boot_command = std::string(boot.command, sizeof(boot.command));
+ if (memchr(boot.command, '\0', sizeof(boot.command))) {
+ boot_command = std::string(boot.command);
+ } else {
+ boot_command = std::string(boot.command, sizeof(boot.command));
+ }
LOG(INFO) << "Boot command: " << boot_command;
}
@@ -149,6 +154,12 @@
LOG(ERROR) << "Failed to set BCB message: " << err;
}
+ // Finally, if no arguments were specified, check whether we should boot
+ // into fastboot.
+ if (args.size() == 1 && boot_command == "boot-fastboot") {
+ args.emplace_back("--fastboot");
+ }
+
return args;
}