fixed commands not getting hashed through symlinks

This commit is contained in:
2026-02-25 16:03:42 -05:00
parent 86c9fe281a
commit 6651f86ce3

View File

@@ -776,11 +776,10 @@ impl MetaTab {
for path in paths { for path in paths {
if let Ok(entries) = path.read_dir() { if let Ok(entries) = path.read_dir() {
for entry in entries.flatten() { for entry in entries.flatten() {
let Ok(meta) = entry.metadata() else { continue }; let Ok(meta) = std::fs::metadata(entry.path()) else { continue };
let is_exec = meta.permissions().mode() & 0o111 != 0; let is_exec = meta.permissions().mode() & 0o111 != 0;
if let Ok(file_type) = entry.file_type() if meta.is_file() && is_exec
&& file_type.is_file() && is_exec
&& let Some(name) = entry.file_name().to_str() { && let Some(name) = entry.file_name().to_str() {
self.path_cache.insert(name.to_string()); self.path_cache.insert(name.to_string());
} }
@@ -789,11 +788,10 @@ impl MetaTab {
} }
if let Ok(entries) = Path::new(&cwd).read_dir() { if let Ok(entries) = Path::new(&cwd).read_dir() {
for entry in entries.flatten() { for entry in entries.flatten() {
let Ok(meta) = entry.metadata() else { continue }; let Ok(meta) = std::fs::metadata(entry.path()) else { continue };
let is_exec = meta.permissions().mode() & 0o111 != 0; let is_exec = meta.permissions().mode() & 0o111 != 0;
if let Ok(file_type) = entry.file_type() if meta.is_file() && is_exec
&& file_type.is_file() && is_exec
&& let Some(name) = entry.file_name().to_str() { && let Some(name) = entry.file_name().to_str() {
self.path_cache.insert(format!("./{}", name)); self.path_cache.insert(format!("./{}", name));
} }
@@ -826,11 +824,10 @@ impl MetaTab {
if let Ok(entries) = Path::new(&cwd).read_dir() { if let Ok(entries) = Path::new(&cwd).read_dir() {
for entry in entries.flatten() { for entry in entries.flatten() {
let Ok(meta) = entry.metadata() else { continue }; let Ok(meta) = std::fs::metadata(entry.path()) else { continue };
let is_exec = meta.permissions().mode() & 0o111 != 0; let is_exec = meta.permissions().mode() & 0o111 != 0;
if let Ok(file_type) = entry.file_type() if meta.is_file() && is_exec
&& file_type.is_file() && is_exec
&& let Some(name) = entry.file_name().to_str() { && let Some(name) = entry.file_name().to_str() {
self.cwd_cache.insert(name.to_string()); self.cwd_cache.insert(name.to_string());
} }