summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/fhandler.cc2
-rw-r--r--winsup/cygwin/fhandler.h4
-rw-r--r--winsup/cygwin/fhandler_process_fd.cc4
-rw-r--r--winsup/cygwin/syscalls.cc2
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;