| vfs_may_open#(INO, ISDIR, MODE, USER, DIRS, FILES, ASYNCED; INODE, ERR) {afs_iget#(INO, DIRS, FILES, ASYNCED; INODE, ERR); if ERR = ESUCCESS then if ¬(INODE.directory ↔ ISDIR) then ERR := (INODE.directory ⊃ EISDIR;ENOTDIR) else if (MODE = MODE_R ∨ MODE = MODE_RW) ∧ ¬ pr(USER, INODE.meta) ∨ (MODE = MODE_W ∨ MODE = MODE_RW) ∧ ¬ pw(USER, INODE.meta) then ERR := EACCESS } |