diff options
author | Tom Marshall <tdm@cyngn.com> | 2014-11-24 16:02:04 -0800 |
---|---|---|
committer | Tom Marshall <tdm@cyngn.com> | 2015-11-25 15:34:31 -0800 |
commit | 3f092f7778ed608d454df4c3dc3b3f7cb4afde3b (patch) | |
tree | 326444388672880e6ab3bf72f434e13e1d80c25e /install.cpp | |
parent | 383f723fdb0ebba5078ccc2aabf87f0516215bf9 (diff) | |
download | bootable_recovery-3f092f7778ed608d454df4c3dc3b3f7cb4afde3b.zip bootable_recovery-3f092f7778ed608d454df4c3dc3b3f7cb4afde3b.tar.gz bootable_recovery-3f092f7778ed608d454df4c3dc3b3f7cb4afde3b.tar.bz2 |
recovery: Awakening of MiniVold
A minimal vold client for recovery.
Change-Id: Id25d955dc1861a910e5f5fc27d9a19e245d66833
Diffstat (limited to 'install.cpp')
-rw-r--r-- | install.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/install.cpp b/install.cpp index 8f2f252..1bdf46b 100644 --- a/install.cpp +++ b/install.cpp @@ -255,6 +255,27 @@ really_install_package(const char *path, bool* wipe_cache, bool needs_mount) // Give verification half the progress bar... ui->SetProgressType(RecoveryUI::DETERMINATE); ui->ShowProgress(VERIFICATION_PROGRESS_FRACTION, VERIFICATION_PROGRESS_TIME); + + // Resolve symlink in case legacy /sdcard path is used + // Requires: symlink uses absolute path + char new_path[PATH_MAX]; + if (strlen(path) > 1) { + char *rest = strchr(path + 1, '/'); + if (rest != NULL) { + int readlink_length; + int root_length = rest - path; + char *root = (char *)malloc(root_length + 1); + strncpy(root, path, root_length); + root[root_length] = 0; + readlink_length = readlink(root, new_path, PATH_MAX); + if (readlink_length > 0) { + strncpy(new_path + readlink_length, rest, PATH_MAX - readlink_length); + path = new_path; + } + free(root); + } + } + LOGI("Update location: %s\n", path); // Map the update package into memory. |