From 41f49d5d1589e4be57cc6ef9e77e8c80d57613a7 Mon Sep 17 00:00:00 2001 From: Anonymus Raccoon Date: Thu, 21 May 2020 14:55:52 +0200 Subject: [PATCH] Restoring usual termios status before and after commands --- Makefile | 3 ++- include/my_ncurses.h | 6 +++++- src/key_bindings/basic_typing_functions.c | 2 ++ src/my_ncurses/pause_utils.c | 20 ++++++++++++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 src/my_ncurses/pause_utils.c diff --git a/Makefile b/Makefile index 78c0632..8980c7b 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,8 @@ SRC = src/shell.c \ src/key_bindings/control_commands.c \ src/key_bindings/move_commands.c \ src/my_ncurses/my_ncurses.c \ - src/my_ncurses/string_utils.c + src/my_ncurses/string_utils.c \ + src/my_ncurses/pause_utils.c OBJ = $(SRC:%.c=%.o) OBJ += src/main.o diff --git a/include/my_ncurses.h b/include/my_ncurses.h index 6778b87..c33bb57 100644 --- a/include/my_ncurses.h +++ b/include/my_ncurses.h @@ -25,6 +25,7 @@ typedef struct { struct termios old_termios; + struct termios saved_termios; int x; int y; int w; @@ -65,4 +66,7 @@ my_addstr(window, str)) #define my_clrtoeol() (printf("\x1B[K")) -#define my_clrtobot() (printf("\x1B[J")) \ No newline at end of file +#define my_clrtobot() (printf("\x1B[J")) + +void my_npause(my_window *window); +void my_nresume(my_window *window); \ No newline at end of file diff --git a/src/key_bindings/basic_typing_functions.c b/src/key_bindings/basic_typing_functions.c index 5d3f3a8..057d12b 100644 --- a/src/key_bindings/basic_typing_functions.c +++ b/src/key_bindings/basic_typing_functions.c @@ -64,7 +64,9 @@ int newline_command(int key, buffer_t *buffer, env_t *env) my_addstr(env->window, "\n"); if (buffer->buffer) { add_to_history(buffer->buffer, env); + my_npause(env->window); ret = eval_raw_cmd(buffer->buffer, env); + my_nresume(env->window); buffer->buffer[0] = '\0'; buffer->pos = 0; my_getcuryx(&env->window->y, &env->window->x); diff --git a/src/my_ncurses/pause_utils.c b/src/my_ncurses/pause_utils.c new file mode 100644 index 0000000..3c29566 --- /dev/null +++ b/src/my_ncurses/pause_utils.c @@ -0,0 +1,20 @@ +/* +** EPITECH PROJECT, 2020 +** ash +** File description: +** pause_utils +*/ + +#include "my_ncurses.h" +#include + +void my_npause(my_window *window) +{ + tcgetattr(0, &window->saved_termios); + tcsetattr(0, TCSANOW, &window->old_termios); +} + +void my_nresume(my_window *window) +{ + tcsetattr(0, TCSANOW, &window->saved_termios); +} \ No newline at end of file