norminette parser_get_arguments.c
This commit is contained in:
parent
d883cc7517
commit
f7bf872920
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user