Re: testsuite under wine
Eric Pouech <[email protected]> Thu, 22 Dec 2022 09:40:21 +0100
| Newsgroups | gmane.comp.sysutils.dejagnu.general,gmane.comp.gcc.fortran |
|---|---|
| Message-ID | <[email protected]> |
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