From 6ee33dbcec61ae7980ba9ece6b75bc9cfa9655c2 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Thu, 30 Dec 2021 10:56:09 +0200 Subject: fix: handle dangling symlinks on command line Sponsored-by: author --- src/bin/summain.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/bin/summain.rs b/src/bin/summain.rs index 9365243..dbf8452 100644 --- a/src/bin/summain.rs +++ b/src/bin/summain.rs @@ -55,6 +55,13 @@ async fn main() -> anyhow::Result<()> { } fn find(root: &Path, files: &mut Vec) -> anyhow::Result<()> { + let meta = std::fs::symlink_metadata(root)?; + if meta.file_type().is_symlink() { + // Walkdir doesn't handle dangling symlinks so we handle all + // symlinks here. + files.push(root.to_path_buf()); + return Ok(()); + } for e in WalkDir::new(root) { files.push(e?.path().to_path_buf()); } -- cgit v1.2.1