Pseudo console support in PTY

Thomas Wolff towo@towo.net
Wed Apr 3 07:55:00 GMT 2019


Am 03.04.2019 um 09:27 schrieb Corinna Vinschen:
> On Apr  3 09:18, Thomas Wolff wrote:
>> Am 02.04.2019 um 19:50 schrieb Corinna Vinschen:
>>> On Apr  2 19:16, Thomas Wolff wrote:
>>>> Am 02.04.2019 um 13:02 schrieb Corinna Vinschen:
>>>>> Hi Takashi,
>>>>>
>>>>> On Mar 30 22:08, Takashi Yano wrote:
>>>>>> Patch 0003: Support pseudo console in PTY. With this patch,
>>>>>>      native console applications can work in PTY such as mintty,
>>>>>>      ssh, gnu screen or tmux.
>>>> I've now tried your patched binaries on two systems. On one they don't run,
>>>> on the other I saw no noticeable effect, particularly no impact on the
>>>> pty/console interoperability...
>>> Try starting cmd from your shell in mintty and do some native stuff.
>> I've now self-compiled cygwin dll on a third system and can run a cygwin
>> console.
>> But the build process did not generate the cygwin-console-helper, maybe
>> that's the reason why mintty does not start?
Can you give a hint that enables me to test the patch?

>>> You'll notice two differences:
>>>
>>> - cmd history works
>> In the cygwin console, it does not, echos the cursor-up escape sequence
> Oh, right, ...
>
>> instead. See my previous comment that I think ConPTY should only be applied
>> if running at a pty. (And for other reasons only when starting a non-cygwin
>> app.)
> but you got that wrong.  The conpty stuff *is* only applied for ptys.
So cygwin running as cygwin console still sets up a pty? Anyway, what I 
mean it's (assumedly) not needed in a cygwin console, which I detected 
in my previous winpty injection patch by !strncmp (ttyname (0), 
"/dev/pty", 8).

> The above appears to be a fallout of the console changes to support
> the Windows console changes to emulate an xterm-256color,
> https://sourceware.org/git/?p=newlib-cygwin.git;a=commitdiff;h=bd627864ab41
>
> Takashi, can you take a look?
>
>>> - dir /p will actually page
>> Does it also translate the character set?
>> Test case, when running in a German UI Windows:
>> xcopy
>> echoes either of
>> Unzul�ssige Parameteranzahl
>> Unzulässige Parameteranzahl
> I'm only running English systems, so I don't know.  Is that in a console or in mintty?
That's in mintty. (In a cygwin console, output is fine already as the 
Windows output API somehow seems to go directly to it.) You might have 
the same test effect with a small program like:
#include <wchar.h>
#include <windows.h>
void main() {
   wchar_t * s = u"bäh 3€\n";
   DWORD written;
   HANDLE con = GetStdHandle(STD_OUTPUT_HANDLE);
   WriteConsoleW(con, s, wcslen(s), &written, 0);
   SetConsoleTextAttribute(con, FOREGROUND_RED);
   WriteConsoleW(con, s, wcslen(s), &written, 0);
}

Further test cases:
- raw keyboard input
- signals, ^C in cmd...

Thomas



More information about the Cygwin-developers mailing list