return r;
}
-int Client::_lookup(Inode *dir, const string& dname, int mask,
- InodeRef *target, int uid, int gid)
+int Client::_lookup(Inode *dir, const string& dname, int mask, InodeRef *target,
+ const UserPerm& perms)
{
int r = 0;
Dentry *dn = NULL;
- UserPerm perms(uid, gid);
if (!dir->is_dir()) {
r = -ENOTDIR;
// call these with client_lock held!
int _do_lookup(Inode *dir, const string& name, int mask, InodeRef *target,
const UserPerm& perms);
- int _lookup(Inode *dir, const string& dname, int mask, InodeRef *target, int uid, int gid);
+
+ int _lookup(Inode *dir, const string& dname, int mask, InodeRef *target,
+ const UserPerm& perm);
int _lookup(Inode *dir, const string& dname, int mask, InodeRef *target,
- const UserPerm& perm) {
- return _lookup(dir, dname, mask, target, perm.uid(), perm.gid());
+ int uid, int gid) {
+ UserPerm perms(uid, gid);
+ return _lookup(dir, dname, mask, target, perms);
}
int _link(Inode *in, Inode *dir, const char *name, const UserPerm& perm,