Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
extract: if the renamed failed, keep the extracted file with a .pkgnew suffix
Baptiste Daroussin committed 2 months ago
commit d5148687c2125ba11fdd848720203582f3ba182b
parent 5716742
1 file changed +9 -2
modified libpkg/pkg_add.c
@@ -1054,8 +1054,15 @@ pkg_extract_finalize(struct pkg *pkg, tempdirs_t *tempdirs)
		}
		if (renameat(pkg->rootfd, RELATIVE_PATH(f->temppath),
		    pkg->rootfd, RELATIVE_PATH(fto)) == -1) {
-
			pkg_fatal_errno("Fail to rename %s -> %s",
-
			    f->temppath, fto);
+
			char pkgnew[MAXPATHLEN + 8];
+
			snprintf(pkgnew, sizeof(pkgnew), "%s.pkgnew", f->path);
+
			if (renameat(pkg->rootfd, RELATIVE_PATH(f->temppath),
+
			    pkg->rootfd, RELATIVE_PATH(pkgnew)) == -1) {
+
				pkg_fatal_errno("Fail to rename %s -> %s",
+
				    f->temppath, fto);
+
			}
+
			pkg_emit_notice("Cannot install %s, "
+
					"installed as %s", f->path, pkgnew);
		}

		if (set_chflags(pkg->rootfd, fto, f->fflags) != EPKG_OK)