diff --git a/srcs/builtins.c b/srcs/builtins.c index 6bfdab1..7a4ceb5 100755 --- a/srcs/builtins.c +++ b/srcs/builtins.c @@ -6,7 +6,7 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/05 18:20:21 by marde-vr #+# #+# */ -/* Updated: 2024/04/22 12:33:58 by marde-vr ### ########.fr */ +/* Updated: 2024/04/22 13:38:41 by marde-vr ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,8 @@ int cmd_is_forkable_builtin(char *cmd_token) { if (!ft_strcmp(cmd_token, "echo") || !ft_strcmp(cmd_token, "ret") || !ft_strcmp(cmd_token, "env") || !ft_strcmp(cmd_token, "exit") - || !ft_strcmp(cmd_token, "pwd")) + || !ft_strcmp(cmd_token, "pwd") || !ft_strcmp(cmd_token, "cd") + || !ft_strcmp(cmd_token, "export") || !ft_strcmp(cmd_token, "unset")) return (1); return (0); } @@ -25,29 +26,20 @@ int cmd_is_builtin(t_msh *msh, char *cmd_token) { if (!cmd_token) return (0); - //else if (msh->in_type == PIPE || msh->out_type == PIPE) - // return (1); + else if ((msh->in_type == PIPE || msh->out_type == PIPE) + && cmd_is_forkable_builtin(cmd_token)) + return (1); else if (!ft_strcmp(cmd_token, "cd")) - { - cd(msh->tokens); - return (1); - } + g_return_code = cd(msh->tokens); else if (!ft_strcmp(cmd_token, "exit")) - { g_return_code = exit_bt(msh); - return (1); - } else if (!ft_strcmp(cmd_token, "export")) - { g_return_code = ft_export(msh->tokens, msh->env); - return (1); - } else if (!ft_strcmp(cmd_token, "unset")) - { - ft_unset(msh); - return (1); - } - return (cmd_is_forkable_builtin(cmd_token)); + g_return_code = ft_unset(msh); + else + return (cmd_is_forkable_builtin(cmd_token)); + return (1); } int exec_builtin(t_msh *msh) @@ -61,11 +53,13 @@ int exec_builtin(t_msh *msh) else if (!ft_strcmp(msh->tokens->value, "env")) g_return_code = print_env(msh->env); else if (!ft_strcmp(msh->tokens->value, "exit")) - exit_bt(msh); + return (1); else if (!ft_strcmp(msh->tokens->value, "pwd")) g_return_code = pwd(); else if (!ft_strcmp(msh->tokens->value, "cd")) - g_return_code = cd(msh->tokens); + return (1); + else if (!ft_strcmp(msh->tokens->value, "export")) + return (1); else return (0); return (1); diff --git a/srcs/cd.c b/srcs/cd.c index 94ac531..38647ab 100755 --- a/srcs/cd.c +++ b/srcs/cd.c @@ -6,7 +6,7 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/16 21:02:54 by marde-vr #+# #+# */ -/* Updated: 2024/04/18 20:48:50 by marde-vr ### ########.fr */ +/* Updated: 2024/04/22 13:28:52 by marde-vr ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,6 @@ int cd(t_token *args) if (args->next && args->next->next) { fprintf(stderr, "minishell: cd: too many arguments\n"); - g_return_code = 1; return (1); } if (!args->next) @@ -29,7 +28,7 @@ int cd(t_token *args) if (chdir(new_wd) == -1) { perror("minishell: cd"); - g_return_code = 1; + return (1); } return (0); } diff --git a/srcs/minishell.h b/srcs/minishell.h index cae893a..ec772a6 100755 --- a/srcs/minishell.h +++ b/srcs/minishell.h @@ -6,7 +6,7 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/02/04 17:31:38 by tomoron #+# #+# */ -/* Updated: 2024/04/21 23:24:35 by tomoron ### ########.fr */ +/* Updated: 2024/04/22 13:10:38 by marde-vr ### ########.fr */ /* */ /* ************************************************************************** */ @@ -107,6 +107,7 @@ int file_access(t_msh *msh, int *found); void remove_command_from_msh(t_msh *msh); void ft_exit(t_msh *msh, int error_code); void sort_wildcards_token(t_token *list); +int cmd_is_forkable_builtin(char *cmd_token); void signal_handler_command(int signum); void ft_exit(t_msh *msh, int exit_code); void redirect_output(t_msh *msh, int i); diff --git a/srcs/pipe.c b/srcs/pipe.c index 823ffad..07aee57 100755 --- a/srcs/pipe.c +++ b/srcs/pipe.c @@ -6,7 +6,7 @@ /* By: marde-vr +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/05 18:17:25 by marde-vr #+# #+# */ -/* Updated: 2024/04/22 12:47:51 by marde-vr ### ########.fr */ +/* Updated: 2024/04/22 13:20:25 by marde-vr ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,7 @@ void execute_command(t_msh *msh, char **cmd_args) { char **env; + //if (cmd_is_forkable_builtin(msh->tokens->value)) if (exec_builtin(msh)) { free(cmd_args);