70 lines
2.0 KiB
C
70 lines
2.0 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* main.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2025/02/04 16:19:22 by whaffman #+# #+# */
|
|
/* Updated: 2025/03/05 15:17:58 by qmennen ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include "libft.h"
|
|
#include "minishell.h"
|
|
|
|
static void main_loop(t_minishell *msh)
|
|
{
|
|
while (TRUE)
|
|
{
|
|
msh->line = ft_prompt(msh);
|
|
if (msh->line == NULL)
|
|
break ;
|
|
msh->lexer = ft_lexer_new(msh);
|
|
msh->tokens = ft_parse_input(msh);
|
|
ft_lstiter(msh->tokens, token_print);
|
|
msh->commands = parser_get_commands(msh);
|
|
executor_execute_pipeline(msh);
|
|
free_minishell_line(msh);
|
|
}
|
|
}
|
|
|
|
static void main_test(t_minishell *msh, char *line)
|
|
{
|
|
int i;
|
|
char **args;
|
|
|
|
args = ft_split(line, ';');
|
|
i = 0;
|
|
while (args[i])
|
|
{
|
|
msh->line = args[i];
|
|
msh->lexer = ft_lexer_new(msh);
|
|
msh->tokens = ft_parse_input(msh);
|
|
ft_lstiter(msh->tokens, token_print);
|
|
msh->commands = parser_get_commands(msh);
|
|
executor_execute_pipeline(msh);
|
|
free_minishell_line(msh);
|
|
i++;
|
|
}
|
|
free(args);
|
|
}
|
|
|
|
int main(int argc, char **argv, char **envp)
|
|
{
|
|
t_minishell *msh;
|
|
|
|
print_banner();
|
|
history_load();
|
|
msh = init_minishell();
|
|
signal_init_minishell();
|
|
environment_parse(msh, envp);
|
|
if (argc > 2 && ft_strcmp(argv[1], "-c") == 0)
|
|
main_test(msh, argv[2]);
|
|
else
|
|
main_loop(msh);
|
|
free_minishell(&msh);
|
|
rl_clear_history();
|
|
return (EXIT_SUCCESS);
|
|
}
|