diff options
| author | jvoisin | 2011-06-29 15:57:03 +0200 |
|---|---|---|
| committer | jvoisin | 2011-06-29 15:57:03 +0200 |
| commit | 9df7b643c98e7693e8e1cad6c808e478bacf2d2d (patch) | |
| tree | 73abdb836dc027a90263288c27da86cbd55ef86d | |
| parent | 6c5cad3f96a1bbe20b668730ba66dfb43eb14b08 (diff) | |
Fix 'Tarfile is closed', implement the --backup mode
| -rw-r--r-- | lib/archive.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/archive.py b/lib/archive.py index 446e493..17b56c3 100644 --- a/lib/archive.py +++ b/lib/archive.py | |||
| @@ -2,7 +2,7 @@ import tarfile | |||
| 2 | import sys | 2 | import sys |
| 3 | import parser | 3 | import parser |
| 4 | import mat | 4 | import mat |
| 5 | import shutil | 5 | import os |
| 6 | 6 | ||
| 7 | class TarStripper(parser.Generic_parser): | 7 | class TarStripper(parser.Generic_parser): |
| 8 | def __init__(self, realname, filename, parser, editor, backup): | 8 | def __init__(self, realname, filename, parser, editor, backup): |
| @@ -13,6 +13,7 @@ class TarStripper(parser.Generic_parser): | |||
| 13 | self.folder_list = [] | 13 | self.folder_list = [] |
| 14 | 14 | ||
| 15 | def remove_all(self): | 15 | def remove_all(self): |
| 16 | self.tarin = tarfile.open(self.filename, 'r' + self.compression) | ||
| 16 | self.tarout = tarfile.open(self.filename + parser.POSTFIX, | 17 | self.tarout = tarfile.open(self.filename + parser.POSTFIX, |
| 17 | 'w' + self.compression) | 18 | 'w' + self.compression) |
| 18 | for current_file in self.tarin.getmembers(): | 19 | for current_file in self.tarin.getmembers(): |
| @@ -35,7 +36,12 @@ class TarStripper(parser.Generic_parser): | |||
| 35 | self.tarout.close() | 36 | self.tarout.close() |
| 36 | self.tarin.close() | 37 | self.tarin.close() |
| 37 | 38 | ||
| 39 | if self.backup is False: | ||
| 40 | mat.secure_remove(self.filename) | ||
| 41 | os.rename(self.filename + parser.POSTFIX, self.filename) | ||
| 42 | |||
| 38 | def is_clean(self): | 43 | def is_clean(self): |
| 44 | self.tarin = tarfile.open(self.filename, 'r' + self.compression) | ||
| 39 | for current_file in self.tarin.getmembers(): | 45 | for current_file in self.tarin.getmembers(): |
| 40 | self.tarin.extract(current_file) | 46 | self.tarin.extract(current_file) |
| 41 | if current_file.type is '0': #is current_file a regular file ? | 47 | if current_file.type is '0': #is current_file a regular file ? |
