diff options
author | mdodd <mdodd@FreeBSD.org> | 2005-04-13 04:31:43 +0000 |
---|---|---|
committer | mdodd <mdodd@FreeBSD.org> | 2005-04-13 04:31:43 +0000 |
commit | 6f940cf20fbb1a793151a0472bcbf40cf706010e (patch) | |
tree | 16dee980417407891d11891821038068a1ceba16 /sys/compat/linux/linux_file.c | |
parent | 0ed47f8e655d3f366eeeac435567ae2446a2dc50 (diff) | |
download | FreeBSD-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.c | 16 |
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: |