summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recovery.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/recovery.c b/recovery.c
index 36da5f36a..6f9f8e750 100644
--- a/recovery.c
+++ b/recovery.c
@@ -88,7 +88,7 @@ static const char *SIDELOAD_TEMP_DIR = "/tmp/sideload";
*
* OTA INSTALL
* 1. main system downloads OTA package to /cache/some-filename.zip
- * 2. main system writes "--update_package=CACHE:some-filename.zip"
+ * 2. main system writes "--update_package=/cache/some-filename.zip"
* 3. main system reboots into recovery
* 4. get_args() writes BCB with "boot-recovery" and "--update_package=..."
* -- after this, rebooting will attempt to reinstall the update --
@@ -711,7 +711,23 @@ main(int argc, char **argv) {
for (arg = 0; arg < argc; arg++) {
printf(" \"%s\"", argv[arg]);
}
- printf("\n\n");
+ printf("\n");
+
+ if (update_package) {
+ // For backwards compatibility on the cache partition only, if
+ // we're given an old 'root' path "CACHE:foo", change it to
+ // "/cache/foo".
+ if (strncmp(update_package, "CACHE:", 6) == 0) {
+ int len = strlen(update_package) + 10;
+ char* modified_path = malloc(len);
+ strlcpy(modified_path, "/cache/", len);
+ strlcat(modified_path, update_package+6, len);
+ printf("(replacing path \"%s\" with \"%s\")\n",
+ update_package, modified_path);
+ update_package = modified_path;
+ }
+ }
+ printf("\n");
property_list(print_property, NULL);
printf("\n");