summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjvoisin2011-06-30 17:13:17 +0200
committerjvoisin2011-06-30 17:13:17 +0200
commit6d53d90e8e133660e4ac482ffbec5c17cf98f41b (patch)
tree475c5aa3a15c1ce9b4fa7ac71d19cc9c5c008cc7
parentc0ce24e9b06e9325e5bcdce05ca89c3e2374b585 (diff)
Full support of metadata cleaning of archives
-rw-r--r--lib/archive.py24
1 files changed, 13 insertions, 11 deletions
diff --git a/lib/archive.py b/lib/archive.py
index a78895c..7b94edf 100644
--- a/lib/archive.py
+++ b/lib/archive.py
@@ -13,6 +13,17 @@ class TarStripper(parser.Generic_parser):
13 self.tarin = tarfile.open(self.filename, 'r' + self.compression) 13 self.tarin = tarfile.open(self.filename, 'r' + self.compression)
14 self.folder_list = [] 14 self.folder_list = []
15 15
16 def _remove(self, current_file):
17 '''
18 remove the meta added by tar itself to the file
19 '''
20 current_file.mtime = 0
21 current_file.uid = 0
22 current_file.gid = 0
23 current_file.uname = ''
24 current_file.gname = ''
25 return current_file
26
16 def remove_all(self): 27 def remove_all(self):
17 self.tarin = tarfile.open(self.filename, 'r' + self.compression) 28 self.tarin = tarfile.open(self.filename, 'r' + self.compression)
18 self.tarout = tarfile.open(self.filename + parser.POSTFIX, 29 self.tarout = tarfile.open(self.filename + parser.POSTFIX,
@@ -23,25 +34,16 @@ class TarStripper(parser.Generic_parser):
23 #no backup file 34 #no backup file
24 class_file = mat.create_class_file(current_file.name, False) 35 class_file = mat.create_class_file(current_file.name, False)
25 class_file.remove_all() 36 class_file.remove_all()
26 self.tarout.add(current_file.name) 37 self.tarout.add(current_file.name, filter=self._remove)
27 mat.secure_remove(current_file.name) 38 mat.secure_remove(current_file.name)
28 else: 39 else:
29 self.folder_list.insert(0, current_file.name) 40 self.folder_list.insert(0, current_file.name)
30 self.tarin.close() 41 self.tarin.close()
42 self.tarout.close()
31 43
32 for folder in self.folder_list: #delete remainings folders 44 for folder in self.folder_list: #delete remainings folders
33 shutil.rmtree(folder) 45 shutil.rmtree(folder)
34 46
35 #meta from the tar itself
36 for current_file in self.tarout.getmembers():
37 current_file.mtime = None
38 current_file.uid = 0
39 current_file.gid = 0
40 current_file.uname = ''
41 current_file.gname = ''
42 print current_file.gname
43 self.tarout.close()
44
45 if self.backup is False: 47 if self.backup is False:
46 mat.secure_remove(self.filename) 48 mat.secure_remove(self.filename)
47 os.rename(self.filename + parser.POSTFIX, self.filename) 49 os.rename(self.filename + parser.POSTFIX, self.filename)