Re: [PATCH] Cygwin: pty: Treat CR/NL in accept_input() the same as in transfer_input()
Takashi Yano <[email protected]> Wed, 24 Jun 2026 21:33:35 +0900
| Newsgroups | gmane.os.cygwin.patches |
|---|---|
| Message-ID | <[email protected]> |
Thanks! Pushed. On Wed, 24 Jun 2026 00:14:19 -0700 Mark Geisert wrote: > Hi Takashi, > > On 6/23/2026 6:04 AM, Takashi Yano wrote: > > Hi Mark, > > > > Thanks for reviewing! > > > > On Tue, 23 Jun 2026 00:41:11 -0700 > > Mark Geisert wrote: > >> Hi Takashi, > >> > >> On 6/12/2026 5:47 AM, Takashi Yano wrote: > >>> In transfer_input(), CR and NL in the data transferred to nat-pipe > >>> is treated as follows: > >>> 1) If pseudo console is activated, convert NL to CR. > >>> 2) If pseudo console is disabled, convert CR to NL. > >>> This conversion is necessary to ensure non-cygwin apps can handle > >>> CR/NL as expected. Therefor, CR and NL should be treated as the > >>> same way in accept_input() if the data is sent to nat-pipe. > >> > >> The above block is fine. > >> > >>> Usually, when pseudo console is activated, the input data for non- > >>> cygwin app is not treated by accept_input. However, accept_input() > >>> handle the input data in pseudo console enabled mode, only in a > >>> very short duration when pseudo console is about to setup, because > >>> master::write() calls line_edit() in the pcon_start mode. If pseudo > >>> console is disabled, accept_input() handles them, however usually > >>> ICRNL flag is set, so line_edit() do this conversion. However, if > >>> this flag is not set, the conversion added by this patch is needed > >>> as well. > >> > >> This block I'm having a bit of trouble to follow. Can you possibly > >> reword to describe it in more orderly fashion? > > > > What about: > > In the previous implementation, problems rarely occurred because > > accept_input() normally does not handle input for non-cygwin apps > > when the pseudo console is active. Under typical conditions, such > > input is snet to pseudo console directly by WriteFile(), so > ^^^^ > > accept_input() is not involved and no onversion issues arise. > ^^^^^^^^^ > > > > There is, however, a brief period during pseudo console initialization > > in which accept_input *does* handle the input. This happens because > > master::write() invokes line_edit() while in pcons_start mode. During > > this short window, the input is processed in pseudo-console-enabled > > mode, and the usual conversion behaviour may not apply. > > > > When the pseudo console is disabled, accept_input() always handles > > the input, and in most cases the ICRNL flag is set by shell, so > > line_edit() performs the CR->NL conversion. But if the flag is not > > set, this conversion does not occur. Therefore, the additional > > conversion introduced by this patch is required to ensure consistent > > behaviour in both cases. > > Much better! Please fix the minor typos indicated and it will LGTM. > OK to push. > > ..mark -- Takashi Yano <[email protected]>