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