From: Lukas Jiriste Date: Sun, 1 Sep 2024 07:48:47 +0000 (+0200) Subject: Refactor termios X-Git-Url: https://git.ljiriste.work/?a=commitdiff_plain;h=c3d1abaca1eb649281aa8a2d3a4c5b03faad769b;p=42%2Fminishell.git Refactor termios --- diff --git a/Makefile b/Makefile index 3e73d4c..26c0c02 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,7 @@ SRCDIR := src SOURCES := main.c \ env.c \ vars.c \ + termios.c \ input_handling.c \ wildcards.c \ wildcards_inner.c \ diff --git a/inc/minishell.h b/inc/minishell.h index 1dbc8b8..3516221 100644 --- a/inc/minishell.h +++ b/inc/minishell.h @@ -6,7 +6,7 @@ /* By: lnikolov #include -#include -#include volatile sig_atomic_t g_last_signal; @@ -46,43 +44,6 @@ static void print_help(void) return ; } -typedef enum e_termios_action -{ - term_save, - term_load, -} t_termios_action; - -void termios_control(t_termios_action action, struct termios *termios) -{ - static struct termios saved; - - if (action == term_save) - saved = *termios; - else if (action == term_load) - *termios = saved; - return ; -} - -void setup_terminal(void) -{ - struct termios termios; - - tcgetattr(STDIN_FILENO, &termios); - termios_control(term_save, &termios); - termios.c_lflag |= NOFLSH; - tcsetattr(STDIN_FILENO, TCSANOW, &termios); - return ; -} - -void regenerate_terminal(void) -{ - struct termios termios; - - termios_control(term_load, &termios); - tcsetattr(STDIN_FILENO, TCSANOW, &termios); - return ; -} - /* // This would be more portable than the main with 3 input args extern char **environ; diff --git a/src/termios.c b/src/termios.c new file mode 100644 index 0000000..0b9f906 --- /dev/null +++ b/src/termios.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* termios.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: ljiriste +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/09/01 09:46:34 by ljiriste #+# #+# */ +/* Updated: 2024/09/01 09:47:37 by ljiriste ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" +#include +#include + +static struct termios *access_termios_saved(void) +{ + static struct termios saved; + + return (&saved); +} + +void setup_terminal(void) +{ + struct termios termios; + + tcgetattr(STDIN_FILENO, &termios); + *access_termios_saved() = termios; + termios.c_lflag |= NOFLSH; + tcsetattr(STDIN_FILENO, TCSANOW, &termios); + return ; +} + +void regenerate_terminal(void) +{ + struct termios termios; + + termios = *access_termios_saved(); + tcsetattr(STDIN_FILENO, TCSANOW, &termios); + return ; +}