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