summaryrefslogtreecommitdiff
path: root/lib/archive.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/archive.py')
-rw-r--r--lib/archive.py20
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
9import parser 9import parser
10import mat 10import mat
11 11
12
12class GenericArchiveStripper(parser.Generic_parser): 13class 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
35class ZipStripper(GenericArchiveStripper): 38class 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
231class GzipStripper(TarStripper): 233class 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
238class Bzip2Stripper(TarStripper): 241class 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'