fix: exit
This commit is contained in:
parent
686ea5d0db
commit
5bfc613126
@ -89,6 +89,10 @@ static int ft_executor(t_data *data, t_cmd *cmd)
|
|||||||
return (1);
|
return (1);
|
||||||
dup2(cmd->fd_out, 1);
|
dup2(cmd->fd_out, 1);
|
||||||
dup2(cmd->fd_in, 0);
|
dup2(cmd->fd_in, 0);
|
||||||
|
if (cmd->fd_out > 2)
|
||||||
|
close(cmd->fd_out);
|
||||||
|
if (cmd->fd_in > 2)
|
||||||
|
close(cmd->fd_in);
|
||||||
execve(cmd->executable, cmd->args, tab);
|
execve(cmd->executable, cmd->args, tab);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
44
main.c
44
main.c
@ -43,6 +43,7 @@ static int ft_minishell(t_data *data, char *line)
|
|||||||
char *line_clean;
|
char *line_clean;
|
||||||
int infile;
|
int infile;
|
||||||
int outfile;
|
int outfile;
|
||||||
|
int return_value;
|
||||||
|
|
||||||
if (ft_syntatic_verif(data, line))
|
if (ft_syntatic_verif(data, line))
|
||||||
return (1);
|
return (1);
|
||||||
@ -50,33 +51,19 @@ static int ft_minishell(t_data *data, char *line)
|
|||||||
if (line_clean == NULL)
|
if (line_clean == NULL)
|
||||||
return (1);
|
return (1);
|
||||||
outfile = ft_outfile(data, line_clean);
|
outfile = ft_outfile(data, line_clean);
|
||||||
|
return_value = 0;
|
||||||
if (outfile == -2)
|
if (outfile == -2)
|
||||||
{
|
return_value = 1;
|
||||||
free(line_clean);
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
infile = ft_infile(data, line_clean);
|
infile = ft_infile(data, line_clean);
|
||||||
if (infile == -2)
|
if (return_value == 0 && infile == -2)
|
||||||
{
|
return_value = 1;
|
||||||
if (outfile > 2)
|
if (return_value == 0&& ft_gen_exit_code_var(data))
|
||||||
close(outfile);
|
return_value = 1;
|
||||||
free(line_clean);
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
if (ft_gen_exit_code_var(data))
|
|
||||||
{
|
|
||||||
if (outfile > 2)
|
|
||||||
close(outfile);
|
|
||||||
if (infile > 2)
|
|
||||||
close(infile);
|
|
||||||
ft_lstclear(cmds, ft_cmddel);
|
|
||||||
free(cmds);
|
|
||||||
free(line_clean);
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
cmds = ft_parse_cmds(data, line_clean, infile, outfile);
|
cmds = ft_parse_cmds(data, line_clean, infile, outfile);
|
||||||
if (cmds == NULL)
|
if (return_value == 0 && cmds == NULL)
|
||||||
{
|
return_value = 1;
|
||||||
|
if (return_value == 0 && ft_cmds_executor(data, cmds))
|
||||||
|
return_value = 1;
|
||||||
if (outfile > 2)
|
if (outfile > 2)
|
||||||
close(outfile);
|
close(outfile);
|
||||||
if (infile > 2)
|
if (infile > 2)
|
||||||
@ -84,13 +71,7 @@ static int ft_minishell(t_data *data, char *line)
|
|||||||
ft_lstclear(cmds, ft_cmddel);
|
ft_lstclear(cmds, ft_cmddel);
|
||||||
free(cmds);
|
free(cmds);
|
||||||
free(line_clean);
|
free(line_clean);
|
||||||
return (1);
|
return (-1 * return_value);
|
||||||
}
|
|
||||||
ft_cmds_executor(data, cmds);
|
|
||||||
ft_lstclear(cmds, ft_cmddel);
|
|
||||||
free(cmds);
|
|
||||||
free(line_clean);
|
|
||||||
return (0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ft_ctrlc(int num)
|
void ft_ctrlc(int num)
|
||||||
@ -144,6 +125,7 @@ int main(int ac, char **av, char **env)
|
|||||||
break ;
|
break ;
|
||||||
}
|
}
|
||||||
ft_lstclear(data.env, env_del);
|
ft_lstclear(data.env, env_del);
|
||||||
|
free(data.exit_code_str);
|
||||||
free(data.env);
|
free(data.env);
|
||||||
return (data.exit_code);
|
return (data.exit_code);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user