dejagnu
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: testsuite under wine


From: Eric Pouech
Subject: Re: testsuite under wine
Date: Thu, 22 Dec 2022 09:40:21 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0

Le 22/12/2022 à 05:16, Jacob Bachmeyer a écrit :

I think that it would not be enough. The way Windows consoles work is that we manage complete internal screen buffer and emit output that synchronizes the buffer with Unix terminal inside conhost.exe process. It means that its output heavily processed and may be very different from what application writes to its console handle. While escape codes discussed in this thread are the most prominent difference (and that part could, in theory, be improved on our side), there are more differences. For example, if application writes "\rA\rB\rC", conhost will process it, update its internal buffer which changes just one character and cursor position, and emit sequence to update it in Unix terminal, which could be just "\rC" (or even "C" if cursor was already at the beginning of the line). Another example would be long lines: conhost will emit additional EOLs instead of depending on embedder to wrap the line.

So conhost is essentially a Wine-specific screen(1) in that sense, except that it translates Windows screen buffer manipulations instead of VT100 escape codes?  As I understand ncurses also implements most of this; perhaps simply delegating output to ncurses would solve the problem?  If output were simply delegated to ncurses, (as I understand) setting TERM=dumb should be effective to eliminate escape codes from the output, since the "dumb" terminal does not support them.

unfortunately, things are not as simple as that: on one hand we need to mimic Windows behavior, and on the other hand let apps running in wine behave like regular posix applications <g>

(Note: conhost(.exe) is not wine specific, it's part of the way windows handle the console input/output)

but I agree that wine should provide a (simple) way to disable windows' console for cases like this


Alternately, could we have a "transparent" mode in conhost where most processing is bypassed?  Setting TERM=dumb in the environment could reasonably activate this mode, or some other Wine-specific setting could be used.  (maybe "WINETERM=raw"?)
an alternate solution to Jacob's patch is to run wine with none of the fd 0,1,2 opened on a (p)tty (assuming dejagnu doesn't require fd 0 from console). So something like ./wine what_ever_you_need | tee /dev/null 2>1 < /dev/null would do
HTH



reply via email to

[Prev in Thread] Current Thread [Next in Thread]