summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2001-10-14 04:14:24 +0000
committerChristopher Faylor <me@cgf.cx>2001-10-14 04:14:24 +0000
commit611d92e24c092849635b8395ec97e9c7140a6324 (patch)
tree940f43e7297df4b8c05d84fb6f99cea0ab1248ff /winsup/cygwin/fhandler.cc
parent0476bae576d4a21ed57cc55074509c07138d1fba (diff)
downloadcygnal-611d92e24c092849635b8395ec97e9c7140a6324.tar.gz
cygnal-611d92e24c092849635b8395ec97e9c7140a6324.tar.bz2
cygnal-611d92e24c092849635b8395ec97e9c7140a6324.zip
* autoload.cc (load_wsock32): Declare dummy function to force loading of
winsock. * fhandler.cc (fhandler_base::set_inheritance): Make debugging output more verbose. * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Force loading of winsock32 if winsock2 not available. * net.cc (set_socket_inheritance): Use DuplicateHandle in all cases to set inheritance correctly. (fdsock): Use winsock2_active macro to determine when to set socket inheritance. Remove fdtab resource locking since this function should already be protected. (cygwin_accept): Simplify logic. Ensure that fdtab unlock is not called inappropriately. (cygwin_rcmd): Use fdtab locking. (cygwin_rresvport): Ditto. (cygwin_rexec): Ditto. * select.cc (peek_socket): Set errno appropriately if winsock select fails. * winsup.h: Declare check_pty_fds. * syscalls.cc (check_pty_fds): Rename from check_ttys_fds. Also check pty master. (setsid): Use check_pty_fds. * dtable.cc (dtable::dec_console_fds): Add check on pty fds.
Diffstat (limited to 'winsup/cygwin/fhandler.cc')
-rw-r--r--winsup/cygwin/fhandler.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index bb0089df6..f087a95d0 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -1629,16 +1629,18 @@ fhandler_base::set_inheritance (HANDLE &h, int not_inheriting)
void
fhandler_base::fork_fixup (HANDLE parent, HANDLE &h, const char *name)
{
- if (!get_close_on_exec ())
+ HANDLE oh = h;
+ if (/* !is_socket () && */ !get_close_on_exec ())
debug_printf ("handle %p already opened", h);
- else if (!DuplicateHandle (parent, h, hMainProc, &h, 0, 0,
+ else if (!DuplicateHandle (parent, h, hMainProc, &h, 0, !get_close_on_exec (),
DUPLICATE_SAME_ACCESS))
system_printf ("%s - %E, handle %s<%p>", get_name (), name, h);
-#ifdef DEBUG
+#ifdef DEBUGGING
else
{
+ debug_printf ("%s success - oldh %p, h %p", get_name (), oh, h);
ProtectHandle1 (h, name);
- setclexec_pid (h, 0);
+ setclexec_pid (h, !get_close_on_exec ());
}
#endif
}