diff --git a/README.md b/README.md index 98e3a5b..108c7f6 100644 --- a/README.md +++ b/README.md @@ -123,18 +123,40 @@ test - [infos ici](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_05_03) +6. un heredoc interrompu par un Ctrl-D n'arrete pas la pipeline, mais un Ctrl-C si : +```text +[bash]$ echo << EOF | wc +> ^D bash: warning: here-document at line 1 delimited by end-of-file (wanted `EOF') + 1 0 1 +[bash]$ echo << EOF | wc +> ^C +[bash]$ +``` + ## schema d'execution : ```text - _________________________________________________ -|LOOP: shell_loop() | -| signal(SIGINT, handler) | -| mode interactif -> readline return line_input | -| signal(SIGINT, ignore) | -| lexing | -| parsing | -| execution | -|_________________________________________________| + ________________________________________________ +|LOOP: shell_loop() | +| ______________________________________________ | +||mode interactif || +|| *signal(SIGINT, handler)* || +|| readline return line_input || +||______________________________________________|| +| ______________________________________________ | +||mode execution || +|| *signal(SIGINT, ignore)* || +|| ____________________________________________ || +||| lexing ||| +|||____________________________________________||| +|| ____________________________________________ || +||| parsing ||| +|||____________________________________________||| +|| ____________________________________________ || +||| execution ||| +|||____________________________________________||| +||______________________________________________|| +|________________________________________________| ``` diff --git a/srcs/parsing/redirections/here_doc.c b/srcs/parsing/redirections/here_doc.c index 29f5164..1f590aa 100644 --- a/srcs/parsing/redirections/here_doc.c +++ b/srcs/parsing/redirections/here_doc.c @@ -6,7 +6,7 @@ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/11/11 18:46:43 by lperrey #+# #+# */ -/* Updated: 2021/11/18 13:17:19 by hulamy ### ########.fr */ +/* Updated: 2021/11/18 17:17:42 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -56,7 +56,7 @@ static int here_doc_write(char *delimiter, int doc_fd) { char *line; size_t line_count; - struct sigaction signal_action; + struct sigaction signal_action; signal_action.sa_handler = sigint_handler_heredoc; sigaction(SIGINT, &signal_action, NULL); diff --git a/srcs/signals.c b/srcs/signals.c index 8085804..a888e71 100644 --- a/srcs/signals.c +++ b/srcs/signals.c @@ -6,7 +6,7 @@ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/10/23 18:56:53 by lperrey #+# #+# */ -/* Updated: 2021/11/18 13:18:53 by hulamy ### ########.fr */ +/* Updated: 2021/11/18 17:02:16 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,7 @@ void sigint_handler_interactive(int signum) void sigint_handler_heredoc(int signum) { (void)signum; - write(1, "T", 1); + write(1, "\n", 1); rl_on_new_line(); rl_replace_line("", 1); rl_redisplay();