diff options
author | Christopher Faylor <me@cgf.cx> | 2008-11-26 20:21:04 +0300 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2008-11-26 20:21:04 +0300 |
commit | 025c1fac6ee41d7814af7d114791dbf4c22ed617 (patch) | |
tree | 40ed7d77fb6578653e57e1f4693dbe594c13218a /winsup/cygwin/fhandler_fifo.cc | |
parent | f43f75a09db3935effc2f56ecd47b55e3b7c9300 (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.cc | 26 |
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 (); |