diff --git a/inc/parser.h b/inc/parser.h index c07368f..beba406 100644 --- a/inc/parser.h +++ b/inc/parser.h @@ -1,23 +1,24 @@ -/* ************************************************************************** */ -/* */ -/* :::::::: */ -/* parser.h :+: :+: */ -/* +:+ */ -/* By: qmennen +#+ */ -/* +#+ */ -/* Created: 2025/02/11 14:03:03 by qmennen #+# #+# */ -/* Updated: 2025/02/11 17:19:01 by whaffman ######## odam.nl */ -/* */ -/* ************************************************************************** */ - -#ifndef PARSER_H -# define PARSER_H - -# include "minishell.h" - -t_command *parser_command_new(t_minishell *msh, char *cmd); -char **parser_get_arguments(t_list *list, t_minishell *msh); -t_list *parser_get_commands(t_minishell *msh); -t_list *parser_get_input_redirects(t_list *list); - -#endif +/* ************************************************************************** */ +/* */ +/* :::::::: */ +/* parser.h :+: :+: */ +/* +:+ */ +/* By: qmennen +#+ */ +/* +#+ */ +/* Created: 2025/02/11 14:03:03 by qmennen #+# #+# */ +/* Updated: 2025/02/11 17:19:01 by whaffman ######## odam.nl */ +/* */ +/* ************************************************************************** */ + +#ifndef PARSER_H +# define PARSER_H + +# include "minishell.h" + +t_command *parser_alloc_command(t_minishell *msh, char *cmd); +void parser_create_command(t_minishell *msh, t_command *cmd, t_list **l_tkn); +char **parser_get_arguments(t_list *list, t_minishell *msh); +t_list *parser_get_commands(t_minishell *msh); +t_list *parser_get_input_redirects(t_list *list); + +#endif diff --git a/src/parser/parser_new_command.c b/src/parser/parser_alloc_command.c similarity index 95% rename from src/parser/parser_new_command.c rename to src/parser/parser_alloc_command.c index 3599cba..fc49925 100644 --- a/src/parser/parser_new_command.c +++ b/src/parser/parser_alloc_command.c @@ -12,7 +12,7 @@ #include "minishell.h" -t_command *parser_command_new(t_minishell *msh, char *cmd) +t_command *parser_alloc_command(t_minishell *msh, char *cmd) { t_command *command; diff --git a/src/parser/parser_create_command.c b/src/parser/parser_create_command.c new file mode 100644 index 0000000..723f860 --- /dev/null +++ b/src/parser/parser_create_command.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parser_create_command.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/27 13:35:02 by qmennen #+# #+# */ +/* Updated: 2025/02/27 13:36:48 by qmennen ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +void parser_create_command(t_minishell *msh, t_command *cmd, t_list **l_tkn) +{ + cmd->args = parser_get_arguments(*l_tkn, msh); + cmd->redirect_in = redirect_get_inputs(msh, *l_tkn); + cmd->redirect_out = redirect_get_outputs(msh, *l_tkn); +} diff --git a/src/parser/parser_get_commands.c b/src/parser/parser_get_commands.c index 44e182f..68bbe5a 100644 --- a/src/parser/parser_get_commands.c +++ b/src/parser/parser_get_commands.c @@ -6,19 +6,18 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/11 14:06:02 by qmennen #+# #+# */ -/* Updated: 2025/02/18 20:36:01 by qmennen ### ########.fr */ +/* Updated: 2025/02/27 13:38:56 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -#include "utils.h" -static int is_command_token(t_token *token) +static int is_command_token(t_token *token) { return (token->type < 3 || redirect_token_type(token)); } -static int validate_redirects(t_list *lst) +static int validate_redirects(t_list *lst) { t_list *token; @@ -46,14 +45,10 @@ t_list *parser_get_commands(t_minishell *msh) while (current) { token = (t_token *) current->content; - command = parser_command_new(msh, ft_strdup_safe(msh, token->value)); - command->args = parser_get_arguments(current, msh); - command->redirect_in = redirect_get_inputs(msh, current); - command->redirect_out = redirect_get_outputs(msh, current); - if (!validate_redirects(command->redirect_in)) - { + command = parser_alloc_command(msh, ft_strdup_safe(msh, token->value)); + parser_create_command(msh, command, ¤t); + if (!validate_redirects(command->redirect_in) || !validate_redirects(command->redirect_out)) break ; - } ft_lstadd_back(&command_list, ft_lstnew_safe(msh, command)); while (current && is_command_token((t_token *)current->content)) current = current->next;