pub use nix::fcntl::FlockArg;
pub use nix::fcntl::FlockArg::*;
use super::*;
pub trait Flock {
fn flock(&self, arg: FlockArg) -> io::Result<bool>;
}
impl Flock for File {
fn flock(&self, arg: FlockArg) -> io::Result<bool> {
match nix::fcntl::flock(self.as_raw_fd(), arg) {
Ok(()) => Ok(true),
Err(errno) if errno == nix::Error::EWOULDBLOCK => Ok(false),
Err(errno) => Err(std::io::Error::from_raw_os_error(errno as i32)),
}
}
}