/* ************************************************************************** */ /* */ /* :::::::: */ /* main.c :+: :+: */ /* +:+ */ /* By: qmennen +#+ */ /* +#+ */ /* Created: 2025/02/04 16:19:22 by whaffman #+# #+# */ /* Updated: 2025/03/19 14:50:28 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "libft.h" #include "minishell.h" int g_signum = 0; static void main_loop(t_minishell *msh) { while (TRUE) { g_signum = 0; msh->line = ft_prompt(msh); if (g_signum != 0) msh->exit_status = g_signum + 128; 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); } } int main(int argc, char **argv, char **envp) { t_minishell *msh; int exit_status; (void)argc; (void)argv; print_banner(); history_load(); msh = init_minishell(); signal_init_minishell(); environment_parse(msh, envp); main_loop(msh); exit_status = msh->exit_status; free_minishell(&msh); rl_clear_history(); return (exit_status); }