Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2008-11-26 20:21:04 +0300
committerChristopher Faylor <me@cgf.cx>2008-11-26 20:21:04 +0300
commit025c1fac6ee41d7814af7d114791dbf4c22ed617 (patch)
tree40ed7d77fb6578653e57e1f4693dbe594c13218a /winsup/cygwin/fhandler_fifo.cc
parentf43f75a09db3935effc2f56ecd47b55e3b7c9300 (diff)
Remove unneeded whitespace.
* fhandler_fifo.cc (fhandler_fifo::open): Rework to cause errno to be set to ENXIO when opening a fifo write/nonblocking. * environ.cc (ucreqenv): Rename to ucenv. Move code from old ucenv here and conditionalize it on create_upcaseenv. (ucenv): Delete. (environ_init): Fix compiler warning by moving create_upcaseenv test to ucenv. Don't bother checking for child_proc_info when calling ucenv since it is assumed to be NULL at the point where the function is called. * path.cc (symlink_worker): Turn off MS-DOS path warnings when dealing with devices since the device handler passes in a translated MS-DOS path. * sec_auth.cc (lsaprivkeyauth): Avoid variable initialization which causes a compiler error. * fhandler_netdrive.cc: Update copyright.
Diffstat (limited to 'winsup/cygwin/fhandler_fifo.cc')
-rw-r--r--winsup/cygwin/fhandler_fifo.cc26
1 files changed, 22 insertions, 4 deletions
diff --git a/winsup/cygwin/fhandler_fifo.cc b/winsup/cygwin/fhandler_fifo.cc
index 00b8f2a50..137e4a7ac 100644
--- a/winsup/cygwin/fhandler_fifo.cc
+++ b/winsup/cygwin/fhandler_fifo.cc
@@ -86,13 +86,26 @@ fhandler_fifo::open (int flags, mode_t)
LPSECURITY_ATTRIBUTES sa_buf =
sec_user ((PSECURITY_ATTRIBUTES) char_sa_buf, cygheap->user.sid());
mode |= FILE_FLAG_OVERLAPPED;
- HANDLE h = CreateNamedPipe(npname, mode, FIFO_PIPE_MODE,
- PIPE_UNLIMITED_INSTANCES, 0, 0,
- NMPWAIT_WAIT_FOREVER, sa_buf);
+
+ HANDLE h;
+ DWORD err;
+ bool nonblocking_write = !!((flags & (O_WRONLY | O_NONBLOCK)) == (O_WRONLY | O_NONBLOCK));
+ if (nonblocking_write)
+ {
+ h = INVALID_HANDLE_VALUE;
+ err = ERROR_ACCESS_DENIED;
+ }
+ else
+ {
+ h = CreateNamedPipe(npname, mode, FIFO_PIPE_MODE,
+ PIPE_UNLIMITED_INSTANCES, 0, 0,
+ NMPWAIT_WAIT_FOREVER, sa_buf);
+ err = GetLastError ();
+ }
if (h != INVALID_HANDLE_VALUE)
wait_state = fifo_wait_for_client;
else
- switch (GetLastError ())
+ switch (err)
{
case ERROR_ACCESS_DENIED:
h = open_nonserver (npname, low_flags, sa_buf);
@@ -101,6 +114,11 @@ fhandler_fifo::open (int flags, mode_t)
wait_state = fifo_wait_for_server;
break;
}
+ if (nonblocking_write && GetLastError () == ERROR_FILE_NOT_FOUND)
+ {
+ set_errno (ENXIO);
+ break;
+ }
/* fall through intentionally */
default:
__seterrno ();