diff options
author | mux <mux@FreeBSD.org> | 2002-05-05 23:47:41 +0000 |
---|---|---|
committer | mux <mux@FreeBSD.org> | 2002-05-05 23:47:41 +0000 |
commit | b2f5ccfa53b23c3e6406e04932e9bcf5bed60eaa (patch) | |
tree | ee73278f756ea404482f718fab8e7bd5320a4ceb /sys/kern/vfs_extattr.c | |
parent | 07314cd73a922e08912adf63c1b4845e85a54563 (diff) | |
download | FreeBSD-src-b2f5ccfa53b23c3e6406e04932e9bcf5bed60eaa.zip FreeBSD-src-b2f5ccfa53b23c3e6406e04932e9bcf5bed60eaa.tar.gz |
Add the lchflags(2) syscall.
Reviewed by: rwatson
Diffstat (limited to 'sys/kern/vfs_extattr.c')
-rw-r--r-- | sys/kern/vfs_extattr.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index 1db5510..f256e9e 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -2894,6 +2894,29 @@ chflags(td, uap) } /* + * Same as chflags() but doesn't follow symlinks. + */ +int +lchflags(td, uap) + struct thread *td; + register struct lchflags_args /* { + syscallarg(char *) path; + syscallarg(int) flags; + } */ *uap; +{ + int error; + struct nameidata nd; + + NDINIT(&nd, LOOKUP, NOFOLLOW, UIO_USERSPACE, SCARG(uap, path), td); + if ((error = namei(&nd)) != 0) + return (error); + NDFREE(&nd, NDF_ONLY_PNBUF); + error = setfflags(td, nd.ni_vp, SCARG(uap, flags)); + vrele(nd.ni_vp); + return error; +} + +/* * Change flags of a file given a file descriptor. */ #ifndef _SYS_SYSPROTO_H_ |