tools: pub use Fd from proxmox crate
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
parent
fd7c0979b4
commit
00ec8d1685
39
src/tools.rs
39
src/tools.rs
|
@ -7,7 +7,7 @@ use std::hash::BuildHasher;
|
||||||
use std::fs::{File, OpenOptions};
|
use std::fs::{File, OpenOptions};
|
||||||
use std::io::ErrorKind;
|
use std::io::ErrorKind;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
|
use std::os::unix::io::{AsRawFd, RawFd};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@ use percent_encoding::AsciiSet;
|
||||||
|
|
||||||
use proxmox::tools::vec;
|
use proxmox::tools::vec;
|
||||||
|
|
||||||
|
pub use proxmox::tools::fd::Fd;
|
||||||
|
|
||||||
pub mod acl;
|
pub mod acl;
|
||||||
pub mod async_io;
|
pub mod async_io;
|
||||||
pub mod borrow;
|
pub mod borrow;
|
||||||
|
@ -500,41 +502,6 @@ pub fn fail_on_shutdown() -> Result<(), Error> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Guard a raw file descriptor with a drop handler. This is mostly useful when access to an owned
|
|
||||||
/// `RawFd` is required without the corresponding handler object (such as when only the file
|
|
||||||
/// descriptor number is required in a closure which may be dropped instead of being executed).
|
|
||||||
pub struct Fd(pub RawFd);
|
|
||||||
|
|
||||||
impl Drop for Fd {
|
|
||||||
fn drop(&mut self) {
|
|
||||||
if self.0 != -1 {
|
|
||||||
unsafe {
|
|
||||||
libc::close(self.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl AsRawFd for Fd {
|
|
||||||
fn as_raw_fd(&self) -> RawFd {
|
|
||||||
self.0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl IntoRawFd for Fd {
|
|
||||||
fn into_raw_fd(mut self) -> RawFd {
|
|
||||||
let fd = self.0;
|
|
||||||
self.0 = -1;
|
|
||||||
fd
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FromRawFd for Fd {
|
|
||||||
unsafe fn from_raw_fd(fd: RawFd) -> Self {
|
|
||||||
Self(fd)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// wrap nix::unistd::pipe2 + O_CLOEXEC into something returning guarded file descriptors
|
// wrap nix::unistd::pipe2 + O_CLOEXEC into something returning guarded file descriptors
|
||||||
pub fn pipe() -> Result<(Fd, Fd), Error> {
|
pub fn pipe() -> Result<(Fd, Fd), Error> {
|
||||||
let (pin, pout) = nix::unistd::pipe2(nix::fcntl::OFlag::O_CLOEXEC)?;
|
let (pin, pout) = nix::unistd::pipe2(nix::fcntl::OFlag::O_CLOEXEC)?;
|
||||||
|
|
Loading…
Reference in New Issue