diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/archive.py | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/lib/archive.py b/lib/archive.py index caa0a32..5b43f11 100644 --- a/lib/archive.py +++ b/lib/archive.py | |||
| @@ -24,12 +24,12 @@ class ZipStripper(parser.Generic_parser): | |||
| 24 | self.zipin.close() | 24 | self.zipin.close() |
| 25 | return metadata | 25 | return metadata |
| 26 | 26 | ||
| 27 | |||
| 27 | class TarStripper(parser.Generic_parser): | 28 | class TarStripper(parser.Generic_parser): |
| 28 | def __init__(self, realname, filename, parser, editor, backup): | 29 | def __init__(self, realname, filename, parser, editor, backup): |
| 29 | super(TarStripper, self).__init__(realname, | 30 | super(TarStripper, self).__init__(realname, |
| 30 | filename, parser, editor, backup) | 31 | filename, parser, editor, backup) |
| 31 | self.compression = '' | 32 | self.compression = '' |
| 32 | self.tarin = tarfile.open(self.filename, 'r' + self.compression) | ||
| 33 | self.folder_list = [] | 33 | self.folder_list = [] |
| 34 | 34 | ||
| 35 | def _remove(self, current_file): | 35 | def _remove(self, current_file): |
| @@ -44,21 +44,21 @@ class TarStripper(parser.Generic_parser): | |||
| 44 | return current_file | 44 | return current_file |
| 45 | 45 | ||
| 46 | def remove_all(self): | 46 | def remove_all(self): |
| 47 | self.tarin = tarfile.open(self.filename, 'r' + self.compression) | 47 | tarin = tarfile.open(self.filename, 'r' + self.compression) |
| 48 | self.tarout = tarfile.open(self.filename + parser.POSTFIX, | 48 | tarout = tarfile.open(self.filename + parser.POSTFIX, |
| 49 | 'w' + self.compression) | 49 | 'w' + self.compression) |
| 50 | for current_file in self.tarin.getmembers(): | 50 | for current_file in tarin.getmembers(): |
| 51 | self.tarin.extract(current_file) | 51 | tarin.extract(current_file) |
| 52 | if current_file.type is '0': #is current_file a regular file ? | 52 | if current_file.type is '0': #is current_file a regular file ? |
| 53 | #no backup file | 53 | #no backup file |
| 54 | class_file = mat.create_class_file(current_file.name, False) | 54 | class_file = mat.create_class_file(current_file.name, False) |
| 55 | class_file.remove_all() | 55 | class_file.remove_all() |
| 56 | self.tarout.add(current_file.name, filter=self._remove) | 56 | tarout.add(current_file.name, filter=self._remove) |
| 57 | mat.secure_remove(current_file.name) | 57 | mat.secure_remove(current_file.name) |
| 58 | else: | 58 | else: |
| 59 | self.folder_list.insert(0, current_file.name) | 59 | self.folder_list.insert(0, current_file.name) |
| 60 | self.tarin.close() | 60 | tarin.close() |
| 61 | self.tarout.close() | 61 | tarout.close() |
| 62 | print self.folder_list | 62 | print self.folder_list |
| 63 | 63 | ||
| 64 | self.remove_folder() | 64 | self.remove_folder() |
| @@ -85,9 +85,9 @@ class TarStripper(parser.Generic_parser): | |||
| 85 | return True | 85 | return True |
| 86 | 86 | ||
| 87 | def is_clean(self): | 87 | def is_clean(self): |
| 88 | self.tarin = tarfile.open(self.filename, 'r' + self.compression) | 88 | tarin = tarfile.open(self.filename, 'r' + self.compression) |
| 89 | for current_file in self.tarin.getmembers(): | 89 | for current_file in tarin.getmembers(): |
| 90 | self.tarin.extract(current_file) | 90 | tarin.extract(current_file) |
| 91 | if current_file.type is '0': #is current_file a regular file ? | 91 | if current_file.type is '0': #is current_file a regular file ? |
| 92 | #no backup file | 92 | #no backup file |
| 93 | class_file = mat.create_class_file(current_file.name, False) | 93 | class_file = mat.create_class_file(current_file.name, False) |
| @@ -100,14 +100,14 @@ class TarStripper(parser.Generic_parser): | |||
| 100 | mat.secure_remove(current_file.name) | 100 | mat.secure_remove(current_file.name) |
| 101 | else: | 101 | else: |
| 102 | self.folder_list.insert(0, current_file.name) | 102 | self.folder_list.insert(0, current_file.name) |
| 103 | self.tarin.close() | 103 | tarin.close() |
| 104 | self.remove_folder() | 104 | self.remove_folder() |
| 105 | return True | 105 | return True |
| 106 | 106 | ||
| 107 | def get_meta(self): | 107 | def get_meta(self): |
| 108 | self.tarin = tarfile.open(self.filename, 'r' + self.compression) | 108 | tarin = tarfile.open(self.filename, 'r' + self.compression) |
| 109 | metadata = {} | 109 | metadata = {} |
| 110 | for current_file in self.tarin.getmembers(): | 110 | for current_file in tarin.getmembers(): |
| 111 | if current_file.type is '0': | 111 | if current_file.type is '0': |
| 112 | if not self.is_file_clean(current_file):#if there is meta | 112 | if not self.is_file_clean(current_file):#if there is meta |
| 113 | current_meta = {} | 113 | current_meta = {} |
| @@ -117,11 +117,11 @@ class TarStripper(parser.Generic_parser): | |||
| 117 | current_meta['uname'] = current_file.uname | 117 | current_meta['uname'] = current_file.uname |
| 118 | current_meta['gname'] = current_file.gname | 118 | current_meta['gname'] = current_file.gname |
| 119 | metadata[current_file.name] = current_meta | 119 | metadata[current_file.name] = current_meta |
| 120 | tarin.close() | ||
| 120 | return metadata | 121 | return metadata |
| 121 | 122 | ||
| 122 | def remove_folder(self): | 123 | def remove_folder(self): |
| 123 | for folder in self.folder_list: #delete remainings folders | 124 | [shutil.rmtree(folder) for folder in self.folder_list] |
| 124 | shutil.rmtree(folder) | ||
| 125 | self.folder_list = [] | 125 | self.folder_list = [] |
| 126 | 126 | ||
| 127 | class GzipStripper(TarStripper): | 127 | class GzipStripper(TarStripper): |
