This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Escape sequences unprocessed under the "cygwin" terminal


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Marco,

Thank you for your response.

On 12.10.2016 13:32, Marco Atzeri wrote:
> On 12/10/2016 10:36, Andrey ``Bass'' Shcheglov wrote:
>>
>> It works fine under regular Unices, and also under xterm and mintty
>> (in Cygwin), but I'm having trouble running it under the "cygwin"
>> terminal (i. e. bash launched from cmd.exe).
> 
> cmd is not a Cygwin terminal, it is a limited Windows one.
> What is the problem to use mintty ?

There's no problem. I'm just trying to understand the limitations of
cmd.exe (TERM=cygwin). FWIK, bash.exe *can* properly translate ANSI
escape sequences into WinAPI calls. Strangely, the same C program:

> #include <stdio.h>
> 
> int main() {
> 	const char esc = 0x1b;
> 	printf("%c[31;91;1mHello, World!%c[0m\n", esc, esc);
> 	return 0;
> }

behaves correctly with TERM=cygwin when compiled with Cygwin GCC and
linked against cygwin1.dll:

> $ ldd test-ansi-escape.exe
> 	ntdll.dll => /cygdrive/c/Windows/SYSTEM32/ntdll.dll (0x7ffeeb450000)
> 	KERNEL32.DLL => /cygdrive/c/Windows/system32/KERNEL32.DLL (0x7ffee92c
0000)
> 	KERNELBASE.dll => /cygdrive/c/Windows/system32/KERNELBASE.dll (0x7ffe
e8700000)
> 	cygwin1.dll => /usr/bin/cygwin1.dll (0x180040000)

and displays garbage like

> ←[31;91;1mHello, World!←[0m

when compiled with MSVC as a native Windows application:

> $ ldd test-ansi-escape.exe
> 	ntdll.dll => /cygdrive/c/Windows/SYSTEM32/ntdll.dll (0x7ffeeb450000)
> 	ntdll.dll => /cygdrive/c/Windows/SYSTEM32/ntdll.dll (0x770a0000)
> 	wow64.dll => /cygdrive/c/Windows/SYSTEM32/wow64.dll (0x76fd0000)
> 	wow64win.dll => /cygdrive/c/Windows/system32/wow64win.dll (0x77020000
)
> 	wow64cpu.dll => /cygdrive/c/Windows/system32/wow64cpu.dll (0x77090000
)
> 	??? => ??? (0x1040000)
> 	KERNEL32.DLL => /cygdrive/c/Windows/SYSTEM32/KERNEL32.DLL (0x76480000
)
> 	??? => ??? (0x1040000)
> 	??? => ??? (0x1040000)
> 	KERNEL32.DLL => /cygdrive/c/Windows/SYSTEM32/KERNEL32.DLL (0x76480000
)
> 	KERNELBASE.dll => /cygdrive/c/Windows/SYSTEM32/KERNELBASE.dll (0x74b4
0000)
> 	MSVCR120D.dll => /cygdrive/c/Windows/SYSTEM32/MSVCR120D.dll (0x62b900
00)

>> Also, if I log in to my Windows box using SSH (i. e. replace the loca
l
>> connection with the remote one, but retain the same |"cygwin|"
>> terminal), again, escape sequences are processed just fine.
> 
> from Unix ? The terminal on that side is able to properly manage
> escape sequence

No, from Windows. I mean, I'm doing "ssh.exe localhost" (the process
hierarchy being cmd.exe -> bash.exe -> ssh.exe -> bash.exe) -- and
everything is working again!

> use mintty.
> It is the recommended one for cygwin

I understand mintty is superior feature-wise compared to cmd.exe, and
xterm is superior to both mintty and cmd.exe -- just like I said, I'm
trying to understand the limitations of cmd.exe (TERM=cygwin).

Regards,
Andrey.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iEYEARECAAYFAlf+Jb4ACgkQFX2weoTrDGcDjQCeLfk7Nxeg/SGHZEEa2sPuhWli
MrsAn3rGf/9tcTPD1iAFjFMJYHGjR2fC
=cCH2
-----END PGP SIGNATURE-----

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]