From 5f6030b13cb24ad209b96f27f0f95152ceab439d Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Mon, 25 Oct 2021 14:36:05 +0200 Subject: [PATCH] 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. --- Kernel/TTY/TTY.cpp | 10 +++++----- Userland/Libraries/LibC/sys/ttydefaults.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Kernel/TTY/TTY.cpp b/Kernel/TTY/TTY.cpp index 86ea95cd94..0d3e6aec38 100644 --- a/Kernel/TTY/TTY.cpp +++ b/Kernel/TTY/TTY.cpp @@ -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" }, diff --git a/Userland/Libraries/LibC/sys/ttydefaults.h b/Userland/Libraries/LibC/sys/ttydefaults.h index de8eeee645..2db57a43b2 100644 --- a/Userland/Libraries/LibC/sys/ttydefaults.h +++ b/Userland/Libraries/LibC/sys/ttydefaults.h @@ -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)