Description: Remove the "ketchup-tmp" directory even if unpacking fails.
Author: Johann Felix Soden <johfel@gmx.de>

---
 ketchup |   42 ++++++++++++++++++++++--------------------
 1 files changed, 22 insertions(+), 20 deletions(-)

--- a/ketchup
+++ b/ketchup
@@ -671,28 +671,30 @@
         error("Please remove the ketchup-tmp directory by hand.")
         sys.exit(-1)
     os.mkdir("ketchup-tmp")
-    os.chdir("ketchup-tmp")
+    try:
+        os.chdir("ketchup-tmp")
 
-    if tarfile[-4:] == ".bz2":
-        err = os.system("tar -jxf %s" % tarfile)
-    elif tarfile[-3:] == ".gz":
-        err = os.system("tar -zxf %s" % tarfile)
-    elif tarfile[-3:] == ".xz":
-        err = os.system("xzcat %s | tar -xf -" % tarfile)
-    elif tarfile[-4:] == ".tar":
-        err = os.system("tar -xf %s" % tarfile)
-    else:
-        err="Unknown compression algorithm."
+        if tarfile[-4:] == ".bz2":
+            err = os.system("tar -jxf %s" % tarfile)
+        elif tarfile[-3:] == ".gz":
+            err = os.system("tar -zxf %s" % tarfile)
+        elif tarfile[-3:] == ".xz":
+            err = os.system("xzcat %s | tar -xf -" % tarfile)
+        elif tarfile[-4:] == ".tar":
+            err = os.system("tar -xf %s" % tarfile)
+        else:
+            err="Unknown compression algorithm."
 
-    if err:
-        error("Unpacking failed: ", err)
-        sys.exit(-1)
+        if err:
+            error("Unpacking failed: ", err)
+            sys.exit(-1)
 
-    ldir = glob.glob("linux*")[0]
-    for f in os.listdir(ldir):
-        os.rename(ldir + "/" + f, "../" + f)
-    os.chdir(old)
-    shutil.rmtree("ketchup-tmp")
+        ldir = glob.glob("linux*")[0]
+        for f in os.listdir(ldir):
+            os.rename(ldir + "/" + f, "../" + f)
+    finally:
+        os.chdir(old)
+        shutil.rmtree("ketchup-tmp")
 
 def install_nearest(ver):
     t = tree(ver)
