summaryrefslogtreecommitdiffstats
path: root/sys/compat/linux/linux_file.c
diff options
context:
space:
mode:
authormdodd <mdodd@FreeBSD.org>2005-04-13 04:31:43 +0000
committermdodd <mdodd@FreeBSD.org>2005-04-13 04:31:43 +0000
commit6f940cf20fbb1a793151a0472bcbf40cf706010e (patch)
tree16dee980417407891d11891821038068a1ceba16 /sys/compat/linux/linux_file.c
parent0ed47f8e655d3f366eeeac435567ae2446a2dc50 (diff)
downloadFreeBSD-src-6f940cf20fbb1a793151a0472bcbf40cf706010e.zip
FreeBSD-src-6f940cf20fbb1a793151a0472bcbf40cf706010e.tar.gz
Add support for O_NOFOLLOW and O_DIRECT to Linux fcntl() F_GETFL/F_SETFL.
Diffstat (limited to 'sys/compat/linux/linux_file.c')
-rw-r--r--sys/compat/linux/linux_file.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/compat/linux/linux_file.c b/sys/compat/linux/linux_file.c
index bd81cab..79a8ba9 100644
--- a/sys/compat/linux/linux_file.c
+++ b/sys/compat/linux/linux_file.c
@@ -979,6 +979,14 @@ fcntl_common(struct thread *td, struct linux_fcntl64_args *args)
td->td_retval[0] |= LINUX_O_SYNC;
if (result & O_ASYNC)
td->td_retval[0] |= LINUX_FASYNC;
+#ifdef LINUX_O_NOFOLLOW
+ if (result & O_NOFOLLOW)
+ td->td_retval[0] |= LINUX_O_NOFOLLOW;
+#endif
+#ifdef LINUX_O_DIRECT
+ if (result & O_DIRECT)
+ td->td_retval[0] |= LINUX_O_DIRECT;
+#endif
return (error);
case LINUX_F_SETFL:
@@ -991,6 +999,14 @@ fcntl_common(struct thread *td, struct linux_fcntl64_args *args)
arg |= O_FSYNC;
if (args->arg & LINUX_FASYNC)
arg |= O_ASYNC;
+#ifdef LINUX_O_NOFOLLOW
+ if (args->arg & LINUX_O_NOFOLLOW)
+ arg |= O_NOFOLLOW;
+#endif
+#ifdef LINUX_O_DIRECT
+ if (args->arg & LINUX_O_DIRECT)
+ arg |= O_DIRECT;
+#endif
return (kern_fcntl(td, args->fd, F_SETFL, arg));
case LINUX_F_GETLK:
OpenPOWER on IntegriCloud