Files
minishell/minishell-codex/src/core/signals.c
2026-02-09 20:47:43 +01:00

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);
}