Fix returned ExtractedFiles in do_extract_zip

Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com>
This commit is contained in:
Jiahao XU 2024-10-30 11:04:53 +11:00 committed by GitHub
parent f3ddc224ba
commit 360cb23d00
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -13,7 +13,7 @@ pub(super) fn do_extract_zip(f: File, dir: &Path) -> Result<ExtractedFiles, Down
let mut extracted_files = ExtractedFiles::new(); let mut extracted_files = ExtractedFiles::new();
for entry in f.read_zip()?.entries() { for entry in f.read_zip()?.entries() {
let Some(name) = entry.sanitized_name() else { let Some(name) = entry.sanitized_name().map(Path::new) else {
continue; continue;
}; };
let path = dir.join(name); let path = dir.join(name);
@ -30,11 +30,10 @@ pub(super) fn do_extract_zip(f: File, dir: &Path) -> Result<ExtractedFiles, Down
.parent() .parent()
.expect("all full entry paths should have parent paths"); .expect("all full entry paths should have parent paths");
create_dir_all(parent)?; create_dir_all(parent)?;
extracted_files.add_dir(parent);
match entry.kind() { match entry.kind() {
EntryKind::Symlink => { EntryKind::Symlink => {
extracted_files.add_file(&path); extracted_files.add_file(&name);
cfg_if! { cfg_if! {
if #[cfg(windows)] { if #[cfg(windows)] {
do_extract_file()?; do_extract_file()?;
@ -57,7 +56,7 @@ pub(super) fn do_extract_zip(f: File, dir: &Path) -> Result<ExtractedFiles, Down
} }
EntryKind::Directory => (), EntryKind::Directory => (),
EntryKind::File => { EntryKind::File => {
extracted_files.add_file(&path); extracted_files.add_file(&name);
do_extract_file()?; do_extract_file()?;
} }
} }