diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -31,8 +31,8 @@ use serde::Serialize; use sha2::{Digest, Sha256}; -use std::fs::symlink_metadata; use std::fs::File; +use std::fs::{read_link, symlink_metadata}; use std::io::{BufReader, Read}; use std::os::linux::fs::MetadataExt; use std::path::{Path, PathBuf}; @@ -50,6 +50,7 @@ pub struct ManifestEntry { nlink: u64, size: Option<u64>, sha256: Option<String>, + target: Option<PathBuf>, } impl ManifestEntry { @@ -66,6 +67,11 @@ impl ManifestEntry { } else { None }; + let target = if m.file_type().is_symlink() { + Some(read_link(path)?) + } else { + None + }; Ok(Self { path: path.to_path_buf(), mode: m.st_mode(), @@ -74,6 +80,7 @@ impl ManifestEntry { nlink: m.st_nlink(), size: if m.is_dir() { None } else { Some(m.st_size()) }, sha256: hash, + target, }) } } |