/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* main.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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); }