[PATCH 2/2] Cygwin: pty: Disable clear screen on new pty if TERM=dumb or emacs*.

Takashi Yano takashi.yano@nifty.ne.jp
Wed Sep 4 14:42:00 GMT 2019

On Wed, 4 Sep 2019 15:55:03 +0200
Corinna Vinschen wrote:
> The code in fixup_after_attach() is the only code snippet setting
> need_clear_screen = true.  And that code also requires term != "dump" &&
> term == "*emacs*" to set need_clear_screen.

term != "*emacs*"

> The code in reset_switch_to_pcon() requires that the need_clear_screen
> flag is true regardless of checking TERM.  So this code depends on the
> successful TERM check from fixup_after_attach anyway.
> What am I missing?

Two checking results may not be the same. Indeed, emacs changes
TERM between two checks.

fixup_after_attach() is called from fixup_after_exec(),
which is called before executing the program code.
reset_switch_to_pcon () is mainly called from PTY slave I/O functions.
This is usually from the program code.

The behaviour of the patch is as follows.

First check : True  True  False False
Second check: True  False True  False
Clear screen: Yes   No    No   No

# True: neither dumb nor emacs*
#  False: either dumb or emacs*

> +             if (get_ttyp ()->num_pcon_attached_slaves == 0 &&
> +                 term && strcmp (term, "dumb") &&
> +          	  term && !strstr (term, "emacs") &&
> +                 !ALWAYS_USE_PCON)
> You're checking term for != NULL twice.

Oh my!

Takashi Yano <takashi.yano@nifty.ne.jp>

More information about the Cygwin-patches mailing list