mirror of
https://git.proxmox.com/git/proxmox
synced 2026-03-24 11:40:13 +00:00
new helper create_dir_chown
moved from proxmox-backup.
This commit is contained in:
parent
9f63a6506e
commit
51d891af5d
@ -159,6 +159,33 @@ pub fn fchown(
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates directory at the provided path with specified ownership
|
||||||
|
///
|
||||||
|
/// Simply returns if the directory already exists.
|
||||||
|
pub fn create_dir_chown<P: AsRef<Path>>(
|
||||||
|
path: P,
|
||||||
|
perm: Option<stat::Mode>,
|
||||||
|
owner: Option<unistd::Uid>,
|
||||||
|
group: Option<unistd::Gid>,
|
||||||
|
) -> Result<(), nix::Error>
|
||||||
|
{
|
||||||
|
let mode : stat::Mode = perm.unwrap_or(stat::Mode::from_bits_truncate(0o770));
|
||||||
|
|
||||||
|
let path = path.as_ref();
|
||||||
|
|
||||||
|
match nix::unistd::mkdir(path, mode) {
|
||||||
|
Ok(()) => {},
|
||||||
|
Err(nix::Error::Sys(nix::errno::Errno::EEXIST)) => {
|
||||||
|
return Ok(());
|
||||||
|
},
|
||||||
|
err => return err,
|
||||||
|
}
|
||||||
|
|
||||||
|
unistd::chown(path, owner, group)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
// /usr/include/linux/fs.h: #define BLKGETSIZE64 _IOR(0x12,114,size_t)
|
// /usr/include/linux/fs.h: #define BLKGETSIZE64 _IOR(0x12,114,size_t)
|
||||||
// return device size in bytes (u64 *arg)
|
// return device size in bytes (u64 *arg)
|
||||||
nix::ioctl_read!(blkgetsize64, 0x12, 114, u64);
|
nix::ioctl_read!(blkgetsize64, 0x12, 114, u64);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user