Silence errors the right way.
[grml2usb.git] / grml2usb
index be6b227..92c2cbf 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -166,14 +166,17 @@ def cleanup():
     proc = subprocess.Popen(["sync"])
     proc.wait()
 
-    try:
-        for device in MOUNTED:
+    for device in MOUNTED:
+        try:
             unmount(device, "")
-        for tmpfile in TMPFILES:
+        except RuntimeError:
+            logging.debug('RuntimeError while umount %s, ignoring' % device)
+    for tmpfile in TMPFILES:
+        try:
             os.unlink(tmpfile)
-    # ignore: RuntimeError: Set changed size during iteration
-    except RuntimeError:
-        logging.debug('caught exception RuntimeError, ignoring')
+        except RuntimeError:
+            msg = 'RuntimeError while removing temporary %s, ignoring'
+            logging.debug(msg % tmpfile)
 
 
 def register_tmpfile(path):
@@ -1475,7 +1478,15 @@ def install(image, device):
     iso_mountpoint = image
     remove_image_mountpoint = False
     if os.path.isdir(image):
-        logging.info("Using %s as install base", image)
+        if options.force or os.path.exists(os.path.join(image, 'live')):
+            logging.info("Using %s as install base", image)
+        else:
+            q = raw_input("%s does not look like a grml system. "
+                "Do you really want to use this image? y/N " % image)
+            if q.lower() == 'y':
+                logging.info("Using %s as install base", image)
+            else:
+                logging.info("Skipping install base %s", image)
     else:
         logging.info("Using ISO %s", image)
         iso_mountpoint = tempfile.mkdtemp(prefix="grml2usb", dir=os.path.abspath(options.tmpdir))
@@ -1789,7 +1800,7 @@ def main():
         for flavour in GRML_FLAVOURS:
             logging.info("Note: you can boot flavour %s using '%s' on the commandline.", flavour, flavour)
 
-        # finally be politely :)
+        # finally be polite :)
         logging.info("Finished execution of grml2usb (%s). Have fun with your grml system.", PROG_VERSION)
 
     except Exception, error: