From 3edff911072e2ba72952110e02f9f78ea31549e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Wed, 19 Mar 2025 11:28:32 +0100 Subject: [PATCH] cmdgroup parsing: parse a single cmdlist --- spec/minishell_spec.sh | 22 ++++++++++++++++++++++ src/parser/cmdgroup/cmdgroup.c | 8 ++++++-- src/parser/cmdgroup/cmdgroup.h | 4 ++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/spec/minishell_spec.sh b/spec/minishell_spec.sh index e69de29..40e3719 100644 --- a/spec/minishell_spec.sh +++ b/spec/minishell_spec.sh @@ -0,0 +1,22 @@ +It "parses null for empty command" + Data + #| + End + + When call ./minishell + The output should eq "" +End + +It "a single command is parsed" + Data + #|echo hello + End + + When call ./minishell + The output should eq \ +" ╰─ t_cmdgroup + ├─ t_cmdlist + │ ├─ num_cmds = 1 + │ ╰─ cmd[0] + ╰─ t_redir_list" +End diff --git a/src/parser/cmdgroup/cmdgroup.c b/src/parser/cmdgroup/cmdgroup.c index 6ea8fd9..64f96fa 100644 --- a/src/parser/cmdgroup/cmdgroup.c +++ b/src/parser/cmdgroup/cmdgroup.c @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/03/11 15:18:02 by khais #+# #+# */ -/* Updated: 2025/03/18 15:54:18 by khais ### ########.fr */ +/* Updated: 2025/03/19 11:26:34 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,11 +26,15 @@ t_cmdgroup *cmdgroup_from_wordlist(t_wordlist *words) cmd = ft_calloc(1, sizeof(t_cmdgroup)); if (cmd == NULL) return (NULL); + cmd->item = cmdlist_from_wordlist(words); return (cmd); } void cmdgroup_destroy(t_cmdgroup *cmd) { + if (cmd == NULL) + return ; + cmdlist_destroy(cmd->item); free(cmd); } @@ -40,7 +44,7 @@ void cmdgroup_debug(t_cmdgroup *cmd, t_buffer **leader, bool is_last) return ; indent(leader, is_last); ft_printf("%s\n", "t_cmdgroup"); - cmdlist_debug(&cmd->item, leader, false); + cmdlist_debug(cmd->item, leader, false); redir_list_debug(cmd->redirections, leader, true); dedent(leader, is_last); } diff --git a/src/parser/cmdgroup/cmdgroup.h b/src/parser/cmdgroup/cmdgroup.h index ad0a9c6..aedb177 100644 --- a/src/parser/cmdgroup/cmdgroup.h +++ b/src/parser/cmdgroup/cmdgroup.h @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/03/11 15:11:57 by khais #+# #+# */ -/* Updated: 2025/03/18 15:03:31 by khais ### ########.fr */ +/* Updated: 2025/03/19 11:26:22 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,7 +27,7 @@ typedef struct s_cmdgroup /* ** list of the commands inside this group */ - struct s_cmdlist item; + struct s_cmdlist *item; /* ** redirections to apply to the whole group */