summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_tty.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-07-05 03:16:46 +0000
committerChristopher Faylor <me@cgf.cx>2005-07-05 03:16:46 +0000
commit2f9ae2ed94384a3df6687545338e363654dd7d8f (patch)
tree1e3a8d3c5c555b498bb165b66abac6994ea96127 /winsup/cygwin/fhandler_tty.cc
parent26edeb6a7f6c541a25ee7fa4c201b24fea01cc50 (diff)
downloadcygnal-2f9ae2ed94384a3df6687545338e363654dd7d8f.tar.gz
cygnal-2f9ae2ed94384a3df6687545338e363654dd7d8f.tar.bz2
cygnal-2f9ae2ed94384a3df6687545338e363654dd7d8f.zip
Change foo (void) to foo () for all c++ functions throughout. Remove all
fhandler_*::dump functions throughout. * fhandler.h (fhandler_dev_mem::close): Remove pass-through function in favor of virtual method. (handler_dev_raw::close): Ditto. (fhandler_dev_clipboard::fixup_after_exec): New method. * fhandler_dev_mem.cc (fhandler_dev_mem::close): Eliminate pass through * fhandler_dev_raw.cc (fhandler_dev_raw::close): Ditto. * fhandler_clipboard.cc (fhandler_dev_clipboard::close): Don't go to extra effort when execing. (fhandler_dev_clipboard::fixup_after_exec): New function. * fhandler_console.cc (fhandler_console::close): Don't do "extra stuff" when we know we're execing. * fhandler_disk_file.cc (fhandler_disk_file::close): Ditto. * fhandler_dsp.cc (fhandler_dev_dsp::close): Ditto. * fhandler_fifo.cc (fhandler_fifo.cc::close): Ditto. function in favor of base function. * fhandler_random.cc (fhandler_dev_random::close): Ditto. * fhandler_registry.cc (fhandler_registry::close): Ditto. * fhandler_tty.cc (fhandler_tty_slave::close): Ditto. * fhandler_virtual.cc (fhandler_virtual::close): Ditto. * pinfo.cc (proc_waiter): Remove unneeded hExeced declaration. * sigproc.cc: Ditto. * winsup.h (hExeced): Define here. * fhandler_virtual.cc (fhandler_virtual::fixup_after_exec): Just call close() to reinitialize things to known state.
Diffstat (limited to 'winsup/cygwin/fhandler_tty.cc')
-rw-r--r--winsup/cygwin/fhandler_tty.cc33
1 files changed, 20 insertions, 13 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index 3d3cab5a2..9fe3c5ec2 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -612,20 +612,23 @@ out:
int
fhandler_tty_slave::close ()
{
- if (!--cygheap->open_fhs && myself->ctty == -1)
- FreeConsole ();
+ if (!hExeced)
+ {
+ if (!--cygheap->open_fhs && myself->ctty == -1)
+ FreeConsole ();
- archetype->usecount--;
- report_tty_counts (this, "closed", "decremented ", "");
+ archetype->usecount--;
+ report_tty_counts (this, "closed", "decremented ", "");
- if (archetype->usecount)
- {
+ if (archetype->usecount)
+ {
#ifdef DEBUGGING
- if (archetype->usecount < 0)
- system_printf ("error: usecount %d", archetype->usecount);
+ if (archetype->usecount < 0)
+ system_printf ("error: usecount %d", archetype->usecount);
#endif
- termios_printf ("just returning because archetype usecount is != 0");
- return 0;
+ termios_printf ("just returning because archetype usecount is != 0");
+ return 0;
+ }
}
termios_printf ("closing last open %s handle", ttyname ());
@@ -1208,8 +1211,11 @@ fhandler_tty_common::close ()
if (!ForceCloseHandle1 (get_output_handle (), to_pty))
termios_printf ("CloseHandle (get_output_handle ()<%p>), %E", get_output_handle ());
- inuse = NULL;
- set_io_handle (NULL);
+ if (!hExeced)
+ {
+ inuse = NULL;
+ set_io_handle (NULL);
+ }
return 0;
}
@@ -1235,7 +1241,8 @@ fhandler_pty_master::close ()
CloseHandle (get_ttyp ()->from_master);
if (get_ttyp ()->to_master)
CloseHandle (get_ttyp ()->to_master);
- get_ttyp ()->init ();
+ if (!hExeced)
+ get_ttyp ()->init ();
}
return 0;