maxishell
Implementation of a shell for Linux-like systems
Loading...
Searching...
No Matches
signals.c
Go to the documentation of this file.
1/* ************************************************************************** */
2/* */
3/* ::: :::::::: */
4/* signals.c :+: :+: :+: */
5/* +:+ +:+ +:+ */
6/* By: dmdemirk <dmdemirk@student.42london.c +#+ +:+ +#+ */
7/* +#+#+#+#+#+ +#+ */
8/* Created: 2024/07/17 13:59:59 by dmdemirk #+# #+# */
9/* Updated: 2024/09/09 12:32:04 by dmdemirk ### ########.fr */
10/* */
11/* ************************************************************************** */
12
13#include "signals.h"
14#include <readline/readline.h>
15#include <readline/history.h>
16#include <unistd.h>
17#include "libft.h"
18
19void signal_reset_prompt(int signo);
21void signal_print_newline(int signal);
22void sigquit_ignore(void);
24
25void signal_reset_prompt(int signo)
26{
27 (void)signo;
28 write(1, "\n", 1);
29 rl_on_new_line();
30 rl_replace_line("", 0);
31 rl_redisplay();
32}
33
34void signal_print_newline(int signal)
35{
36 (void)signal;
37 write(STDOUT_FILENO, "\n", 1);
38 rl_on_new_line();
39}
40
42{
43 struct sigaction a;
44
45 sigemptyset(&a.sa_mask);
46 a.sa_flags = 0;
47 a.sa_handler = SIG_IGN;
48 sigaction(SIGQUIT, &a, NULL);
49}
50
52{
53 struct sigaction a;
54
56 sigemptyset(&a.sa_mask);
57 a.sa_flags = 0;
58 a.sa_handler = *signal_reset_prompt;
59 a.sa_flags |= SA_RESTART;
60 sigaction(SIGINT, &a, NULL);
61}
62
64{
65 struct sigaction a;
66
67 sigemptyset(&a.sa_mask);
68 a.sa_flags = 0;
69 a.sa_handler = &signal_print_newline;
70 sigaction(SIGINT, &a, NULL);
71 a.sa_handler = SIG_IGN;
72 sigaction(SIGQUIT, &a, NULL);
73}
void signal_print_newline(int signal)
Definition signals.c:34
void signal_reset_prompt(int signo)
Definition signals.c:25
void set_signals_interactive(void)
Definition signals.c:51
void sigquit_ignore(void)
Definition signals.c:41
void set_signals_noninteractive(void)
Definition signals.c:63