diff --git a/inc/signals.h b/inc/signals.h index 10b331d..f908ba0 100644 --- a/inc/signals.h +++ b/inc/signals.h @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ -/* :::::::: */ -/* signals.h :+: :+: */ -/* +:+ */ -/* By: whaffman +#+ */ -/* +#+ */ -/* Created: 2025/02/19 12:26:09 by whaffman #+# #+# */ -/* Updated: 2025/03/07 17:26:57 by whaffman ######## odam.nl */ +/* ::: :::::::: */ +/* signals.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/19 12:26:09 by whaffman #+# #+# */ +/* Updated: 2025/03/18 14:12:49 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,5 +22,6 @@ void signal_init_child(void); void signal_init_parent(void); void signal_init_minishell(void); void signal_init_heredoc(void); +void signal_init_heredoc_parent(void); #endif // SIGNALS_H diff --git a/src/redirect/redirect_process_heredoc.c b/src/redirect/redirect_process_heredoc.c index 43a1d42..56c3789 100644 --- a/src/redirect/redirect_process_heredoc.c +++ b/src/redirect/redirect_process_heredoc.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ -/* :::::::: */ -/* redirect_process_heredoc.c :+: :+: */ -/* +:+ */ -/* By: qmennen +#+ */ -/* +#+ */ -/* Created: 2025/02/26 16:46:32 by qmennen #+# #+# */ -/* Updated: 2025/03/07 17:44:38 by whaffman ######## odam.nl */ +/* ::: :::::::: */ +/* redirect_process_heredoc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/26 16:46:32 by qmennen #+# #+# */ +/* Updated: 2025/03/18 14:32:19 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,8 +44,9 @@ int fork_for_heredoc(t_minishell *msh, t_token *heredoc, t_token *delim) process_heredoc(msh, heredoc, delim); exit(0); } - signal_init_minishell(); + signal_init_heredoc_parent(); waitpid(pid, &status, 0); + signal_init_minishell(); heredoc->type = T_REDIRECT_IN; delim->value = ft_strdup_safe(msh, ".ms_heredoc"); return (0); @@ -65,7 +66,12 @@ int process_heredoc(t_minishell *msh, t_token *heredoc, t_token *delim) while (TRUE) { line = readline(">"); - if ((*line && ft_strcmp(line, delim->value) == 0) || !line) + if (!line) + { + error_msg("warning: here-document delimited by end-of-file, wanted", delim->value); + break; + } + if ((*line && ft_strcmp(line, delim->value) == 0)) break ; if (!*line) ft_strlcat(line, "\n", 1); diff --git a/src/signal/signal.c b/src/signal/signal.c index a98674f..75f083c 100644 --- a/src/signal/signal.c +++ b/src/signal/signal.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ -/* :::::::: */ -/* signal.c :+: :+: */ -/* +:+ */ -/* By: whaffman +#+ */ -/* +#+ */ -/* Created: 2025/02/19 12:18:47 by whaffman #+# #+# */ -/* Updated: 2025/03/07 17:34:59 by whaffman ######## odam.nl */ +/* ::: :::::::: */ +/* signal.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/19 12:18:47 by whaffman #+# #+# */ +/* Updated: 2025/03/18 14:17:03 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,8 +24,7 @@ void sigint_minishell_handler(int signum) void sigint_heredoc_handler(int signum) { (void)signum; - rl_on_new_line(); - rl_replace_line("", 0); + ft_putstr_fd("\n", 1); exit(130); } diff --git a/src/signal/signal_init.c.c b/src/signal/signal_init.c.c index 606a20d..f78551b 100644 --- a/src/signal/signal_init.c.c +++ b/src/signal/signal_init.c.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/26 15:39:01 by whaffman #+# #+# */ -/* Updated: 2025/03/06 14:42:28 by qmennen ### ########.fr */ +/* Updated: 2025/03/18 14:11:50 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,3 +35,9 @@ void signal_init_heredoc(void) signal(SIGINT, sigint_heredoc_handler); signal(SIGQUIT, SIG_IGN); } + +void signal_init_heredoc_parent(void) +{ + signal(SIGINT, SIG_IGN); + signal(SIGQUIT, SIG_IGN); +}