Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. fn check_permission(&self, obj: &'a FsObject, perm: Permissions) -> Result<&'a FsObject, ()>
  2. {
  3. match((obj.can_read(&self.user), obj.can_write(&self.user), perm))
  4. {
  5. (true, _, Permissions::Read) => Ok(obj),
  6. (true, true, Permissions::ReadWrite) => Ok(obj),
  7. _ => Err(()),
  8. }
  9. }
  10.  
  11. pub fn open(&self, path: path::Path) -> Result<&'a VROFile, ()>
  12. {
  13. let obj = self.vfs.get_object(path)?;
  14. if let Ok(FsObject{obj_type: FsObjTypes::file(file), ..}) = self.check_permission(&obj, Permissions::Read)
  15. {
  16. Ok(file.as_ref().as_ro())
  17. }
  18. else if let Ok(FsObject{obj_type: FsObjTypes::ro_file(file), ..}) = self.check_permission(&obj, Permissions::Read)
  19. {
  20. Ok(file.as_ref())
  21. }
  22. else
  23. {
  24. Err(())
  25. }
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement