projects
/
grml2usb.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
411daf1
)
Implement folder cleanup support for TMPFILES. Closes #5.
author
Lukas Prokop
<admin@lukas-prokop.at>
Wed, 19 Feb 2014 22:16:27 +0000
(23:16 +0100)
committer
Lukas Prokop
<admin@lukas-prokop.at>
Wed, 19 Feb 2014 22:16:27 +0000
(23:16 +0100)
grml2usb
patch
|
blob
|
history
diff --git
a/grml2usb
b/grml2usb
index
92c2cbf
..
da6bfe0
100755
(executable)
--- a/
grml2usb
+++ b/
grml2usb
@@
-28,6
+28,7
@@
import sys
import tempfile
import time
import uuid
import tempfile
import time
import uuid
+import shutil
# The line following this line is patched by debian/rules and tarball.sh.
PROG_VERSION = '***UNRELEASED***'
# The line following this line is patched by debian/rules and tarball.sh.
PROG_VERSION = '***UNRELEASED***'
@@
-161,6
+162,9
@@
def string2array(s):
def cleanup():
"""Cleanup function to make sure there aren't any mounted devices left behind.
"""
def cleanup():
"""Cleanup function to make sure there aren't any mounted devices left behind.
"""
+ def del_failed(fn, filepath, exc):
+ msg = "Deletion of %s failed in temporary folder %s"
+ logging.warn(msg % (filepath, path))
logging.info("Cleaning up before exiting...")
proc = subprocess.Popen(["sync"])
logging.info("Cleaning up before exiting...")
proc = subprocess.Popen(["sync"])
@@
-171,12
+175,22
@@
def cleanup():
unmount(device, "")
except RuntimeError:
logging.debug('RuntimeError while umount %s, ignoring' % device)
unmount(device, "")
except RuntimeError:
logging.debug('RuntimeError while umount %s, ignoring' % device)
- for tmpfile in TMPFILES:
+
+ for tmppath in TMPFILES:
try:
try:
- os.unlink(tmpfile)
+ if os.path.isdir(tmppath) and not os.path.islink(tmppath):
+ # symbolic links to directories are ignored
+ # without the check it will throw an OSError
+ shutil.rmtree(tmppath, onerror=del_failed)
+ logging.debug('temporary directory %s deleted' % tmppath)
+ unregister_tmpfile(tmppath)
+ elif os.path.isfile:
+ os.unlink(tmppath)
+ logging.debug('temporary file %s deleted' % tmppath)
+ unregister_tmpfile(tmppath)
except RuntimeError:
msg = 'RuntimeError while removing temporary %s, ignoring'
except RuntimeError:
msg = 'RuntimeError while removing temporary %s, ignoring'
- logging.debug(msg % tmp
file
)
+ logging.debug(msg % tmp
path
)
def register_tmpfile(path):
def register_tmpfile(path):