public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] Cygwin: FIFO: add a HANDLE parameter to open_pipe
@ 2019-05-09 18:52 Ken Brown
0 siblings, 0 replies; only message in thread
From: Ken Brown @ 2019-05-09 18:52 UTC (permalink / raw)
To: cygwin-cvs
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=816c6da53a86edf7f734cab0cd146b6813a220de
commit 816c6da53a86edf7f734cab0cd146b6813a220de
Author: Ken Brown <kbrown@cornell.edu>
Date: Thu May 9 11:36:26 2019 -0400
Cygwin: FIFO: add a HANDLE parameter to open_pipe
It's now up to the caller to pass a handle to open_pipe and, if
desired, to call set_handle on return.
This will be useful for a future commit, in which we will open a
client connection without setting an io_handle.
Diff:
---
winsup/cygwin/fhandler.h | 2 +-
winsup/cygwin/fhandler_fifo.cc | 16 ++++++++--------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index 16165c4..683aae1 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -1270,7 +1270,7 @@ class fhandler_fifo: public fhandler_base
bool __reg2 wait (HANDLE);
NTSTATUS npfs_handle (HANDLE &);
HANDLE create_pipe_instance (bool);
- NTSTATUS open_pipe ();
+ NTSTATUS open_pipe (HANDLE&);
int add_client_handler ();
void delete_client_handler (int);
bool listen_client ();
diff --git a/winsup/cygwin/fhandler_fifo.cc b/winsup/cygwin/fhandler_fifo.cc
index 1a16109..4d05727 100644
--- a/winsup/cygwin/fhandler_fifo.cc
+++ b/winsup/cygwin/fhandler_fifo.cc
@@ -194,9 +194,9 @@ fhandler_fifo::create_pipe_instance (bool first)
return ph;
}
-/* Called when a FIFO is opened for writing. */
+/* Connect to a pipe instance. */
NTSTATUS
-fhandler_fifo::open_pipe ()
+fhandler_fifo::open_pipe (HANDLE& ph)
{
NTSTATUS status;
HANDLE npfsh;
@@ -204,7 +204,6 @@ fhandler_fifo::open_pipe ()
OBJECT_ATTRIBUTES attr;
IO_STATUS_BLOCK io;
ULONG sharing;
- HANDLE ph = NULL;
status = npfs_handle (npfsh);
if (!NT_SUCCESS (status))
@@ -214,8 +213,6 @@ fhandler_fifo::open_pipe ()
npfsh, NULL);
sharing = FILE_SHARE_READ | FILE_SHARE_WRITE;
status = NtOpenFile (&ph, access, &attr, &io, sharing, 0);
- if (NT_SUCCESS (status))
- set_handle (ph);
return status;
}
@@ -472,16 +469,19 @@ fhandler_fifo::open (int flags, mode_t)
/* If we're a duplexer, create the pipe and the first client handler. */
if (duplexer)
{
+ HANDLE ph = NULL;
+
if (add_client_handler () < 0)
{
res = error_errno_set;
goto out;
}
- NTSTATUS status = open_pipe ();
+ NTSTATUS status = open_pipe (ph);
if (NT_SUCCESS (status))
{
record_connection (fc_handler[0]);
- set_pipe_non_blocking (get_handle (), flags & O_NONBLOCK);
+ set_handle (ph);
+ set_pipe_non_blocking (ph, flags & O_NONBLOCK);
}
else
{
@@ -525,7 +525,7 @@ fhandler_fifo::open (int flags, mode_t)
res = error_errno_set;
goto out;
}
- NTSTATUS status = open_pipe ();
+ NTSTATUS status = open_pipe (get_handle ());
if (NT_SUCCESS (status))
{
set_pipe_non_blocking (get_handle (), flags & O_NONBLOCK);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-05-09 18:52 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-09 18:52 [newlib-cygwin] Cygwin: FIFO: add a HANDLE parameter to open_pipe Ken Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).