mitogen icon indicating copy to clipboard operation
mitogen copied to clipboard

mitogen.parent.cfmakeraw() contains repeated flags

Open moreati opened this issue 1 year ago • 5 comments

E.g. BRKINT is specified twice

https://github.com/mitogen-hq/mitogen/blob/b8b15580af509830eb2b53fd86242345aaf3def7/mitogen/parent.py#L249-L256

Discovered during review of #1089

moreati avatar Sep 20 '24 12:09 moreati

>>> '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'

moreati avatar Jan 12 '25 11:01 moreati

https://github.com/mitogen-hq/mitogen/wiki/cfmakeraw-notes

moreati avatar Feb 06 '25 13:02 moreati

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

moreati avatar Feb 06 '25 14:02 moreati

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).

moreati avatar Feb 06 '25 15:02 moreati

Previous discussion https://github.com/mitogen-hq/mitogen/issues/71

moreati avatar Feb 06 '25 15:02 moreati