diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/manifest.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/manifest.rs b/src/manifest.rs index c25f0a8..afbf5d6 100644 --- a/src/manifest.rs +++ b/src/manifest.rs @@ -185,6 +185,10 @@ fn collect_archive_members(archive_path: &Path) -> Result<Vec<ArchiveMemberRecor let mut members = Vec::new(); for entry in archive.entries().with_context(|| format!("read archive {}", archive_path.display()))? { let entry = entry.with_context(|| format!("read archive member from {}", archive_path.display()))?; + let path = portable_path(&entry.path()?)?; + if is_archive_root_path(&path) || is_internal_metadata_path(&path) { + continue; + } let kind = match entry.header().entry_type() { EntryType::Regular => "file", EntryType::Directory => "directory", @@ -192,7 +196,7 @@ fn collect_archive_members(archive_path: &Path) -> Result<Vec<ArchiveMemberRecor EntryType::Link => "hardlink", other => bail!("unsupported archive member type {other:?} in {}", archive_path.display()), }; - members.push(ArchiveMemberRecord::new(portable_path(&entry.path()?)?, kind)); + members.push(ArchiveMemberRecord::new(path, kind)); } Ok(members) } |