void signal_action(int signal) { if (signal == SIGINT || signal == SIGQUIT) ft_sigint(); else if (signal == SIGTERM || signal == SIGHUP || signal == SIGTTIN) ft_sigexit(); else if (signal == SIGTSTP) ft_sigtstp(); else if (signal == SIGCONT) ft_sigcont(); else if (signal == SIGILL || signal == SIGABRT || signal == SIGBUS || signal == SIGSEGV) ft_sigexit(); }
void ft_take_signal(int sign) { if (sign == SIGTSTP || sign == SIGTTIN || sign == SIGTTOU) ft_sigtstp(); if (sign == SIGCONT || sign == SIGURG || sign == SIGCHLD || sign == SIGIO || sign == SIGINFO) { ft_termios_init(); ft_underline(); signal(SIGTSTP, ft_take_signal); } if (sign == SIGINT || sign == SIGTERM || sign == SIGHUP || sign == SIGPIPE || sign == SIGALRM || sign == SIGXCPU || sign == SIGXFSZ || sign == SIGVTALRM || sign == SIGPROF || sign == SIGUSR1 || sign == SIGUSR2 || sign == SIGQUIT || sign == SIGILL || sign == SIGTRAP || sign == SIGABRT || sign == SIGEMT || sign == SIGFPE || sign == SIGBUS || sign == SIGSEGV || sign == SIGSYS) ft_sigint(); if (sign == SIGWINCH) { tputs(tgetstr("cl", NULL), 1, tty_putchar); ft_underline(); } }