implement basic ordering. This might still be wrong!!
This commit is contained in:
parent
d1ef6513ce
commit
dfad5cc74c
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -31,7 +31,7 @@ checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a"
|
||||
|
||||
[[package]]
|
||||
name = "posix-acl"
|
||||
version = "0.1.1"
|
||||
version = "0.1.3"
|
||||
dependencies = [
|
||||
"acl-sys",
|
||||
"anyhow",
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "posix-acl"
|
||||
version = "0.1.1"
|
||||
version = "0.1.3"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
|
24
src/lib.rs
24
src/lib.rs
@ -35,22 +35,22 @@ pub static ACL_NONE: PermSet = PermSet::empty();
|
||||
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
|
||||
pub enum Qualifier {
|
||||
UserObj,
|
||||
GroupObj,
|
||||
Other,
|
||||
User(u32),
|
||||
GroupObj,
|
||||
Group(u32),
|
||||
Mask,
|
||||
Other,
|
||||
}
|
||||
|
||||
impl Qualifier {
|
||||
pub fn get_tag(&self) -> i32 {
|
||||
match self {
|
||||
Qualifier::UserObj => ACL_USER_OBJ,
|
||||
Qualifier::GroupObj => ACL_GROUP_OBJ,
|
||||
Qualifier::Other => ACL_OTHER,
|
||||
Qualifier::User(_) => ACL_USER,
|
||||
Qualifier::GroupObj => ACL_GROUP_OBJ,
|
||||
Qualifier::Group(_) => ACL_GROUP,
|
||||
Qualifier::Mask => ACL_MASK,
|
||||
Qualifier::Other => ACL_OTHER,
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,10 +63,16 @@ impl Qualifier {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Ord)]
|
||||
pub struct ACLEntry(pub Qualifier, pub PermSet);
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
|
||||
impl PartialOrd for ACLEntry {
|
||||
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
|
||||
Some(self.0.cmp(&other.0))
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd)]
|
||||
pub struct PosixACL {
|
||||
pub entries: Vec<ACLEntry>,
|
||||
}
|
||||
@ -201,6 +207,7 @@ impl PosixACL {
|
||||
pub fn write<P: AsRef<Path>>(&self, path: P) -> Result<()> {
|
||||
// Write ACL to file
|
||||
self.write_type(path, ACL_TYPE_ACCESS)?;
|
||||
// TODO: If necessary fix mask
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -333,8 +340,11 @@ mod test {
|
||||
file.write_all(b"Hello, world!").unwrap();
|
||||
|
||||
acl.write(path).unwrap();
|
||||
acl.entries.sort();
|
||||
|
||||
let mut acl_r = PosixACL::new_from_file(path, false).unwrap();
|
||||
acl_r.entries.sort();
|
||||
|
||||
let acl_r = PosixACL::new_from_file(path, false).unwrap();
|
||||
println!("{:?}", acl);
|
||||
assert_eq!(acl.entries.len(), acl_r.entries.len());
|
||||
let missing = acl
|
||||
|
Loading…
Reference in New Issue
Block a user