Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Jan 2024 06:07:31 +0100
From:      Soumendra Ganguly <soumendraganguly@gmail.com>
To:        freebsd-bugs@freebsd.org
Subject:   Unset ICRNL in CBREAK mode in stty(1) following X/Open Curses
Message-ID:  <CAOW54GWzkJ1zc_7CjY3nq-DMqnopvyPMk9rnttBrFR%2BZsgL62g@mail.gmail.com>

index | next in thread | raw e-mail

[-- Attachment #1 --]
Respected maintainers,

In X/Open Curses, Issue 7 (
https://pubs.opengroup.org/onlinepubs/9699909599/toc.pdf), the following is
mentioned about the cbreak mode:

This mode achieves the same effect as non-canonical-mode, Case B input
processing (with
MIN set to 1 and *ICRNL cleared*) as specified in the XBD specification.

For example, ncurses does this in NCURSES_SP_NAME(cbreak):
https://github.com/mirror/ncurses/blob/87c2c84cbd2332d6d94b12a1dcaf12ad1a51a938/ncurses/tinfo/lib_raw.c#L177

My question is this: I understand that the standard linked above is NOT a
specification for stty but rather for curses, and therefore the FreeBSD
implementation of stty need not follow it. *But*, would this be a welcome
change in stty for the sake of sticking to *some* standard? Or could this
potentially break lots of existing projects?

---------------------------------------------

Some context: I had made some changes in the tty library of Python to make
it more standard compliant: https://githubcom/python/cpython/pull/101832
<https://github.com/python/cpython/pull/101832>;

This is a part of a series of changes:
https://github.com/python/cpython/issues/85984

The particular change of concern is that in `tty.setcbreak()`, I unset
ICRNL. Because of this change , some old behavior is broken:
https://github.com/python/cpython/issues/114328

Sincerely,
Soumendra

[-- Attachment #2 --]
<div dir="ltr"><div dir="ltr"><div>Respected maintainers,</div><br><div><div dir="ltr"><div><div>In X/Open Curses, Issue 7 (<a href="https://pubs.opengroup.org/onlinepubs/9699909599/toc.pdf" target="_blank">https://pubs.opengroup.org/onlinepubs/9699909599/toc.pdf</a>), the following is mentioned about the cbreak mode:</div><div><br></div><div>This mode achieves the same effect as non-canonical-mode, Case B input processing (with<br>
MIN set to 1 and <strong>ICRNL cleared</strong>) as specified in the XBD specification.</div><div><br><div>For example, ncurses does this in NCURSES_SP_NAME(cbreak): 
<a href="https://github.com/mirror/ncurses/blob/87c2c84cbd2332d6d94b12a1dcaf12ad1a51a938/ncurses/tinfo/lib_raw.c#L177" target="_blank">https://github.com/mirror/ncurses/blob/87c2c84cbd2332d6d94b12a1dcaf12ad1a51a938/ncurses/tinfo/lib_raw.c#L177</a></div><div><br><div>My
 question is this: I understand that the standard linked above is NOT a 
specification for stty but rather for curses, and therefore the FreeBSD 
implementation of stty need not follow it. *But*, would this 
be a welcome change in stty for the sake of sticking to *some* standard?
 Or could this potentially break lots of existing projects?<br></div></div></div></div><div><br></div><div>---------------------------------------------<br></div><div><br></div><div>Some context: I had made some changes in the tty library of Python to make it more standard compliant: <a href="https://github.com/python/cpython/pull/101832" target="_blank">https://githubcom/python/cpython/pull/101832</a></div><div><br></div><div>This is a part of a series of changes: <a href="https://github.com/python/cpython/issues/85984" target="_blank">https://github.com/python/cpython/issues/85984</a></div><div><br></div><div>The
 particular change of concern is that in `tty.setcbreak()`, I unset 
ICRNL. Because of this change , some old behavior is broken: <a href="https://github.com/python/cpython/issues/114328" target="_blank">https://github.com/python/cpython/issues/114328</a></div><div><br></div><div>Sincerely,</div><div>Soumendra<div class="gmail-yj6qo"></div><div class="gmail-adL"><br><br></div></div></div></div></div></div>
help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOW54GWzkJ1zc_7CjY3nq-DMqnopvyPMk9rnttBrFR%2BZsgL62g>