Kernel+LibC: Default to 8-bit characters in TTY

Some ports (like `bc` with history enabled) sensibly set the termios
character size to 8 bits.

Previously, we left the character size value (given by the bitmask
CSIZE) as zero by default (meaning 5 bits per character), and returned
ENOTIMPL whenever someone modified it. This was dumb.
This commit is contained in:
Daniel Bertalan 2021-10-25 14:36:05 +02:00 committed by Andreas Kling
parent 0e68550c05
commit 5f6030b13c
Notes: sideshowbarker 2024-07-18 01:53:04 +09:00
2 changed files with 6 additions and 6 deletions

View file

@ -438,12 +438,12 @@ KResult TTY::set_termios(const termios& t)
}
}
if ((m_termios.c_cflag & CSIZE) != CS8) {
dbgln("FIXME: Character sizes other than 8 bits are not supported");
rc = ENOTIMPL;
}
static constexpr FlagDescription unimplemented_cflags[] = {
{ CSIZE, "CSIZE" },
{ CS5, "CS5" },
{ CS6, "CS6" },
{ CS7, "CS7" },
{ CS8, "CS8" },
{ CSTOPB, "CSTOPB" },
{ CREAD, "CREAD" },
{ PARENB, "PARENB" },

View file

@ -11,7 +11,7 @@
#define TTYDEF_LFLAG_NOECHO (ISIG | ICANON)
#define TTYDEF_LFLAG_ECHO (TTYDEF_LFLAG_NOECHO | ECHO | ECHOE | ECHOK | ECHONL)
#define TTYDEF_LFLAG TTYDEF_LFLAG_ECHO
#define TTYDEF_CFLAG (0)
#define TTYDEF_CFLAG (CS8)
#define TTYDEF_SPEED (B9600)
#define CTRL(c) (c & 0x1F)