unix: Use metadata for DirEntry::file_type
fallback
When `DirEntry::file_type` fails to match a known `d_type`, we should fall back to `DirEntry::metadata` instead of a bare `lstat`, because this is faster and more reliable on targets with `fstatat`.
This commit is contained in:
parent
a00e130dae
commit
d70b9c03ec
1 changed files with 2 additions and 2 deletions
|
@ -590,7 +590,7 @@ impl DirEntry {
|
|||
target_os = "vxworks"
|
||||
))]
|
||||
pub fn file_type(&self) -> io::Result<FileType> {
|
||||
lstat(&self.path()).map(|m| m.file_type())
|
||||
self.metadata().map(|m| m.file_type())
|
||||
}
|
||||
|
||||
#[cfg(not(any(
|
||||
|
@ -608,7 +608,7 @@ impl DirEntry {
|
|||
libc::DT_SOCK => Ok(FileType { mode: libc::S_IFSOCK }),
|
||||
libc::DT_DIR => Ok(FileType { mode: libc::S_IFDIR }),
|
||||
libc::DT_BLK => Ok(FileType { mode: libc::S_IFBLK }),
|
||||
_ => lstat(&self.path()).map(|m| m.file_type()),
|
||||
_ => self.metadata().map(|m| m.file_type()),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue