Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com Date: Wed, 31 Mar 1999 01:51:42 -0500 From: Chris Faylor To: cygwin-developers AT sourceware DOT cygnus DOT com Subject: Re: Latest tty changes. Message-ID: <19990331015141.A2732@cygnus.com> References: <00fb01be7acd$19be2a50$02af6080 AT sokhapki-1 DOT cc DOT bellcore DOT com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.95.3i In-Reply-To: <00fb01be7acd$19be2a50$02af6080@sokhapki-1.cc.bellcore.com>; from Sergey Okhapkin on Tue, Mar 30, 1999 at 11:48:12AM -0500 On Tue, Mar 30, 1999 at 11:48:12AM -0500, Sergey Okhapkin wrote: > > >>>The problem with login via telnetd remains the same :( >>> >>>After typing the username and LF (or CR), the connection is lost. >>> >> >> >>fhandler_tty_slave::read() always returns EOF because >>fhandler_pty_master::write() doesn't set ttyp->read_retval to a number of >>chars written. > >pty support is broken now because of a mix of two _very different_ things in >code - tc and ttyp. Actually they aren't that different but that insight is much appreciated. I didn't get this in in time for the snapshot but I have, at least temporarily, gotten remote telnet logins working by simply assigning tc = ttyp, where appropriate. You all should see this on Thursday or, if you're interested, the patch is below. -chris Index: fhandler.h =================================================================== RCS file: /cvs/cvsfiles/devo/winsup/fhandler.h,v retrieving revision 1.81 diff -u -p -r1.81 fhandler.h --- fhandler.h 1999/03/28 21:58:58 1.81 +++ fhandler.h 1999/03/31 06:44:27 @@ -579,7 +579,7 @@ public: fhandler_termios (dev, name, unit, cygwin_shared->tty[unit]) { ttynum = unit; - ttyp = cygwin_shared->tty[unit]; + tc = ttyp = cygwin_shared->tty[unit]; } HANDLE output_done_event; // Raised by master when tty's output buffer // written. Write status in tty::write_retval. Index: fhandler_tty.cc =================================================================== RCS file: /cvs/cvsfiles/devo/winsup/fhandler_tty.cc,v retrieving revision 1.19 diff -u -p -r1.19 fhandler_tty.cc --- fhandler_tty.cc 1999/03/30 03:50:38 1.19 +++ fhandler_tty.cc 1999/03/31 06:44:28 @@ -56,7 +56,7 @@ fhandler_tty_master::init (int ntty) return -1; } - ttyp = cygwin_shared->tty[ntty]; + tc = ttyp = cygwin_shared->tty[ntty]; ttynum = ntty; console->init (err, GENERIC_READ | GENERIC_WRITE, O_BINARY); @@ -69,7 +69,9 @@ fhandler_tty_master::init (int ntty) ti.c_iflag = INLCR; ti.c_lflag = ECHO | ICANON | ISIG; +#if 0 /* FIXME: Should be handled by console->init above */ console->tcsetattr (0, &ti); +#endif ttyp->common_init (this); @@ -695,7 +697,7 @@ fhandler_tty_common::dup (fhandler_base { fhandler_tty_slave *fts = (fhandler_tty_slave *) child; fts->ttynum = ttynum; - fts->ttyp = ttyp; + fts->tc = fts->ttyp = ttyp; return 0; } Index: tty.cc =================================================================== RCS file: /cvs/cvsfiles/devo/winsup/tty.cc,v retrieving revision 1.29 diff -u -p -r1.29 tty.cc --- tty.cc 1999/03/25 03:22:48 1.29 +++ tty.cc 1999/03/31 06:44:29 @@ -339,7 +339,7 @@ tty::make_pipes (fhandler_pty_master *pt BOOL tty::common_init (fhandler_pty_master *ptym) { - ptym->ttyp = this; + ptym->tc = ptym->ttyp = this; if (!make_pipes (ptym)) return FALSE; ptym->neednl_ = 0;