From 93be9605bde5853cbf4b48d279ba885cf3c76454 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Sun, 13 Jan 2019 02:56:44 +0100 Subject: [PATCH] Ensure tpkg-new files are removed on errors. --- tpkg | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tpkg b/tpkg index 95623f0..34c8ff3 100755 --- a/tpkg +++ b/tpkg @@ -255,11 +255,18 @@ def install(pfx, pkg, pkgname): os.makedirs(tpdir) tmpp = tp + ".tpkg-new" sb = fl.stat() - with open(tmpp, "wb") as ofp: - os.fchmod(ofp.fileno(), sb.st_mode & 0o7777) - with fl.open() as ifp: - dig = copy(ofp, ifp) - pfx.regfile(fl.path, pkgname, dig) + try: + with open(tmpp, "wb") as ofp: + os.fchmod(ofp.fileno(), sb.st_mode & 0o7777) + with fl.open() as ifp: + dig = copy(ofp, ifp) + pfx.regfile(fl.path, pkgname, dig) + except: + try: + os.unlink(tmpp) + except FileNotFoundError: + pass + raise os.rename(tmpp, tp) os.utime(tp, ns=(time.time() * 1e9, sb.st_mtime * 1e9)) -- 2.11.0