From 0584757446c8b08182be02ef7cf3ae9cd8c31bf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Wed, 19 Mar 2025 16:26:45 +0100 Subject: [PATCH] refactor: put parsing of command and debugging out of main loop --- src/minishell.c | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/src/minishell.c b/src/minishell.c index d927087..1cd21a6 100644 --- a/src/minishell.c +++ b/src/minishell.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/06 13:44:06 by kcolin #+# #+# */ -/* Updated: 2025/03/19 12:12:39 by khais ### ########.fr */ +/* Updated: 2025/03/19 16:30:32 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,12 +17,37 @@ #include "parser/wordsplit/wordsplit.h" #include +/* +** Parse shell commands from line. +** +** Frees line before exiting +*/ +static t_cmdgroup *parse_command(char *line) +{ + t_wordlist *words; + t_cmdgroup *cmd; + + words = minishell_wordsplit(line); + free(line); + cmd = cmdgroup_from_wordlist(words); + wordlist_destroy(words); + return (cmd); +} + +static void debug_command(t_cmdgroup *cmd) +{ + t_buffer *indent; + + indent = ft_buffer_new(); + cmdgroup_debug(cmd, indent, true); + ft_buffer_free(indent); + cmdgroup_destroy(cmd); +} + int main(int argc, char *argv[], char **envp) { char *line; t_cmdgroup *cmd; - t_wordlist *words; - t_buffer *indent; (void)argc; (void)argv; @@ -30,14 +55,8 @@ int main(int argc, char *argv[], char **envp) line = get_command(); while (line != NULL) { - words = minishell_wordsplit(line); - free(line); - cmd = cmdgroup_from_wordlist(words); - wordlist_destroy(words); - indent = ft_buffer_new(); - cmdgroup_debug(cmd, indent, true); - ft_buffer_free(indent); - cmdgroup_destroy(cmd); + cmd = parse_command(line); + debug_command(cmd); line = get_command(); } return (0);