From 0413133db96a7487ef5bc70d2a3c5d68d0603285 Mon Sep 17 00:00:00 2001 From: kinou-p Date: Fri, 15 Apr 2022 00:21:36 +0200 Subject: [PATCH 1/2] fix 0 with cat | ls --- includes/minishell.h | 30 +++++++++++++++--------------- srcs/main.c | 4 ++-- srcs/pipe/pipe.c | 14 +++++++++----- srcs/set_redirection/redirection.c | 2 +- 4 files changed, 27 insertions(+), 23 deletions(-) diff --git a/includes/minishell.h b/includes/minishell.h index bdc49ef..16f0a2c 100644 --- a/includes/minishell.h +++ b/includes/minishell.h @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/03/09 22:33:49 by apommier #+# #+# */ -/* Updated: 2022/04/14 10:30:52 by apommier ### ########.fr */ +/* Updated: 2022/04/15 00:20:25 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,18 +33,18 @@ // Describes a simple command and arguments typedef struct s_simple { struct s_command *big_cmd; - int fd[2]; - int pipe[2]; - int last; - int last_pipe[2]; - int child; - int nb_args; - char *infile; - int in_type; - int out_type; - char *outfile; - char **args; - char *cmd; + int fd[2]; + int pipe[2]; + int last; + int last_pipe[2]; + int child; + int nb_args; + char *infile; + int in_type; + int out_type; + char *outfile; + char **args; + char *cmd; } t_s_cmd; // Describes a complete command with the multiple pipes if any @@ -58,7 +58,6 @@ typedef struct s_command { int err_var; struct s_simple *current_s_cmd; char **path; - int pid; } t_cmd; //main.c @@ -87,6 +86,7 @@ char **ft_split_with_quote(char const *s, char c); //signals void crtl_c(int num); +void sig_heredoc(int num); //redirection.c set redirection and input good char *set_redirection(t_s_cmd *cmd, char *line, int index); @@ -96,7 +96,7 @@ char next_space(char *str, int i); int parse_quote(t_cmd *cmd); char *get_str(char *str, int start, int end); char *cut_str(char *str, int start, int end); -int double_size(char **tab); +int double_size(char **tab); void print_double_fd(char **tab, int fd); void free_double(char **tab); diff --git a/srcs/main.c b/srcs/main.c index ffd7768..d49641c 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/03/06 13:27:11 by apommier #+# #+# */ -/* Updated: 2022/04/14 10:35:08 by apommier ### ########.fr */ +/* Updated: 2022/04/15 00:13:24 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -53,7 +53,7 @@ void print_prompt(char **path) { char *input; t_cmd *cmd; - int i; + int i; input = 0; i = 0; diff --git a/srcs/pipe/pipe.c b/srcs/pipe/pipe.c index 0f8e223..0e0d6e2 100644 --- a/srcs/pipe/pipe.c +++ b/srcs/pipe/pipe.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/04/02 18:51:31 by apommier #+# #+# */ -/* Updated: 2022/04/14 11:27:29 by apommier ### ########.fr */ +/* Updated: 2022/04/15 00:14:04 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,19 +47,23 @@ int wait_exit(t_cmd *cmd) { close(cmd->s_cmds[i]->fd[0]); close(cmd->s_cmds[i]->fd[1]); - } if (WIFEXITED(status)) { - if (!cmd->err_var) - cmd->err_var = WEXITSTATUS(status); + //printf("return normally cmd = -%s-\n", cmd->s_cmds[i]->cmd); + //if (!cmd->err_var) + cmd->err_var = WEXITSTATUS(status); + //printf("err_var= %d\n", cmd->err_var); //printf("code= %d\n", cmd->err_var); } else if (WIFSIGNALED(status)) { - cmd->err_var = WTERMSIG(status); + //printf("return by signal cmd = -%s-\n", cmd->s_cmds[i]->cmd); + if (WTERMSIG(status) != 13) + cmd->err_var = WTERMSIG(status); //if (cmd->err_var == 2) ft_putstr_fd("\b\b\b\b\b", 1); } + } i++; } } diff --git a/srcs/set_redirection/redirection.c b/srcs/set_redirection/redirection.c index 52f6160..a6e8602 100644 --- a/srcs/set_redirection/redirection.c +++ b/srcs/set_redirection/redirection.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/03/09 15:18:58 by apommier #+# #+# */ -/* Updated: 2022/04/14 11:28:30 by apommier ### ########.fr */ +/* Updated: 2022/04/15 00:13:27 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ From d82442382248997c9650c1da33e8f531ba53454d Mon Sep 17 00:00:00 2001 From: kinou-p Date: Fri, 15 Apr 2022 01:10:50 +0200 Subject: [PATCH 2/2] fix var child child =0 at start --- srcs/pipe/pipe.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/srcs/pipe/pipe.c b/srcs/pipe/pipe.c index 0e0d6e2..1560737 100644 --- a/srcs/pipe/pipe.c +++ b/srcs/pipe/pipe.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/04/02 18:51:31 by apommier #+# #+# */ -/* Updated: 2022/04/15 00:14:04 by apommier ### ########.fr */ +/* Updated: 2022/04/15 01:10:14 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -124,6 +124,7 @@ void execute(t_cmd *cmd, char **env) fdin=dup(tmpin); while(cmd->current_s_cmd) { + cmd->current_s_cmd->child = 0; fdout = 0; if (i > 0 && cmd->current_s_cmd->infile) {