summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_extattr.c
diff options
context:
space:
mode:
authormux <mux@FreeBSD.org>2002-05-05 23:47:41 +0000
committermux <mux@FreeBSD.org>2002-05-05 23:47:41 +0000
commitb2f5ccfa53b23c3e6406e04932e9bcf5bed60eaa (patch)
treeee73278f756ea404482f718fab8e7bd5320a4ceb /sys/kern/vfs_extattr.c
parent07314cd73a922e08912adf63c1b4845e85a54563 (diff)
downloadFreeBSD-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.c23
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_
OpenPOWER on IntegriCloud