Cope with angler's whitespace-padded partition size reporting.

Before:

  $ fastboot -w
  wiping userdata...
  Couldn't parse partition size '0x        0x66257ee00'.
  wiping cache...
  Couldn't parse partition size '0x        0x6400000'.
  erasing 'userdata'...

Bug: http://b/25653580
Change-Id: I301b8410689c1e52681796c240a149d270360edf
This commit is contained in:
Elliott Hughes 2015-11-12 07:28:39 -08:00
parent dcb8b288ca
commit a2db2618ec
1 changed files with 5 additions and 4 deletions

View File

@ -1017,6 +1017,11 @@ static void fb_perform_format(usb_handle* usb,
}
partition_size = size_override;
}
// Some bootloaders (angler, for example), send spurious leading whitespace.
partition_size = android::base::Trim(partition_size);
// Some bootloaders (hammerhead, for example) use implicit hex.
// This code used to use strtol with base 16.
if (!android::base::StartsWith(partition_size, "0x")) partition_size = "0x" + partition_size;
gen = fs_get_generator(partition_type);
if (!gen) {
@ -1030,10 +1035,6 @@ static void fb_perform_format(usb_handle* usb,
return;
}
// Some bootloaders (hammerhead, for example) use implicit hex.
// This code used to use strtol with base 16.
if (!android::base::StartsWith(partition_size, "0x")) partition_size = "0x" + partition_size;
int64_t size;
if (!android::base::ParseInt(partition_size.c_str(), &size)) {
fprintf(stderr, "Couldn't parse partition size '%s'.\n", partition_size.c_str());