Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn check_permission(&self, obj: &'a FsObject, perm: Permissions) -> Result<&'a FsObject, ()>
- {
- match((obj.can_read(&self.user), obj.can_write(&self.user), perm))
- {
- (true, _, Permissions::Read) => Ok(obj),
- (true, true, Permissions::ReadWrite) => Ok(obj),
- _ => Err(()),
- }
- }
- pub fn open(&self, path: path::Path) -> Result<&'a VROFile, ()>
- {
- let obj = self.vfs.get_object(path)?;
- if let Ok(FsObject{obj_type: FsObjTypes::file(file), ..}) = self.check_permission(&obj, Permissions::Read)
- {
- Ok(file.as_ref().as_ro())
- }
- else if let Ok(FsObject{obj_type: FsObjTypes::ro_file(file), ..}) = self.check_permission(&obj, Permissions::Read)
- {
- Ok(file.as_ref())
- }
- else
- {
- Err(())
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement