diff options
Diffstat (limited to 'lib/archive.py')
| -rw-r--r-- | lib/archive.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/archive.py b/lib/archive.py index 108134c..5956a1e 100644 --- a/lib/archive.py +++ b/lib/archive.py | |||
| @@ -1,9 +1,8 @@ | |||
| 1 | ''' | 1 | ''' |
| 2 | Take care of archives formats | 2 | Take care of archives formats |
| 3 | ''' | 3 | ''' |
| 4 | import tarfile | ||
| 5 | import zipfile | ||
| 6 | 4 | ||
| 5 | import zipfile | ||
| 7 | import shutil | 6 | import shutil |
| 8 | import os | 7 | import os |
| 9 | import logging | 8 | import logging |
| @@ -11,7 +10,7 @@ import tempfile | |||
| 11 | 10 | ||
| 12 | import parser | 11 | import parser |
| 13 | import mat | 12 | import mat |
| 14 | 13 | import tarfile | |
| 15 | 14 | ||
| 16 | class GenericArchiveStripper(parser.GenericParser): | 15 | class GenericArchiveStripper(parser.GenericParser): |
| 17 | ''' | 16 | ''' |
| @@ -224,6 +223,7 @@ class TarStripper(GenericArchiveStripper): | |||
| 224 | tarin = tarfile.open(self.filename, 'r' + self.compression) | 223 | tarin = tarfile.open(self.filename, 'r' + self.compression) |
| 225 | for item in tarin.getmembers(): | 224 | for item in tarin.getmembers(): |
| 226 | if not self.is_file_clean(item): | 225 | if not self.is_file_clean(item): |
| 226 | tarin.close() | ||
| 227 | return False | 227 | return False |
| 228 | tarin.extract(item, self.tempdir) | 228 | tarin.extract(item, self.tempdir) |
| 229 | name = os.path.join(self.tempdir, item.name) | 229 | name = os.path.join(self.tempdir, item.name) |
| @@ -233,12 +233,14 @@ class TarStripper(GenericArchiveStripper): | |||
| 233 | class_file = mat.create_class_file(name, | 233 | class_file = mat.create_class_file(name, |
| 234 | False, self.add2archive) | 234 | False, self.add2archive) |
| 235 | if not class_file.is_clean(): | 235 | if not class_file.is_clean(): |
| 236 | tarin.close() | ||
| 236 | return False | 237 | return False |
| 237 | except: | 238 | except: |
| 238 | #best solution I have found | 239 | #best solution I have found |
| 239 | logging.error('%s is not supported' % item.filename) | 240 | logging.error('%s is not supported' % item.filename) |
| 240 | _, ext = os.path.splitext(name) | 241 | _, ext = os.path.splitext(name) |
| 241 | if ext not in parser.NOMETA: | 242 | if ext not in parser.NOMETA: |
| 243 | tarin.close() | ||
| 242 | return False | 244 | return False |
| 243 | mat.secure_remove(name) | 245 | mat.secure_remove(name) |
| 244 | tarin.close() | 246 | tarin.close() |
