diff options
-rw-r--r-- | winsup/cygwin/fhandler.cc | 2 | ||||
-rw-r--r-- | winsup/cygwin/fhandler.h | 4 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_process_fd.cc | 4 | ||||
-rw-r--r-- | winsup/cygwin/syscalls.cc | 2 |
4 files changed, 6 insertions, 6 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index 07a048208..659435e0a 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -792,7 +792,7 @@ done: } fhandler_base * -fhandler_base::fd_reopen (int) +fhandler_base::fd_reopen (int, mode_t) { /* This is implemented in fhandler_process only. */ return NULL; diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index 97804ed30..079385db8 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -331,7 +331,7 @@ class fhandler_base int open_with_arch (int, mode_t = 0); int open_null (int flags); virtual int open (int, mode_t); - virtual fhandler_base *fd_reopen (int); + virtual fhandler_base *fd_reopen (int, mode_t); virtual void open_setup (int flags); void set_unique_id (int64_t u) { unique_id = u; } void set_unique_id () { NtAllocateLocallyUniqueId ((PLUID) &unique_id); } @@ -2587,7 +2587,7 @@ class fhandler_process_fd : public fhandler_process fhandler_process_fd () : fhandler_process () {} fhandler_process_fd (void *) {} - virtual fhandler_base *fd_reopen (int); + virtual fhandler_base *fd_reopen (int, mode_t); int __reg2 fstat (struct stat *buf); virtual int __reg2 link (const char *); diff --git a/winsup/cygwin/fhandler_process_fd.cc b/winsup/cygwin/fhandler_process_fd.cc index a33fd7539..7d70ebe8d 100644 --- a/winsup/cygwin/fhandler_process_fd.cc +++ b/winsup/cygwin/fhandler_process_fd.cc @@ -97,7 +97,7 @@ fhandler_process_fd::fetch_fh (HANDLE &out_hdl, uint32_t flags) } fhandler_base * -fhandler_process_fd::fd_reopen (int flags) +fhandler_process_fd::fd_reopen (int flags, mode_t mode) { fhandler_base *fh; HANDLE hdl; @@ -106,7 +106,7 @@ fhandler_process_fd::fd_reopen (int flags) if (!fh) return NULL; fh->set_io_handle (hdl); - int ret = fh->open_with_arch (flags, 0); + int ret = fh->open_with_arch (flags, mode); CloseHandle (hdl); if (!ret) { diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 8a995e8fb..d1a1312b1 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1507,7 +1507,7 @@ open (const char *unix_path, int flags, ...) if (fh->dev () == FH_PROCESSFD && fh->pc.follow_fd_symlink ()) { /* Reopen file by descriptor */ - fh_file = fh->fd_reopen (flags); + fh_file = fh->fd_reopen (flags, mode & 07777); if (!fh_file) __leave; delete fh; |