diff --git a/Kernel/API/ttydefaults.h b/Kernel/API/ttydefaults.h new file mode 100644 index 0000000000..cf02a57480 --- /dev/null +++ b/Kernel/API/ttydefaults.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021, Daniel Bertalan + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#define TTYDEF_IFLAG (ICRNL) +#define TTYDEF_OFLAG (OPOST | ONLCR) +#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 (CS8) +#define TTYDEF_SPEED (B9600) + +#define CTRL(c) (c & 0x1F) +#define CINTR CTRL('c') +#define CQUIT 034 +#define CERASE 010 +#define CKILL CTRL('u') +#define CEOF CTRL('d') +#define CTIME 0 +#define CMIN 1 +#define CSWTC 0 +#define CSTART CTRL('q') +#define CSTOP CTRL('s') +#define CSUSP CTRL('z') +#define CEOL 0 +#define CREPRINT CTRL('r') +#define CDISCARD CTRL('o') +#define CWERASE CTRL('w') +#define CLNEXT CTRL('v') +#define CEOL2 CEOL + +#define CEOT CEOF +#define CBRK CEOL +#define CRPRNT CREPRINT +#define CFLUSH CDISCARD diff --git a/Kernel/API/ttydefaultschars.h b/Kernel/API/ttydefaultschars.h new file mode 100644 index 0000000000..0b7dc9b15c --- /dev/null +++ b/Kernel/API/ttydefaultschars.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2021, Daniel Bertalan + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +#ifdef __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wc99-designator" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +static const cc_t ttydefchars[NCCS] = { + [VINTR] = CINTR, + [VQUIT] = CQUIT, + [VERASE] = CERASE, + [VKILL] = CKILL, + [VEOF] = CEOF, + [VTIME] = CTIME, + [VMIN] = CMIN, + [VSWTC] = CSWTC, + [VSTART] = CSTART, + [VSTOP] = CSTOP, + [VSUSP] = CSUSP, + [VEOL] = CEOL, + [VREPRINT] = CREPRINT, + [VDISCARD] = CDISCARD, + [VWERASE] = CWERASE, + [VLNEXT] = CLNEXT, + [VEOL2] = CEOL2 +}; + +#ifdef __clang__ +# pragma clang diagnostic pop +#endif + +#ifdef __cplusplus +} +#endif diff --git a/Kernel/TTY/TTY.cpp b/Kernel/TTY/TTY.cpp index 12c02c9425..77da82f96e 100644 --- a/Kernel/TTY/TTY.cpp +++ b/Kernel/TTY/TTY.cpp @@ -10,13 +10,13 @@ #include #include #include +#include +#include #include #include #include #include -#define TTYDEFCHARS -#include -#undef TTYDEFCHARS +#include namespace Kernel { diff --git a/Userland/Libraries/LibC/sys/ttydefaults.h b/Userland/Libraries/LibC/sys/ttydefaults.h index 0719830cdf..057f7e7c8b 100644 --- a/Userland/Libraries/LibC/sys/ttydefaults.h +++ b/Userland/Libraries/LibC/sys/ttydefaults.h @@ -6,80 +6,10 @@ #pragma once -#define TTYDEF_IFLAG (ICRNL) -#define TTYDEF_OFLAG (OPOST | ONLCR) -#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 (CS8) -#define TTYDEF_SPEED (B9600) - -#define CTRL(c) (c & 0x1F) -#define CINTR CTRL('c') -#define CQUIT 034 -#define CERASE 010 -#define CKILL CTRL('u') -#define CEOF CTRL('d') -#define CTIME 0 -#define CMIN 1 -#define CSWTC 0 -#define CSTART CTRL('q') -#define CSTOP CTRL('s') -#define CSUSP CTRL('z') -#define CEOL 0 -#define CREPRINT CTRL('r') -#define CDISCARD CTRL('o') -#define CWERASE CTRL('w') -#define CLNEXT CTRL('v') -#define CEOL2 CEOL - -#define CEOT CEOF -#define CBRK CEOL -#define CRPRNT CREPRINT -#define CFLUSH CDISCARD +#include #ifdef TTYDEFCHARS -# ifdef KERNEL -# include -# else -# include -# endif - -# ifdef __clang__ -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wc99-designator" -# endif - -# ifdef __cplusplus -extern "C" { -# endif - -static const cc_t ttydefchars[NCCS] = { - [VINTR] = CINTR, - [VQUIT] = CQUIT, - [VERASE] = CERASE, - [VKILL] = CKILL, - [VEOF] = CEOF, - [VTIME] = CTIME, - [VMIN] = CMIN, - [VSWTC] = CSWTC, - [VSTART] = CSTART, - [VSTOP] = CSTOP, - [VSUSP] = CSUSP, - [VEOL] = CEOL, - [VREPRINT] = CREPRINT, - [VDISCARD] = CDISCARD, - [VWERASE] = CWERASE, - [VLNEXT] = CLNEXT, - [VEOL2] = CEOL2 -}; - -# ifdef __clang__ -# pragma clang diagnostic pop -# endif - -# ifdef __cplusplus -} -# endif +# include +# include #endif