# Get a list of files in the archive.
members = payload_archive.getmembers()
- i = 0
- for member in members:
- # Update progress.
- if pb:
- i += 1
- pb.update(i)
+ name2file = {}
+ for file in self.filelist:
+ name = file.name
- file = None
- for f in self.filelist:
- m_name = "/%s" % member.name
- if f.is_dir():
- m_name = "%s/" % m_name
+ if file.is_dir():
+ name = name[:-1]
- if m_name == f.name:
- file = f
- break
+ name2file[name] = file
+ i = 0
+ for member in members:
+ file = name2file.get("/%s" % member.name, None)
if not file:
logging.warning(_("File in archive is missing in file metadata: /%s. Skipping.") % member.name)
continue
+ # Update progress.
+ if pb:
+ i += 1
+ pb.update(i)
+
target = os.path.join(prefix, member.name)
# Check if a configuration file is already present. We don't want to