summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog8
-rw-r--r--winsup/cygwin/fhandler.h2
-rw-r--r--winsup/cygwin/fhandler_termios.cc7
-rw-r--r--winsup/cygwin/fhandler_tty.cc3
4 files changed, 18 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 718becad7..02e310f88 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,13 @@
2001-03-12 Egor Duda <deo@logos-m.ru>
+ * fhandler.h (fhandler_termios::fixup_after_exec): New function.
+ * fhandler.cc (fhandler_termios::fixup_after_fork): New function.
+ Fixup output handle.
+ * fhandler_tty.cc (fhandler_tty_common::fixup_after_fork): Output
+ handle is now fixed up in fhandler_termios::fixup_after_fork().
+
+2001-03-12 Egor Duda <deo@logos-m.ru>
+
* fhandler.h (fhandler_termios::fhandler_termios): Enable fixup
after fork.
* fhandler_console.cc (fhandler_console::fhandler_console): Fixup
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index 155e2a8d4..7e827571e 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -581,6 +581,8 @@ public:
bg_check_types bg_check (int sig);
virtual DWORD __acquire_output_mutex (const char *fn, int ln, DWORD ms) {return 1;}
virtual void __release_output_mutex (const char *fn, int ln) {}
+ void fixup_after_fork (HANDLE);
+ void fixup_after_exec (HANDLE parent) { fixup_after_fork (parent); }
};
enum ansi_intensity
diff --git a/winsup/cygwin/fhandler_termios.cc b/winsup/cygwin/fhandler_termios.cc
index 046199903..7b8c71feb 100644
--- a/winsup/cygwin/fhandler_termios.cc
+++ b/winsup/cygwin/fhandler_termios.cc
@@ -308,3 +308,10 @@ fhandler_termios::line_edit (const char *rptr, int nread, int always_accept)
return input_done;
}
+
+void
+fhandler_termios::fixup_after_fork (HANDLE parent)
+{
+ this->fhandler_base::fixup_after_fork (parent);
+ fork_fixup (parent, get_output_handle (), "output_handle");
+}
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index 705910e18..28ff6b61c 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -1097,7 +1097,7 @@ fhandler_tty_common::set_close_on_exec (int val)
void
fhandler_tty_common::fixup_after_fork (HANDLE parent)
{
- this->fhandler_base::fixup_after_fork (parent);
+ this->fhandler_termios::fixup_after_fork (parent);
if (output_done_event)
fork_fixup (parent, output_done_event, "output_done_event");
if (ioctl_request_event)
@@ -1116,7 +1116,6 @@ fhandler_tty_common::fixup_after_fork (HANDLE parent)
}
if (input_available_event)
fork_fixup (parent, input_available_event, "input_available_event");
- fork_fixup (parent, output_handle, "output_handle");
fork_fixup (parent, inuse, "inuse");
}