#include "minishell.h" int g_signal = 0; static void sigint_handler(int sig) { g_signal = sig; write(STDOUT_FILENO, "\n", 1); rl_on_new_line(); rl_replace_line("", 0); rl_redisplay(); } static void sigquit_handler(int sig) { g_signal = sig; (void)sig; } void ms_setup_signals(t_shell *sh) { struct sigaction sa_int; struct sigaction sa_quit; (void)sh; memset(&sa_int, 0, sizeof(sa_int)); memset(&sa_quit, 0, sizeof(sa_quit)); sa_int.sa_handler = sigint_handler; sa_quit.sa_handler = sigquit_handler; sigemptyset(&sa_int.sa_mask); sigemptyset(&sa_quit.sa_mask); sigaction(SIGINT, &sa_int, NULL); sigaction(SIGQUIT, &sa_quit, NULL); } void ms_set_child_signals(void) { signal(SIGINT, SIG_DFL); signal(SIGQUIT, SIG_DFL); } void ms_set_heredoc_signals(void) { signal(SIGINT, SIG_DFL); signal(SIGQUIT, SIG_IGN); }