mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-03 03:47:42 +00:00
55 lines
1021 B
Rust
55 lines
1021 B
Rust
use std::{fs::Metadata, path::Path};
|
|
|
|
use tokio::{fs, io};
|
|
|
|
#[cfg(not(windows))]
|
|
pub fn same_file(f1: &Metadata, f2: &Metadata) -> bool {
|
|
use std::os::unix::fs::MetadataExt;
|
|
|
|
if f1.dev() != f2.dev() {
|
|
return false;
|
|
}
|
|
|
|
if f1.ino() != f2.ino() {
|
|
return false;
|
|
}
|
|
|
|
if f1.size() != f2.size() {
|
|
return false;
|
|
}
|
|
if f1.permissions() != f2.permissions() {
|
|
return false;
|
|
}
|
|
|
|
if f1.mtime() != f2.mtime() {
|
|
return false;
|
|
}
|
|
|
|
true
|
|
}
|
|
|
|
#[cfg(windows)]
|
|
pub fn same_file(f1: &Metadata, f2: &Metadata) -> bool {
|
|
if f1.permissions() != f2.permissions() {
|
|
return false;
|
|
}
|
|
|
|
if f1.file_type() != f2.file_type() {
|
|
return false;
|
|
}
|
|
|
|
if f1.len() != f2.len() {
|
|
return false;
|
|
}
|
|
true
|
|
}
|
|
|
|
pub async fn access(path: impl AsRef<Path>) -> io::Result<()> {
|
|
fs::metadata(path).await?;
|
|
Ok(())
|
|
}
|
|
|
|
pub async fn make_dir_all(path: impl AsRef<Path>) -> io::Result<()> {
|
|
fs::create_dir_all(path.as_ref()).await
|
|
}
|