norminette parser_get_arguments.c
This commit is contained in:
parent
d883cc7517
commit
f7bf872920
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/11 14:03:03 by qmennen #+# #+# */
|
/* 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);
|
t_list *parser_get_input_redirects(t_list *list);
|
||||||
void parser_create_command(t_minishell *msh,
|
void parser_create_command(t_minishell *msh,
|
||||||
t_command *cmd, t_list **l_tkn);
|
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_validate_command(t_command *command);
|
||||||
int parser_count_arguments(t_list *list);
|
int parser_count_arguments(t_list *list);
|
||||||
char *parser_concatenate(t_minishell *msh, char *str1, char *str2);
|
char *parser_concatenate(t_minishell *msh, char *str1, char *str2);
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* :::::::: */
|
||||||
/* parser_create_command.c :+: :+: :+: */
|
/* parser_create_command.c :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/27 13:35:02 by qmennen #+# #+# */
|
/* Created: 2025/02/27 13:35:02 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/27 13:36:48 by qmennen ### ########.fr */
|
/* 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)
|
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_in = redirect_get_inputs(msh, *l_tkn);
|
||||||
cmd->redirect_out = redirect_get_outputs(msh, *l_tkn);
|
cmd->redirect_out = redirect_get_outputs(msh, *l_tkn);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/11 16:20:09 by qmennen #+# #+# */
|
/* 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));
|
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;
|
t_list *prev;
|
||||||
char *str;
|
char *str;
|
||||||
char **args;
|
|
||||||
int argc;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
argc = parser_count_arguments(list);
|
cur = list;
|
||||||
args = malloc_safe(msh, (argc + 1) * sizeof(char *));
|
|
||||||
current = list;
|
|
||||||
i = 0;
|
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);
|
str = parser_process_token(msh, token_list_index(list, i - 1), cur);
|
||||||
if (parser_should_concact(msh, i, current, prev))
|
if (parser_should_concact(msh, i, cur, prev))
|
||||||
args[i - 1] = parser_concatenate(msh, args[i - 1], str);
|
args[i - 1] = parser_concatenate(msh, args[i - 1], str);
|
||||||
else if (str)
|
else if (str)
|
||||||
args[i++] = str;
|
args[i++] = str;
|
||||||
argc--;
|
argc--;
|
||||||
}
|
}
|
||||||
prev = current;
|
prev = cur;
|
||||||
current = current->next;
|
cur = cur->next;
|
||||||
}
|
}
|
||||||
args[i] = 0;
|
args[i] = 0;
|
||||||
return (args);
|
return (args);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user