refactor: creating commands
This commit is contained in:
parent
859b9c181a
commit
e5569d9b0b
47
inc/parser.h
47
inc/parser.h
@ -1,23 +1,24 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* :::::::: */
|
||||||
/* parser.h :+: :+: */
|
/* parser.h :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ */
|
||||||
/* 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/02/11 17:19:01 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/11 17:19:01 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#ifndef PARSER_H
|
#ifndef PARSER_H
|
||||||
# define PARSER_H
|
# define PARSER_H
|
||||||
|
|
||||||
# include "minishell.h"
|
# include "minishell.h"
|
||||||
|
|
||||||
t_command *parser_command_new(t_minishell *msh, char *cmd);
|
t_command *parser_alloc_command(t_minishell *msh, char *cmd);
|
||||||
char **parser_get_arguments(t_list *list, t_minishell *msh);
|
void parser_create_command(t_minishell *msh, t_command *cmd, t_list **l_tkn);
|
||||||
t_list *parser_get_commands(t_minishell *msh);
|
char **parser_get_arguments(t_list *list, t_minishell *msh);
|
||||||
t_list *parser_get_input_redirects(t_list *list);
|
t_list *parser_get_commands(t_minishell *msh);
|
||||||
|
t_list *parser_get_input_redirects(t_list *list);
|
||||||
#endif
|
|
||||||
|
#endif
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
#include "minishell.h"
|
#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;
|
t_command *command;
|
||||||
|
|
||||||
20
src/parser/parser_create_command.c
Normal file
20
src/parser/parser_create_command.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* 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 */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#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);
|
||||||
|
}
|
||||||
@ -6,19 +6,18 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/02/11 14:06:02 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 "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));
|
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;
|
t_list *token;
|
||||||
|
|
||||||
@ -46,14 +45,10 @@ t_list *parser_get_commands(t_minishell *msh)
|
|||||||
while (current)
|
while (current)
|
||||||
{
|
{
|
||||||
token = (t_token *) current->content;
|
token = (t_token *) current->content;
|
||||||
command = parser_command_new(msh, ft_strdup_safe(msh, token->value));
|
command = parser_alloc_command(msh, ft_strdup_safe(msh, token->value));
|
||||||
command->args = parser_get_arguments(current, msh);
|
parser_create_command(msh, command, ¤t);
|
||||||
command->redirect_in = redirect_get_inputs(msh, current);
|
if (!validate_redirects(command->redirect_in) || !validate_redirects(command->redirect_out))
|
||||||
command->redirect_out = redirect_get_outputs(msh, current);
|
|
||||||
if (!validate_redirects(command->redirect_in))
|
|
||||||
{
|
|
||||||
break ;
|
break ;
|
||||||
}
|
|
||||||
ft_lstadd_back(&command_list, ft_lstnew_safe(msh, command));
|
ft_lstadd_back(&command_list, ft_lstnew_safe(msh, command));
|
||||||
while (current && is_command_token((t_token *)current->content))
|
while (current && is_command_token((t_token *)current->content))
|
||||||
current = current->next;
|
current = current->next;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user