mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
..
This commit is contained in:
parent
6eac3c0818
commit
2e389f710c
1 changed files with 7 additions and 6 deletions
|
|
@ -87,18 +87,19 @@ fn casefold_impl(path: PathBuf) -> io::Result<PathBuf> {
|
||||||
let mut names = vec![];
|
let mut names = vec![];
|
||||||
for entry in std::fs::read_dir(parent)? {
|
for entry in std::fs::read_dir(parent)? {
|
||||||
let entry = entry?;
|
let entry = entry?;
|
||||||
if let m = entry.metadata()?
|
let n = entry.file_name(); // TODO: use `file_name_ref()` when stabilized
|
||||||
|
|
||||||
|
if n == name {
|
||||||
|
return Ok(PathBuf::from(OsString::from_vec(cstr.into_bytes())));
|
||||||
|
} else if let m = entry.metadata()?
|
||||||
&& m.ino() == meta.ino()
|
&& m.ino() == meta.ino()
|
||||||
&& m.dev() == meta.dev()
|
&& m.dev() == meta.dev()
|
||||||
{
|
{
|
||||||
names.push(entry.file_name());
|
names.push(n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if names.iter().find(|&n| n == name).is_some() {
|
if names.len() == 1 {
|
||||||
// Exact match
|
|
||||||
Ok(PathBuf::from(OsString::from_vec(cstr.into_bytes())))
|
|
||||||
} else if names.len() == 1 {
|
|
||||||
// No hardlink that shares the same inode
|
// No hardlink that shares the same inode
|
||||||
Ok(parent.join(&names[0]))
|
Ok(parent.join(&names[0]))
|
||||||
} else if let mut it = names.iter().enumerate().filter(|&(_, n)| n.eq_ignore_ascii_case(name))
|
} else if let mut it = names.iter().enumerate().filter(|&(_, n)| n.eq_ignore_ascii_case(name))
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue