From e9cf554d3b01987f354ac8913a9635f6c24792ef Mon Sep 17 00:00:00 2001 From: jjohnstn Date: Wed, 18 Apr 2001 19:50:00 +0000 Subject: [PATCH] 2001-04-18 Jeff Johnston * gloss.cxx (gloss32::reset): Move check for std streams into hostops::close. * hostops.cxx (hostops::close): Don't close host std streams. --- sid/component/gloss/ChangeLog | 6 ++++++ sid/component/gloss/gloss.cxx | 5 ++--- sid/component/gloss/hostops.cxx | 12 ++++++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/sid/component/gloss/ChangeLog b/sid/component/gloss/ChangeLog index 93786dafc6..7ddd944cf3 100644 --- a/sid/component/gloss/ChangeLog +++ b/sid/component/gloss/ChangeLog @@ -1,3 +1,9 @@ +2001-04-18 Jeff Johnston + + * gloss.cxx (gloss32::reset): Move check for std streams into + hostops::close. + * hostops.cxx (hostops::close): Don't close host std streams. + 2001-01-26 Nicholas Duffek * gloss.cxx (gloss32::do_sys_exit): Pass exit value in bits 8..15 diff --git a/sid/component/gloss/gloss.cxx b/sid/component/gloss/gloss.cxx index 3215618f29..a633ff3e90 100644 --- a/sid/component/gloss/gloss.cxx +++ b/sid/component/gloss/gloss.cxx @@ -95,9 +95,8 @@ gloss32::reset() for (int i = 0; i < max_fds; ++i) { int errcode; - if (fd_table[i] > 2) - if (! host_ops->close (fd_table[i], errcode)) - cerr << "*** While resetting, close(" + if (! host_ops->close (fd_table[i], errcode)) + cerr << "*** While resetting, close(" << fd_table[i] << ") unexpectedly failed." << endl; } diff --git a/sid/component/gloss/hostops.cxx b/sid/component/gloss/hostops.cxx index 20693f180e..917ade011d 100644 --- a/sid/component/gloss/hostops.cxx +++ b/sid/component/gloss/hostops.cxx @@ -94,10 +94,14 @@ hostops::open (const char* filename, int flags, int mode, int& result_fd, int& e bool hostops::close (int fd, int& errcode) { - if (::close (fd) < 0) - { - errcode = errno; - return false; + /* don't close the host's stdin, stdout, and stderr */ + if (fd > 2) + { + if (::close (fd) < 0) + { + errcode = errno; + return false; + } } return true; } -- 2.11.0