Struct cap_primitives::fs::Permissions
source · pub struct Permissions { /* private fields */ }
Expand description
Representation of the various permissions on a file.
This corresponds to std::fs::Permissions
.
We need to define our own version because the libstd `Permissions` doesn't
have a public constructor that we can use.
Implementations§
source§impl Permissions
impl Permissions
sourcepub fn from_std(std: Permissions) -> Self
pub fn from_std(std: Permissions) -> Self
Constructs a new instance of Self
from the given
std::fs::Permissions
.
sourcepub fn into_std(self, file: &File) -> Result<Permissions>
pub fn into_std(self, file: &File) -> Result<Permissions>
Consumes self
and produces a new instance of std::fs::Permissions
.
The `file` parameter works around the fact that we can't construct a
`Permissions` object ourselves on Windows.
Examples found in repository?
src/rustix/fs/set_permissions_impl.rs (line 20)
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
pub(crate) fn set_permissions_impl(
start: &fs::File,
path: &Path,
perm: Permissions,
) -> io::Result<()> {
let std_perm = perm.into_std(start)?;
// Try `fchmod` with a normal handle. Normal handles need some kind of
// access, so first try read.
match open(start, path, OpenOptions::new().read(true)) {
Ok(file) => return set_file_permissions(&file, std_perm),
Err(err) => match Errno::from_io_error(&err) {
Some(Errno::ACCESS) => (),
_ => return Err(err),
},
}
// Next try write.
match open(start, path, OpenOptions::new().write(true)) {
Ok(file) => return set_file_permissions(&file, std_perm),
Err(err) => match Errno::from_io_error(&err) {
Some(Errno::ACCESS) | Some(Errno::ISDIR) => (),
_ => return Err(err),
},
}
// If neither of those worked, we're out of luck.
Err(Errno::NOTSUP.into())
}
sourcepub const fn readonly(&self) -> bool
pub const fn readonly(&self) -> bool
Returns true
if these permissions describe a readonly (unwritable)
file.
This corresponds to std::fs::Permissions::readonly
.
sourcepub fn set_readonly(&mut self, readonly: bool)
pub fn set_readonly(&mut self, readonly: bool)
Modifies the readonly flag for this set of permissions.
This corresponds to std::fs::Permissions::set_readonly
.
Trait Implementations§
source§impl Clone for Permissions
impl Clone for Permissions
source§fn clone(&self) -> Permissions
fn clone(&self) -> Permissions
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for Permissions
impl Debug for Permissions
source§impl PartialEq<Permissions> for Permissions
impl PartialEq<Permissions> for Permissions
source§fn eq(&self, other: &Permissions) -> bool
fn eq(&self, other: &Permissions) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.