diff options
author | jhb <jhb@FreeBSD.org> | 2006-02-06 22:00:53 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2006-02-06 22:00:53 +0000 |
commit | 1f0c541bd133ce3b047f18de07fa40324097bfad (patch) | |
tree | 60940a8cbf854fd513f61ecd8b97e78328c20700 /sys/kern/vfs_extattr.c | |
parent | db29bc1e158dbd91e9a0fff0a9fa2b95d09f51c4 (diff) | |
download | FreeBSD-src-1f0c541bd133ce3b047f18de07fa40324097bfad.zip FreeBSD-src-1f0c541bd133ce3b047f18de07fa40324097bfad.tar.gz |
Add a kern_eaccess() function and use it to implement xenix_eaccess()
rather than kern_access().
Suggested by: rwatson
Diffstat (limited to 'sys/kern/vfs_extattr.c')
-rw-r--r-- | sys/kern/vfs_extattr.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index dcd3696..f208deb 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -1915,18 +1915,24 @@ eaccess(td, uap) int flags; } */ *uap; { + + return (kern_eaccess(td, uap->path, UIO_USERSPACE, uap->flags)); +} + +int +kern_eaccess(struct thread *td, char *path, enum uio_seg pathseg, int flags) +{ struct nameidata nd; struct vnode *vp; int vfslocked; int error; - NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | MPSAFE, UIO_USERSPACE, - uap->path, td); + NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | MPSAFE, pathseg, path, td); if ((error = namei(&nd)) != 0) return (error); vp = nd.ni_vp; vfslocked = NDHASGIANT(&nd); - error = vn_access(vp, uap->flags, td->td_ucred, td); + error = vn_access(vp, flags, td->td_ucred, td); NDFREE(&nd, NDF_ONLY_PNBUF); vput(vp); VFS_UNLOCK_GIANT(vfslocked); |