You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
663 B
26 lines
663 B
use std::io;
|
|
use std::path::Path;
|
|
|
|
#[cfg(unix)]
|
|
pub fn device_num<P: AsRef<Path>>(path: P) -> io::Result<u64> {
|
|
use std::os::unix::fs::MetadataExt;
|
|
|
|
path.as_ref().metadata().map(|md| md.dev())
|
|
}
|
|
|
|
#[cfg(windows)]
|
|
pub fn device_num<P: AsRef<Path>>(path: P) -> io::Result<u64> {
|
|
use winapi_util::{file, Handle};
|
|
|
|
let h = Handle::from_path_any(path)?;
|
|
file::information(h).map(|info| info.volume_serial_number())
|
|
}
|
|
|
|
#[cfg(not(any(unix, windows)))]
|
|
pub fn device_num<P: AsRef<Path>>(_: P) -> io::Result<u64> {
|
|
Err(io::Error::new(
|
|
io::ErrorKind::Other,
|
|
"walkdir: same_file_system option not supported on this platform",
|
|
))
|
|
}
|