diff --git a/src/archive/tar.rs b/src/archive/tar.rs index b0285e8..7b9b53a 100644 --- a/src/archive/tar.rs +++ b/src/archive/tar.rs @@ -38,18 +38,14 @@ pub fn unpack_archive(reader: Box, output_folder: &Path, quiet: bool) .link_name()? .ok_or_else(|| std::io::Error::new(std::io::ErrorKind::InvalidData, "Missing symlink target"))?; - if target.is_file() { - #[cfg(unix)] - std::os::unix::fs::symlink(&target, &full_path)?; - #[cfg(windows)] - std::os::windows::fs::symlink_file(&target, &full_path)?; - } - if target.is_dir() { - #[cfg(unix)] - std::os::unix::fs::symlink(&target, &full_path)?; - #[cfg(windows)] - std::os::windows::fs::symlink_dir(&target, &full_path)?; - } + #[cfg(unix)] + std::os::unix::fs::symlink(&target, &full_path)?; + + // FIXME: how to detect whether the destination is a folder or a regular file? + // regular file should use fs::symlink_file + // folder should use fs::symlink_file + #[cfg(windows)] + std::os::windows::fs::symlink_file(&target, &full_path)?; } tar::EntryType::Regular | tar::EntryType::Directory => { file.unpack_in(output_folder)?;