On 2019-11-06 08:44, Takashi Yano wrote: > On Wed, 6 Nov 2019 08:06:55 -0700 > Brian Inglis wrote: >>> + if (con.is_legacy) >>> + setenv ("TERM", "cygwin", 1); >>> } >> >> handlers should not be changing user's env vars: that is the user's >> selection to >> get their preferred operation in their apps. >> >> If you need to set TERM, shouldn't you also set it appropriately for >> non-legacy >> console? > > The environment TERM is set to cygwin or xterm-256color in environ.cc > based on wincap.has_con_24bit_colors(). > > However, if legacy console mode is enabled, new terminal capability > compatible with xterm is disabled. So TERM is override to cygwin by > the code above. > > This is done only in the first initialization stage, so TERM value > set by user in .login, .bashrc, .tcshrc and etc, ... will be kept. > > Only the case in which TERM is overrid is: > 1) Enable console legacy mode. > 2) Open command prompt. > 3) set TERMq > 4) start cygwin > > What situation do you assume this causes problem?
Is this not executed on every object creation and on every fork? If that is not the case, then legacy_console/() should be a singleton object/method, constructed when accessed, or in wincap, like has_con_24bit_colors() - is_con_legacy(). When user explicitly sets TERM before starting Cygwin, or after forking, Cygwin does not touch it, so you should not, and perhaps the legacy console check should be added there: newlib-cygwin/winsup/doc/setup-env.xml: <para> The <envar>TERM</envar> environment variable specifies your terminal type. It is automatically set to <literal>cygwin</literal> if you have not set it to something else. </para> newlib-cygwin/winsup/cygwin/environ.cc: /* If console has 24 bit color capability, TERM=xterm-256color, otherwise, TERM=cygwin */ if (!sawTERM) - envp[i++] = strdup (wincap.has_con_24bit_colors () ? xterm : cygterm); + envp[i++] = strdup (wincap.has_con_24bit_colors () && !wincap.is_con_legacy() ? xterm : cygterm); -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised.