Suggested-by: Wolfgang Bumiller <w.bumil...@proxmox.com> Signed-off-by: Lukas Wagner <l.wag...@proxmox.com> --- proxmox-shared-memory/src/lib.rs | 4 ++-- proxmox-sys/src/fs/file.rs | 4 ++-- proxmox-sys/src/fs/mod.rs | 9 ++++----- 3 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/proxmox-shared-memory/src/lib.rs b/proxmox-shared-memory/src/lib.rs index 4809bd0..3aa04cd 100644 --- a/proxmox-shared-memory/src/lib.rs +++ b/proxmox-shared-memory/src/lib.rs @@ -130,8 +130,8 @@ impl<T: Sized + Init> SharedMemory<T> { // create temporary file using O_TMPFILE let mut file = match nix::fcntl::open(&dir_name, oflag | OFlag::O_TMPFILE, Mode::empty()) { Ok(fd) => { - let mut file = unsafe { File::from_raw_fd(fd) }; - options.apply_to(&mut file, &dir_name)?; + let file = unsafe { File::from_raw_fd(fd) }; + options.apply_to(fd, &dir_name)?; file } Err(err) => { diff --git a/proxmox-sys/src/fs/file.rs b/proxmox-sys/src/fs/file.rs index ac51389..5d74f31 100644 --- a/proxmox-sys/src/fs/file.rs +++ b/proxmox-sys/src/fs/file.rs @@ -135,12 +135,12 @@ pub fn make_tmp_file<P: AsRef<Path>>( // use mkstemp here, because it works with different processes, threads, even tokio tasks let mut template = path.to_owned(); template.set_extension("tmp_XXXXXX"); - let (mut file, tmp_path) = match unistd::mkstemp(&template) { + let (file, tmp_path) = match unistd::mkstemp(&template) { Ok((fd, path)) => (unsafe { File::from_raw_fd(fd) }, path), Err(err) => bail!("mkstemp {:?} failed: {}", template, err), }; - match options.apply_to(&mut file, &tmp_path) { + match options.apply_to(file.as_raw_fd(), &tmp_path) { Ok(()) => Ok((file, tmp_path)), Err(err) => { let _ = unistd::unlink(&tmp_path); diff --git a/proxmox-sys/src/fs/mod.rs b/proxmox-sys/src/fs/mod.rs index ae54d78..8d790a4 100644 --- a/proxmox-sys/src/fs/mod.rs +++ b/proxmox-sys/src/fs/mod.rs @@ -1,12 +1,11 @@ //! File system related utilities -use std::fs::File; use std::path::Path; use anyhow::{bail, Error}; use nix::sys::stat; use nix::unistd::{Gid, Uid}; -use std::os::unix::io::{AsRawFd, RawFd}; +use std::os::unix::io::RawFd; #[cfg(feature = "acl")] pub mod acl; @@ -68,15 +67,15 @@ impl CreateOptions { self.owner(nix::unistd::ROOT) } - pub fn apply_to(&self, file: &mut File, path: &Path) -> Result<(), Error> { + pub fn apply_to(&self, fd: RawFd, path: &Path) -> Result<(), Error> { let mode: stat::Mode = self.perm.unwrap_or(stat::Mode::from_bits_truncate(0o644)); - if let Err(err) = stat::fchmod(file.as_raw_fd(), mode) { + if let Err(err) = stat::fchmod(fd, mode) { bail!("fchmod {:?} failed: {}", path, err); } if self.owner.is_some() || self.group.is_some() { - if let Err(err) = fchown(file.as_raw_fd(), self.owner, self.group) { + if let Err(err) = fchown(fd, self.owner, self.group) { bail!("fchown {:?} failed: {}", path, err); } } -- 2.39.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel