diff options
Diffstat (limited to 'lib/archive.py')
| -rw-r--r-- | lib/archive.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/archive.py b/lib/archive.py index f22af39..f11506a 100644 --- a/lib/archive.py +++ b/lib/archive.py | |||
| @@ -9,11 +9,13 @@ import tempfile | |||
| 9 | import parser | 9 | import parser |
| 10 | import mat | 10 | import mat |
| 11 | 11 | ||
| 12 | |||
| 12 | class GenericArchiveStripper(parser.Generic_parser): | 13 | class GenericArchiveStripper(parser.Generic_parser): |
| 13 | ''' | 14 | ''' |
| 14 | Represent a generic archive | 15 | Represent a generic archive |
| 15 | ''' | 16 | ''' |
| 16 | def __init__(self, realname, filename, parser, editor, backup, add2archive): | 17 | def __init__(self, realname, filename, parser, editor, backup, |
| 18 | add2archive): | ||
| 17 | super(GenericArchiveStripper, self).__init__(realname, | 19 | super(GenericArchiveStripper, self).__init__(realname, |
| 18 | filename, parser, editor, backup, add2archive) | 20 | filename, parser, editor, backup, add2archive) |
| 19 | self.compression = '' | 21 | self.compression = '' |
| @@ -32,6 +34,7 @@ class GenericArchiveStripper(parser.Generic_parser): | |||
| 32 | def remove_all_ugly(self): | 34 | def remove_all_ugly(self): |
| 33 | self._remove_all('ugly') | 35 | self._remove_all('ugly') |
| 34 | 36 | ||
| 37 | |||
| 35 | class ZipStripper(GenericArchiveStripper): | 38 | class ZipStripper(GenericArchiveStripper): |
| 36 | ''' | 39 | ''' |
| 37 | Represent a zip file | 40 | Represent a zip file |
| @@ -94,7 +97,6 @@ harmless format' % item.filename) | |||
| 94 | zipin.close() | 97 | zipin.close() |
| 95 | return metadata | 98 | return metadata |
| 96 | 99 | ||
| 97 | |||
| 98 | def _remove_all(self, method): | 100 | def _remove_all(self, method): |
| 99 | ''' | 101 | ''' |
| 100 | So far, the zipfile module does not allow to write a ZipInfo | 102 | So far, the zipfile module does not allow to write a ZipInfo |
| @@ -150,7 +152,7 @@ class TarStripper(GenericArchiveStripper): | |||
| 150 | for item in tarin.getmembers(): | 152 | for item in tarin.getmembers(): |
| 151 | tarin.extract(item, self.tempdir) | 153 | tarin.extract(item, self.tempdir) |
| 152 | name = os.path.join(self.tempdir, item.name) | 154 | name = os.path.join(self.tempdir, item.name) |
| 153 | if item.type is '0': #is item a regular file ? | 155 | if item.type is '0': # is item a regular file ? |
| 154 | #no backup file | 156 | #no backup file |
| 155 | try: | 157 | try: |
| 156 | cfile = mat.create_class_file(name, False, | 158 | cfile = mat.create_class_file(name, False, |
| @@ -164,7 +166,7 @@ class TarStripper(GenericArchiveStripper): | |||
| 164 | logging.info('%s\' format is not supported' % | 166 | logging.info('%s\' format is not supported' % |
| 165 | item.name) | 167 | item.name) |
| 166 | if self.add2archive: | 168 | if self.add2archive: |
| 167 | tarout.add(name, item.name,filter=self._remove) | 169 | tarout.add(name, item.name, filter=self._remove) |
| 168 | mat.secure_remove(name) | 170 | mat.secure_remove(name) |
| 169 | tarin.close() | 171 | tarin.close() |
| 170 | tarout.close() | 172 | tarout.close() |
| @@ -194,7 +196,7 @@ class TarStripper(GenericArchiveStripper): | |||
| 194 | return False | 196 | return False |
| 195 | tarin.extract(item, self.tempdir) | 197 | tarin.extract(item, self.tempdir) |
| 196 | name = os.path.join(self.tempdir, item.name) | 198 | name = os.path.join(self.tempdir, item.name) |
| 197 | if item.type is '0': #is item a regular file ? | 199 | if item.type is '0': # is item a regular file ? |
| 198 | #no backup file | 200 | #no backup file |
| 199 | try: | 201 | try: |
| 200 | class_file = mat.create_class_file(name, | 202 | class_file = mat.create_class_file(name, |
| @@ -216,7 +218,7 @@ class TarStripper(GenericArchiveStripper): | |||
| 216 | metadata = {} | 218 | metadata = {} |
| 217 | for current_file in tarin.getmembers(): | 219 | for current_file in tarin.getmembers(): |
| 218 | if current_file.type is '0': | 220 | if current_file.type is '0': |
| 219 | if not self.is_file_clean(current_file):#if there is meta | 221 | if not self.is_file_clean(current_file): # if there is meta |
| 220 | current_meta = {} | 222 | current_meta = {} |
| 221 | current_meta['mtime'] = current_file.mtime | 223 | current_meta['mtime'] = current_file.mtime |
| 222 | current_meta['uid'] = current_file.uid | 224 | current_meta['uid'] = current_file.uid |
| @@ -229,14 +231,16 @@ class TarStripper(GenericArchiveStripper): | |||
| 229 | 231 | ||
| 230 | 232 | ||
| 231 | class GzipStripper(TarStripper): | 233 | class GzipStripper(TarStripper): |
| 232 | def __init__(self, realname, filename, parser, editor, backup, add2archive): | 234 | def __init__(self, realname, filename, parser, editor, backup, |
| 235 | add2archive): | ||
| 233 | super(GzipStripper, self).__init__(realname, | 236 | super(GzipStripper, self).__init__(realname, |
| 234 | filename, parser, editor, backup, add2archive) | 237 | filename, parser, editor, backup, add2archive) |
| 235 | self.compression = ':gz' | 238 | self.compression = ':gz' |
| 236 | 239 | ||
| 237 | 240 | ||
| 238 | class Bzip2Stripper(TarStripper): | 241 | class Bzip2Stripper(TarStripper): |
| 239 | def __init__(self, realname, filename, parser, editor, backup, add2archive): | 242 | def __init__(self, realname, filename, parser, editor, backup, |
| 243 | add2archive): | ||
| 240 | super(Bzip2Stripper, self).__init__(realname, | 244 | super(Bzip2Stripper, self).__init__(realname, |
| 241 | filename, parser, editor, backup, add2archive) | 245 | filename, parser, editor, backup, add2archive) |
| 242 | self.compression = ':bz2' | 246 | self.compression = ':bz2' |
