47 lines
838 B
C
47 lines
838 B
C
#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);
|
|
}
|