diff options
author | Tianjie Xu <xunchang@google.com> | 2016-03-10 22:27:26 +0100 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-03-10 22:27:26 +0100 |
commit | d345de66efb919e8c0d09ee5b4d8ae0d443d6c94 (patch) | |
tree | 33e073f4f17960b19336a03fb15e1a40141cb0a2 /install.cpp | |
parent | Revert "recovery: More refactoring of WearUI" (diff) | |
parent | Reboot and retry on I/O errors (diff) | |
download | android_bootable_recovery-d345de66efb919e8c0d09ee5b4d8ae0d443d6c94.tar android_bootable_recovery-d345de66efb919e8c0d09ee5b4d8ae0d443d6c94.tar.gz android_bootable_recovery-d345de66efb919e8c0d09ee5b4d8ae0d443d6c94.tar.bz2 android_bootable_recovery-d345de66efb919e8c0d09ee5b4d8ae0d443d6c94.tar.lz android_bootable_recovery-d345de66efb919e8c0d09ee5b4d8ae0d443d6c94.tar.xz android_bootable_recovery-d345de66efb919e8c0d09ee5b4d8ae0d443d6c94.tar.zst android_bootable_recovery-d345de66efb919e8c0d09ee5b4d8ae0d443d6c94.zip |
Diffstat (limited to 'install.cpp')
-rw-r--r-- | install.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/install.cpp b/install.cpp index c0d007709..8a82d7bc4 100644 --- a/install.cpp +++ b/install.cpp @@ -144,6 +144,7 @@ try_update_binary(const char* path, ZipArchive* zip, bool* wipe_cache) { close(pipefd[1]); *wipe_cache = false; + bool retry_update = false; char buffer[1024]; FILE* from_child = fdopen(pipefd[0], "r"); @@ -180,6 +181,8 @@ try_update_binary(const char* path, ZipArchive* zip, bool* wipe_cache) { // to be able to reboot during installation (useful for // debugging packages that don't exit). ui->SetEnableReboot(true); + } else if (strcmp(command, "retry_update") == 0) { + retry_update = true; } else { LOGE("unknown command [%s]\n", command); } @@ -188,6 +191,9 @@ try_update_binary(const char* path, ZipArchive* zip, bool* wipe_cache) { int status; waitpid(pid, &status, 0); + if (retry_update) { + return INSTALL_RETRY; + } if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { LOGE("Error in %s\n(Status %d)\n", path, WEXITSTATUS(status)); return INSTALL_ERROR; |