use std::fs::Metadata;
use std::io;
pub(super) use crate::native_file_identity::{of_file, NativeIdentity};
pub(crate) fn require_direct_entry(metadata: &Metadata) -> io::Result<()> {
if metadata.file_type().is_symlink() {
return Err(super::invalid(
"symlinks are outside the captured fault model",
));
}
#[cfg(windows)]
{
use std::os::windows::fs::MetadataExt;
const FILE_ATTRIBUTE_REPARSE_POINT: u32 = 0x400;
if metadata.file_attributes() & FILE_ATTRIBUTE_REPARSE_POINT != 0 {
return Err(super::invalid(
"reparse points are outside the captured fault model",
));
}
}
Ok(())
}