fastboot: Bring back legacy A/B support

Some devices, such as the Essential PH-1, don't have an
updated bootloader and the bootloader is appending an extra
underscore.

This patch works around that issue by sanitizing the slot to be
inline with modern expectations.

Offending commit: 42b18a518b

Most of the commit above is not needed because an underscore + slot
is automatically appended when flashing to a partition. Normally, this
would result in something like boot__b instead of boot_b, where b is the
current slot.

Test: flash an image on mata without specifying slot, boots

Change-Id: Ia0b7cee603a4f9ba2e3a61ce6e369ca8c07a7caf
This commit is contained in:
LuK1337 2020-04-06 14:38:58 +02:00 committed by Anay Wadhera
parent 1d9764209f
commit dae48ef41e

View file

@ -1103,6 +1103,7 @@ static void flash_buf(const std::string& partition, struct fastboot_buffer *buf)
static std::string get_current_slot() {
std::string current_slot;
if (fb->GetVar("current-slot", &current_slot) != fastboot::SUCCESS) return "";
if (current_slot[0] == '_') current_slot.erase(0, 1);
return current_slot;
}
@ -1950,6 +1951,7 @@ int FastBootTool::Main(int argc, char* argv[]) {
if (slot_override == "") {
std::string current_slot;
if (fb->GetVar("current-slot", &current_slot) == fastboot::SUCCESS) {
if (current_slot[0] == '_') current_slot.erase(0, 1);
next_active = verify_slot(current_slot, false);
} else {
wants_set_active = false;