use crate::error::Error;
use crate::platform;
use crate::platform::ffi;
use std::path::Path;
pub struct FileInfo {
handle: ffi::CzFileInfo,
}
unsafe impl Send for FileInfo {}
unsafe impl Sync for FileInfo {}
pub fn info(path: &Path) -> Result<FileInfo, Error> {
platform::outcome(
ffi::cz_file_info(&path.display().to_string()),
format!("read {}'s file info", path.display()),
)
.map(|outcome| FileInfo {
handle: outcome.file_info(),
})
}
impl FileInfo {
pub fn mode(&self) -> u16 {
self.handle.mode()
}
pub fn uid(&self) -> i64 {
self.handle.uid()
}
pub fn gid(&self) -> i64 {
self.handle.gid()
}
pub fn dev(&self) -> i64 {
self.handle.dev()
}
pub fn ino(&self) -> i64 {
self.handle.ino()
}
pub fn size(&self) -> i64 {
self.handle.size()
}
pub fn path(&self) -> String {
self.handle.path()
}
pub fn is_directory(&self) -> bool {
self.handle.is_directory()
}
pub fn is_pipe(&self) -> bool {
self.handle.is_pipe()
}
pub fn is_socket(&self) -> bool {
self.handle.is_socket()
}
pub fn is_link(&self) -> bool {
self.handle.is_link()
}
pub fn is_regular_file(&self) -> bool {
self.handle.is_regular_file()
}
pub fn is_block(&self) -> bool {
self.handle.is_block()
}
pub fn is_char(&self) -> bool {
self.handle.is_char()
}
}