mitogen.parent.cfmakeraw() contains repeated flags
E.g. BRKINT is specified twice
https://github.com/mitogen-hq/mitogen/blob/b8b15580af509830eb2b53fd86242345aaf3def7/mitogen/parent.py#L249-L256
Discovered during review of #1089
>>> 'IMAXBEL IXOFF INPCK BRKINT PARMRK ' 'ISTRIP INLCR ICRNL IXON IGNPAR' ' ' 'IGNBRK BRKINT PARMRK'
'IMAXBEL IXOFF INPCK BRKINT PARMRK ISTRIP INLCR ICRNL IXON IGNPAR IGNBRK BRKINT PARMRK'
>>> sorted(_.split())
['BRKINT', 'BRKINT', 'ICRNL', 'IGNBRK', 'IGNPAR', 'IMAXBEL', 'INLCR', 'INPCK', 'ISTRIP', 'IXOFF', 'IXON', 'PARMRK', 'PARMRK']
>>> 'IMAXBEL IXOFF INPCK BRKINT PARMRK ' 'ISTRIP INLCR ICRNL IXON IGNPAR' ' ' 'IGNBRK BRKINT PARMRK'
'IMAXBEL IXOFF INPCK BRKINT PARMRK ISTRIP INLCR ICRNL IXON IGNPAR IGNBRK BRKINT PARMRK'
>>> sorted(_.split())
['BRKINT', 'BRKINT', 'ICRNL', 'IGNBRK', 'IGNPAR', 'IMAXBEL', 'INLCR', 'INPCK', 'ISTRIP', 'IXOFF', 'IXON', 'PARMRK', 'PARMRK']
>>> sorted(set(_))
['BRKINT', 'ICRNL', 'IGNBRK', 'IGNPAR', 'IMAXBEL', 'INLCR', 'INPCK', 'ISTRIP', 'IXOFF', 'IXON', 'PARMRK']
>>> ' '.join(_)
'BRKINT ICRNL IGNBRK IGNPAR IMAXBEL INLCR INPCK ISTRIP IXOFF IXON PARMRK'
https://github.com/mitogen-hq/mitogen/wiki/cfmakeraw-notes
Mitogen attempts to (un)set a few non-POSIX flags
- iflag
IMAXBEL=0- Ring bell when input queue is full. Not implemented on Linux, always behaves as on.
- oflag
CREAD=1- Enable receiver
- lflag
PENDIN=0- Reprint characters in input queue when next source character is read. Not supported on Linux, marked XXX in https://man.freebsd.org/cgi/man.cgi?query=termios&sektion=4&apropos=0&manpath=FreeBSD+14.2-RELEASE+and+Ports#Local+Modes
Mitogen does not modify a few flags that others do modify
- iflag
IGNCR- Ignore Carriage Return. Removed in https://github.com/mitogen-hq/mitogen/commit/56943d3141c95a25b376d4dcfe01741d22f78bdf
- cc
VMIN&VTIME- determine blocking beahviour of read() calls
Mitogen may silently (un)set any flag that has no corresponding entry in the Python module termios, by way of getattr(..., termios, 0).
Previous discussion https://github.com/mitogen-hq/mitogen/issues/71