diff options
Diffstat (limited to 'winsup/cygwin/fhandler.cc')
-rw-r--r-- | winsup/cygwin/fhandler.cc | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index 540fca58c..b93102dd1 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -443,7 +443,18 @@ fhandler_base::open (int flags, mode_t mode) } if (query_open ()) - access = (query_open () == query_read_control ? READ_CONTROL : 0); + switch (query_open ()) + { + case query_null_access: + access = 0; + break; + case query_read_control: + access = READ_CONTROL; + break; + case query_write_control: + access = READ_CONTROL | WRITE_OWNER | WRITE_DAC; + break; + } else if (get_major () == DEV_TAPE_MAJOR) access = GENERIC_READ | GENERIC_WRITE; else if ((flags & (O_RDONLY | O_WRONLY | O_RDWR)) == O_RDONLY) @@ -1411,3 +1422,10 @@ fhandler_base::fchmod (mode_t mode) /* By default, just succeeds. */ return 0; } + +int +fhandler_base::fchown (__uid32_t uid, __gid32_t gid) +{ + /* By default, just succeeds. */ + return 0; +} |