summaryrefslogtreecommitdiffstats
path: root/updater
diff options
context:
space:
mode:
authorMichael Runge <mrunge@google.com>2014-10-22 14:28:23 -0700
committerMichael Runge <mrunge@google.com>2014-10-23 00:04:36 +0000
commit2f0ef73029fc51c6404121f338b034c8b516652c (patch)
tree3e0d63590802cdc031da7ff5aeb65dcbd7a1af59 /updater
parenta6e13ae01bff5109361868f565187f16d045c82d (diff)
downloadbootable_recovery-2f0ef73029fc51c6404121f338b034c8b516652c.zip
bootable_recovery-2f0ef73029fc51c6404121f338b034c8b516652c.tar.gz
bootable_recovery-2f0ef73029fc51c6404121f338b034c8b516652c.tar.bz2
Treat already-renamed files as having no problems.
This should help with reentrant OTAs. Bug: 18079773 Change-Id: I102fd738e3b450483ecd4471384c12e89fc586e2
Diffstat (limited to 'updater')
-rw-r--r--updater/install.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/updater/install.c b/updater/install.c
index dad0d08..42dbb58 100644
--- a/updater/install.c
+++ b/updater/install.c
@@ -358,6 +358,9 @@ Value* RenameFn(const char* name, State* state, int argc, Expr* argv[]) {
if (make_parents(dst_name) != 0) {
ErrorAbort(state, "Creating parent of %s failed, error %s",
dst_name, strerror(errno));
+ } else if (access(dst_name, F_OK) == 0 && access(src_name, F_OK) != 0) {
+ // File was already moved
+ result = dst_name;
} else if (rename(src_name, dst_name) != 0) {
ErrorAbort(state, "Rename of %s to %s failed, error %s",
src_name, dst_name, strerror(errno));