From 7e830d9f532cd7d9cadb6238ae217580edde07e8 Mon Sep 17 00:00:00 2001 From: ttyS3 Date: Fri, 6 Sep 2024 15:02:09 +0000 Subject: [PATCH] fix(archive): handle errors for unsupported formats Handle errors for unsupported formats in RAR and 7z archives by returning appropriate error messages. --- src/archive/rar.rs | 15 +++++++++------ src/archive/sevenz.rs | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/archive/rar.rs b/src/archive/rar.rs index 290916c..bbbd08f 100644 --- a/src/archive/rar.rs +++ b/src/archive/rar.rs @@ -53,13 +53,16 @@ pub fn list_archive( Some(password) => Archive::with_password(archive_path, password), None => Archive::new(archive_path), }; - archive.open_for_listing().expect("cannot open archive").map(|item| { - let item = item?; - let is_dir = item.is_directory(); - let path = item.filename; + match archive.open_for_listing() { + Ok(iter) => iter.map(|item| { + let item = item?; + let is_dir = item.is_directory(); + let path = item.filename; - Ok(FileInArchive { path, is_dir }) - }) + Ok(FileInArchive { path, is_dir }) + }).collect::>().into_iter(), + Err(e) => vec![Err(Error::UnsupportedFormat {reason:e.to_string()})].into_iter(), + } } pub fn no_compression() -> Error { diff --git a/src/archive/sevenz.rs b/src/archive/sevenz.rs index 3e3f646..774b379 100644 --- a/src/archive/sevenz.rs +++ b/src/archive/sevenz.rs @@ -187,7 +187,7 @@ pub fn list_archive( if let Err(e) = reader { return vec![Err(Error::IoError {reason:e.to_string()})].into_iter(); } - + let reader = reader.unwrap(); let mut files = Vec::new();