summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index fee2a96..7db1115 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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,
})
}
}