norminette parser_get_arguments.c

This commit is contained in:
whaffman 2025-03-17 14:37:36 +01:00
parent d883cc7517
commit f7bf872920
3 changed files with 26 additions and 24 deletions

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/11 14:03:03 by qmennen #+# #+# */
/* Updated: 2025/03/07 16:14:15 by whaffman ######## odam.nl */
/* Updated: 2025/03/17 14:00:03 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -21,7 +21,8 @@ t_list *parser_get_commands(t_minishell *msh);
t_list *parser_get_input_redirects(t_list *list);
void parser_create_command(t_minishell *msh,
t_command *cmd, t_list **l_tkn);
char **parser_get_arguments(t_list *list, t_minishell *msh);
char **parser_get_arguments(t_minishell *msh,
t_list *list, int argc, char **args);
int parser_validate_command(t_command *command);
int parser_count_arguments(t_list *list);
char *parser_concatenate(t_minishell *msh, char *str1, char *str2);

View File

@ -1,12 +1,12 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* parser_create_command.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/02/27 13:35:02 by qmennen #+# #+# */
/* Updated: 2025/02/27 13:36:48 by qmennen ### ########.fr */
/* :::::::: */
/* parser_create_command.c :+: :+: */
/* +:+ */
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/27 13:35:02 by qmennen #+# #+# */
/* Updated: 2025/03/17 14:01:09 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -14,7 +14,11 @@
void parser_create_command(t_minishell *msh, t_command *cmd, t_list **l_tkn)
{
cmd->args = parser_get_arguments(*l_tkn, msh);
int argc;
argc = parser_count_arguments(*l_tkn);
cmd->args = malloc_safe(msh, (argc + 1) * sizeof(char *));
parser_get_arguments(msh, *l_tkn, argc, cmd->args);
cmd->redirect_in = redirect_get_inputs(msh, *l_tkn);
cmd->redirect_out = redirect_get_outputs(msh, *l_tkn);
}

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/02/11 16:20:09 by qmennen #+# #+# */
/* Updated: 2025/03/07 16:45:54 by whaffman ######## odam.nl */
/* Updated: 2025/03/17 13:59:28 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
@ -32,32 +32,29 @@ static int parser_should_concact(t_minishell *msh, int argi,
return (c_tkn->type < 3 && p_tkn->type < 3 && !ft_isspace(lexer_char));
}
char **parser_get_arguments(t_list *list, t_minishell *msh)
char **parser_get_arguments(t_minishell *msh,
t_list *list, int argc, char **args)
{
t_list *current;
t_list *cur;
t_list *prev;
char *str;
char **args;
int argc;
int i;
argc = parser_count_arguments(list);
args = malloc_safe(msh, (argc + 1) * sizeof(char *));
current = list;
cur = list;
i = 0;
while (argc > 0 && current)
while (argc > 0 && cur)
{
if (token_from_list(current)->type < 3)
if (token_from_list(cur)->type < 3)
{
str = parser_process_token(msh, token_list_index(list, i - 1), current);
if (parser_should_concact(msh, i, current, prev))
str = parser_process_token(msh, token_list_index(list, i - 1), cur);
if (parser_should_concact(msh, i, cur, prev))
args[i - 1] = parser_concatenate(msh, args[i - 1], str);
else if (str)
args[i++] = str;
argc--;
}
prev = current;
current = current->next;
prev = cur;
cur = cur->next;
}
args[i] = 0;
return (args);