diff --git a/Makefile b/Makefile index 4531884..cb04d50 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,7 @@ srcs = \ src/env/envp.c \ src/executing/cmd/cmd_execute.c \ src/executing/common/do_waitpid.c \ + src/executing/connec_cmd/connec_cmd_execute.c \ src/executing/group_cmd/group_cmd_execute.c \ src/executing/here_doc/here_doc.c \ src/executing/here_doc/here_doc_errors.c \ diff --git a/src/executing/cmd/cmd_execute.c b/src/executing/cmd/cmd_execute.c index 8df462f..b009d9a 100644 --- a/src/executing/cmd/cmd_execute.c +++ b/src/executing/cmd/cmd_execute.c @@ -6,12 +6,13 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/04 19:26:37 by khais #+# #+# */ -/* Updated: 2025/04/04 19:42:16 by khais ### ########.fr */ +/* Updated: 2025/04/07 10:38:07 by khais ### ########.fr */ /* */ /* ************************************************************************** */ #include "cmd_execute.h" #include "../simple_cmd/simple_cmd_execute.h" +#include "../connec_cmd/connec_cmd_execute.h" #include "../group_cmd/group_cmd_execute.h" void cmd_execute(t_cmd *cmd, t_minishell *app) @@ -20,4 +21,6 @@ void cmd_execute(t_cmd *cmd, t_minishell *app) simple_cmd_execute(cmd->value.simple, app); if (cmd->type == FT_GROUP) group_cmd_execute(cmd->value.group, app); + if (cmd->type == FT_CONNECTION) + connec_cmd_execute(cmd->value.connection, app); } diff --git a/src/executing/connec_cmd/connec_cmd_execute.c b/src/executing/connec_cmd/connec_cmd_execute.c new file mode 100644 index 0000000..e696952 --- /dev/null +++ b/src/executing/connec_cmd/connec_cmd_execute.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* connec_cmd_execute.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/07 10:38:55 by khais #+# #+# */ +/* Updated: 2025/04/07 10:51:19 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "connec_cmd_execute.h" +#include "../cmd/cmd_execute.h" + +static void connec_and_cmd_execute(t_connec_cmd *cmd, t_minishell *app) +{ + cmd_execute(cmd->first, app); + if (app->last_return_value == 0) + cmd_execute(cmd->second, app); +} + +static void connec_or_cmd_execute(t_connec_cmd *cmd, t_minishell *app) +{ + cmd_execute(cmd->first, app); + if (app->last_return_value != 0) + cmd_execute(cmd->second, app); +} + +void connec_cmd_execute(t_connec_cmd *cmd, t_minishell *app) +{ + if (cmd->connector == FT_AND) + connec_and_cmd_execute(cmd, app); + if (cmd->connector == FT_OR) + connec_or_cmd_execute(cmd, app); +} diff --git a/src/executing/connec_cmd/connec_cmd_execute.h b/src/executing/connec_cmd/connec_cmd_execute.h new file mode 100644 index 0000000..c0eb73e --- /dev/null +++ b/src/executing/connec_cmd/connec_cmd_execute.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* connec_cmd_execute.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/07 10:38:19 by khais #+# #+# */ +/* Updated: 2025/04/07 10:38:48 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CONNEC_CMD_EXECUTE_H +# define CONNEC_CMD_EXECUTE_H + +# include "../../minishell.h" + +void connec_cmd_execute(t_connec_cmd *cmd, t_minishell *app); + +#endif // CONNEC_CMD_EXECUTE_H