public inbox for cygwin-developers@cygwin.com
 help / color / mirror / Atom feed
From: Takashi Yano <takashi.yano@nifty.ne.jp>
To: cygwin-developers@cygwin.com
Cc: Takashi Yano <takashi.yano@nifty.ne.jp>
Subject: [PATCH v3 0/1] Pseudo console support in PTY (v3)
Date: Sat, 06 Apr 2019 11:13:00 -0000	[thread overview]
Message-ID: <20190406111308.1822-1-takashi.yano@nifty.ne.jp> (raw)
In-Reply-To: <20190404104606.GA24725@calimero.vinschen.de>

The major changes from v2 is as follows.

(1) I dig into this problem,
    https://www.cygwin.com/ml/cygwin-developers/2019-04/msg00000.html
    and adoptted another approach. Slave process is left unattached
    by some reason if the executable is a windows GUI binary, such
    as mintty. So the code is added in stdio_init() in dtable.cc,
    which makes slave attach to pseudo console and fix up handles,
    if the slave is on pty but not attached. The previous approach,
    which uses fhandler_console::need_invisible(), has a side effect
    that the mintty looks running on cons*, although it actually has
    no TTY.

(2) The ctrl-C issue reported in
    https://cygwin.com/ml/cygwin-developers/2019-04/msg00012.html
    has been fixed. This seems to be caused by race condition of a
    variable, switch_to_pcon. This variable holds the state for
    switching I/O between pseudo console for native console apps
    and conventional pty for cygwin apps. The handling of this
    variable is refined. I suppose the issue is fixed in v3.

(3) Code page handling is refined a bit. Now, code page 65001 (UTF8)
    and native code page in your region should work without garbled
    characters. This works properly only on terminal which supports
    UTF-8.

(4) Synchronization between real terminal and pseudo console screen
    buffer is improved. For this, screen is cleared on startup of pty
    slave app. Also echo for key input is pushed into pseudo console
    screen buffer.

By (4),
On Sat, 30 Mar 2019 22:08:04 +0900 Takashi Yano wrote:
> Known problems:
> * Sometimes the screen layout would be broken.
is almost resolved.

D=http://tyan0.dip.jp/cygwin
${D}/x86_64/test/cygwin1-20190406.dll.xz
${D}/x86_64/test/cygwin-console-helper.exe.xz
${D}/x86/test/cygwin1-20190406.dll.xz
${D}/x86/test/cygwin-console-helper.exe.xz


Takashi Yano (1):
  Cygwin: pty: add pseudo console support.

 winsup/cygwin/dtable.cc               |  57 +++
 winsup/cygwin/fhandler.h              |  46 +-
 winsup/cygwin/fhandler_console.cc     |  32 ++
 winsup/cygwin/fhandler_tty.cc         | 610 ++++++++++++++++++++++++--
 winsup/cygwin/fork.cc                 |  20 +
 winsup/cygwin/select.cc               |  22 +-
 winsup/cygwin/spawn.cc                |  32 ++
 winsup/cygwin/tty.cc                  |   5 +
 winsup/cygwin/tty.h                   |  21 +-
 winsup/utils/cygwin-console-helper.cc |  14 +-
 10 files changed, 816 insertions(+), 43 deletions(-)

-- 
2.17.0

  reply	other threads:[~2019-04-06 11:13 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-30 13:08 Pseudo console support in PTY Takashi Yano
2019-03-30 19:47 ` Corinna Vinschen
2019-03-30 19:59   ` Corinna Vinschen
2019-03-30 23:07 ` Thomas Wolff
2019-03-31 14:38   ` Corinna Vinschen
2019-03-31 15:00   ` Takashi Yano
2019-04-02 11:02 ` Corinna Vinschen
2019-04-02 17:16   ` Thomas Wolff
2019-04-02 17:51     ` Corinna Vinschen
2019-04-03  7:18       ` Thomas Wolff
2019-04-03  7:28         ` Corinna Vinschen
2019-04-03  7:55           ` Thomas Wolff
2019-04-03  8:02             ` Corinna Vinschen
2019-04-03 11:33               ` Thomas Wolff
2019-04-03 12:17                 ` Corinna Vinschen
2019-04-04  4:17                   ` Takashi Yano
2019-04-04  8:06                     ` Corinna Vinschen
2019-04-04  4:15             ` Takashi Yano
2019-04-03 16:36   ` [PATCH v2 0/1] Pseudo console support in PTY (v2) Takashi Yano
2019-04-03 16:37     ` [PATCH v2 1/1] Cygwin: pty: add pseudo console support Takashi Yano
2019-04-03 16:50     ` [PATCH v2 0/1] Pseudo console support in PTY (v2) Corinna Vinschen
2019-04-04  5:27       ` Takashi Yano
2019-04-04  8:17         ` Thomas Wolff
2019-04-04  9:34           ` Takashi Yano
2019-04-03 17:11     ` Corinna Vinschen
2019-04-04  8:59       ` Takashi Yano
2019-04-04 10:46         ` Corinna Vinschen
2019-04-06 11:13           ` Takashi Yano [this message]
2019-04-06 11:14             ` [PATCH v3 1/1] Cygwin: pty: add pseudo console support Takashi Yano
2019-04-06 17:43             ` [PATCH v3 0/1] Pseudo console support in PTY (v3) Corinna Vinschen
2019-04-12 10:22               ` [PATCH v4 0/1] Pseudo console support in PTY (v4) Takashi Yano
2019-04-12 10:23                 ` [PATCH v4 1/1] Cygwin: pty: add pseudo console support Takashi Yano
2019-04-12 12:29                 ` [PATCH v4 0/1] Pseudo console support in PTY (v4) Corinna Vinschen
2019-04-15  8:18                   ` Corinna Vinschen
2019-04-15 23:17                     ` Takashi Yano
2019-04-14 15:23                 ` [PATCH v5 0/1] Pseudo console support in PTY (v5) Takashi Yano
2019-04-14 15:23                   ` [PATCH v5 1/1] Cygwin: pty: add pseudo console support Takashi Yano
2019-04-15  8:38                     ` Corinna Vinschen
2019-04-16  0:41                       ` Takashi Yano
2019-04-16  9:16                         ` Corinna Vinschen
2019-06-24 10:53                           ` Corinna Vinschen
2019-07-25 14:31                             ` Corinna Vinschen
2019-08-08 19:24                               ` Corinna Vinschen
2019-08-12 12:07                             ` Takashi Yano
2019-08-12 12:50                               ` Corinna Vinschen
2019-08-12 14:36                                 ` Takashi Yano
2019-04-14 16:06                   ` [PATCH v5 0/1] Pseudo console support in PTY (v5) Takashi Yano
2019-04-16  1:49                     ` Takashi Yano
2019-04-16  1:51                       ` Takashi Yano
2019-04-06 21:33             ` [PATCH v3 0/1] Pseudo console support in PTY (v3) Thomas Wolff
2019-04-07  5:05               ` Takashi Yano
2019-04-07 12:02                 ` Takashi Yano
2019-04-07 21:21                 ` Thomas Wolff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190406111308.1822-1-takashi.yano@nifty.ne.jp \
    --to=takashi.yano@nifty.ne.jp \
    --cc=cygwin-developers@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).