From d122a005673db7ca98b5a341c41eaa68dbefddff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Tue, 8 Apr 2025 16:18:57 +0200 Subject: [PATCH] debug, destroy all new types (also some code for testing it) --- Makefile | 4 ++ src/executing/cmd/cmd_execute.c | 4 +- src/executing/connec_cmd/connec_cmd_execute.c | 4 +- src/parser/cmd/cmd_debug.c | 66 +++++++++++++++++++ src/parser/cmd/cmd_debug.h | 20 ++++++ src/parser/cmd/cmd_destroy.c | 60 +++++++++++++++++ src/parser/cmd/cmd_destroy.h | 20 ++++++ src/parser/connec_cmd/connec_cmd_debug.c | 51 ++++++++++++++ src/parser/connec_cmd/connec_cmd_debug.h | 20 ++++++ src/parser/group_cmd/group_cmd_debug.c | 32 +++++++++ src/parser/group_cmd/group_cmd_debug.h | 20 ++++++ src/parser/wordlist/wordlist_debug.c | 16 ++--- 12 files changed, 307 insertions(+), 10 deletions(-) create mode 100644 src/parser/cmd/cmd_debug.c create mode 100644 src/parser/cmd/cmd_debug.h create mode 100644 src/parser/cmd/cmd_destroy.c create mode 100644 src/parser/cmd/cmd_destroy.h create mode 100644 src/parser/connec_cmd/connec_cmd_debug.c create mode 100644 src/parser/connec_cmd/connec_cmd_debug.h create mode 100644 src/parser/group_cmd/group_cmd_debug.c create mode 100644 src/parser/group_cmd/group_cmd_debug.h diff --git a/Makefile b/Makefile index c9de869..8f2e1f8 100644 --- a/Makefile +++ b/Makefile @@ -47,6 +47,8 @@ srcs = \ src/executing/simple_cmd/subprocess.c \ src/ft_errno.c \ src/get_command.c \ + src/parser/cmd/cmd_debug.c \ + src/parser/cmd/cmd_destroy.c \ src/parser/cmdgroup/cmdgroup.c \ src/parser/cmdgroup/cmdgroup_builder.c \ src/parser/cmdgroup/paren.c \ @@ -55,6 +57,8 @@ srcs = \ src/parser/cmdlist/cmdlist_debug.c \ src/parser/cmdlist/cmdlist_item.c \ src/parser/cmdlist/operator.c \ + src/parser/connec_cmd/connec_cmd_debug.c \ + src/parser/group_cmd/group_cmd_debug.c \ src/parser/matchers/blank.c \ src/parser/matchers/identifier.c \ src/parser/matchers/metacharacter.c \ diff --git a/src/executing/cmd/cmd_execute.c b/src/executing/cmd/cmd_execute.c index b009d9a..84285c0 100644 --- a/src/executing/cmd/cmd_execute.c +++ b/src/executing/cmd/cmd_execute.c @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/04 19:26:37 by khais #+# #+# */ -/* Updated: 2025/04/07 10:38:07 by khais ### ########.fr */ +/* Updated: 2025/04/08 16:22:22 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ void cmd_execute(t_cmd *cmd, t_minishell *app) { + if (cmd == NULL) + return ; if (cmd->type == FT_SIMPLE) simple_cmd_execute(cmd->value.simple, app); if (cmd->type == FT_GROUP) diff --git a/src/executing/connec_cmd/connec_cmd_execute.c b/src/executing/connec_cmd/connec_cmd_execute.c index 29e477f..1ab137e 100644 --- a/src/executing/connec_cmd/connec_cmd_execute.c +++ b/src/executing/connec_cmd/connec_cmd_execute.c @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/07 10:38:55 by khais #+# #+# */ -/* Updated: 2025/04/07 11:36:57 by khais ### ########.fr */ +/* Updated: 2025/04/09 16:58:44 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -46,6 +46,8 @@ static void connec_pipe_cmd_execute(t_connec_cmd *cmd, t_minishell *app) void connec_cmd_execute(t_connec_cmd *cmd, t_minishell *app) { + if (cmd == NULL) + return ; if (cmd->connector == FT_AND) connec_and_cmd_execute(cmd, app); if (cmd->connector == FT_OR) diff --git a/src/parser/cmd/cmd_debug.c b/src/parser/cmd/cmd_debug.c new file mode 100644 index 0000000..b69ed14 --- /dev/null +++ b/src/parser/cmd/cmd_debug.c @@ -0,0 +1,66 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* cmd_debug.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/09 16:53:27 by khais #+# #+# */ +/* Updated: 2025/04/09 17:47:47 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "cmd_debug.h" +#include "libft.h" +#include "../../treedrawing.h" +#include "../redirect/redirect_debug.h" +#include "../simple_cmd/simple_cmd.h" +#include "../group_cmd/group_cmd_debug.h" +#include "../connec_cmd/connec_cmd_debug.h" + +static void cmd_type_debug(t_cmd_type type, t_buffer *leader, bool is_last) +{ + indent(leader, is_last); + ft_printf("t_cmd_type = "); + if (type == FT_CONNECTION) + ft_printf("FT_CONNECTION\n"); + if (type == FT_GROUP) + ft_printf("FT_GROUP\n"); + if (type == FT_SIMPLE) + ft_printf("FT_SIMPLE\n"); + dedent(leader, is_last); +} + +static void cmd_value_debug(t_cmd *cmd, t_buffer *leader, bool is_last) +{ + indent(leader, is_last); + ft_printf("value\n"); + if (cmd->type == FT_CONNECTION) + connec_cmd_debug(cmd->value.connection, leader, true); + if (cmd->type == FT_GROUP) + group_cmd_debug(cmd->value.group, leader, true); + if (cmd->type == FT_SIMPLE) + simple_cmd_debug(cmd->value.simple, leader, true); + dedent(leader, is_last); +} + +void cmd_debug(t_cmd *cmd, t_buffer *leader, bool is_last) +{ + indent(leader, is_last); + if (cmd == NULL) + ft_printf("t_cmd = NULL\n"); + else + { + ft_printf("t_cmd\n"); + cmd_type_debug(cmd->type, leader, false); + indent(leader, false); + ft_printf("flags = %d\n", cmd->flags); + dedent(leader, false); + indent(leader, false); + ft_printf("line = %d\n", cmd->line); + dedent(leader, false); + redirect_debug(cmd->redirects, leader, false); + cmd_value_debug(cmd, leader, true); + } + dedent(leader, is_last); +} diff --git a/src/parser/cmd/cmd_debug.h b/src/parser/cmd/cmd_debug.h new file mode 100644 index 0000000..28d8aeb --- /dev/null +++ b/src/parser/cmd/cmd_debug.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* cmd_debug.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/09 16:51:17 by khais #+# #+# */ +/* Updated: 2025/04/09 16:54:24 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CMD_DEBUG_H +# define CMD_DEBUG_H + +# include "../../minishell.h" + +void cmd_debug(t_cmd *cmd, t_buffer *leader, bool is_last); + +#endif // CMD_DEBUG_H diff --git a/src/parser/cmd/cmd_destroy.c b/src/parser/cmd/cmd_destroy.c new file mode 100644 index 0000000..1179fd2 --- /dev/null +++ b/src/parser/cmd/cmd_destroy.c @@ -0,0 +1,60 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* cmd_destroy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/09 16:53:02 by khais #+# #+# */ +/* Updated: 2025/04/09 17:42:05 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "cmd_destroy.h" +#include +#include "../simple_cmd/simple_cmd.h" + +static void redirect_destroy(t_redirect *redirect) +{ + t_redirect *next; + + while (redirect != NULL) + { + next = redirect->next; + free(redirect->here_doc_eof); + free(redirect); + redirect = next; + } +} + +static void connec_cmd_destroy(t_connec_cmd *cmd) +{ + if (cmd == NULL) + return ; + cmd_destroy(cmd->first); + cmd_destroy(cmd->second); + free(cmd); +} + +static void group_cmd_destroy(t_group_cmd *cmd) +{ + if (cmd == NULL) + return ; + cmd_destroy(cmd->cmd); + redirect_destroy(cmd->redirects); + free(cmd); +} + +void cmd_destroy(t_cmd *cmd) +{ + if (cmd == NULL) + return ; + if (cmd->type == FT_CONNECTION) + connec_cmd_destroy(cmd->value.connection); + if (cmd->type == FT_GROUP) + group_cmd_destroy(cmd->value.group); + if (cmd->type == FT_SIMPLE) + simple_cmd_destroy(cmd->value.simple); + redirect_destroy(cmd->redirects); + free(cmd); +} diff --git a/src/parser/cmd/cmd_destroy.h b/src/parser/cmd/cmd_destroy.h new file mode 100644 index 0000000..01b8bbf --- /dev/null +++ b/src/parser/cmd/cmd_destroy.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* cmd_destroy.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/09 16:52:31 by khais #+# #+# */ +/* Updated: 2025/04/09 16:54:42 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CMD_DESTROY_H +# define CMD_DESTROY_H + +# include "../../minishell.h" + +void cmd_destroy(t_cmd *cmd); + +#endif // CMD_DESTROY_H diff --git a/src/parser/connec_cmd/connec_cmd_debug.c b/src/parser/connec_cmd/connec_cmd_debug.c new file mode 100644 index 0000000..cd3d433 --- /dev/null +++ b/src/parser/connec_cmd/connec_cmd_debug.c @@ -0,0 +1,51 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* connec_cmd_debug.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/09 17:47:18 by khais #+# #+# */ +/* Updated: 2025/04/09 17:49:02 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "connec_cmd_debug.h" +#include "../../treedrawing.h" +#include "libft.h" +#include "../cmd/cmd_debug.h" + +static void connector_debug(t_connector connector, t_buffer *leader, + bool is_last) +{ + indent(leader, is_last); + ft_printf("t_connector = "); + if (connector == FT_PIPE) + ft_printf("FT_PIPE\n"); + if (connector == FT_AND) + ft_printf("FT_AND\n"); + if (connector == FT_OR) + ft_printf("FT_OR\n"); + dedent(leader, is_last); +} + +void connec_cmd_debug(t_connec_cmd *cmd, t_buffer *leader, bool is_last) +{ + indent(leader, is_last); + if (cmd == NULL) + ft_printf("t_connec_cmd = NULL\n"); + else + { + ft_printf("t_connec_cmd\n"); + indent(leader, false); + ft_printf("first\n"); + cmd_debug(cmd->first, leader, true); + dedent(leader, false); + indent(leader, false); + ft_printf("second\n"); + cmd_debug(cmd->second, leader, true); + dedent(leader, false); + connector_debug(cmd->connector, leader, true); + } + dedent(leader, is_last); +} diff --git a/src/parser/connec_cmd/connec_cmd_debug.h b/src/parser/connec_cmd/connec_cmd_debug.h new file mode 100644 index 0000000..86eeba2 --- /dev/null +++ b/src/parser/connec_cmd/connec_cmd_debug.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* connec_cmd_debug.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/09 17:46:51 by khais #+# #+# */ +/* Updated: 2025/04/09 17:48:30 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CONNEC_CMD_DEBUG_H +# define CONNEC_CMD_DEBUG_H + +# include "../../minishell.h" + +void connec_cmd_debug(t_connec_cmd *cmd, t_buffer *leader, bool is_last); + +#endif // CONNEC_CMD_DEBUG_H diff --git a/src/parser/group_cmd/group_cmd_debug.c b/src/parser/group_cmd/group_cmd_debug.c new file mode 100644 index 0000000..c9ecf08 --- /dev/null +++ b/src/parser/group_cmd/group_cmd_debug.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* group_cmd_debug.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/09 17:43:56 by khais #+# #+# */ +/* Updated: 2025/04/09 17:46:11 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "group_cmd_debug.h" +#include "../../treedrawing.h" +#include "libft.h" +#include "../cmd/cmd_debug.h" +#include "../redirect/redirect_debug.h" + +void group_cmd_debug(t_group_cmd *cmd, t_buffer *leader, bool is_last) +{ + indent(leader, is_last); + ft_printf("t_group_cmd\n"); + indent(leader, false); + ft_printf("cmd\n"); + cmd_debug(cmd->cmd, leader, false); + dedent(leader, false); + indent(leader, true); + ft_printf("redirect\n"); + redirect_debug(cmd->redirects, leader, true); + dedent(leader, true); + dedent(leader, is_last); +} diff --git a/src/parser/group_cmd/group_cmd_debug.h b/src/parser/group_cmd/group_cmd_debug.h new file mode 100644 index 0000000..a93f232 --- /dev/null +++ b/src/parser/group_cmd/group_cmd_debug.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* group_cmd_debug.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: khais +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/09 17:43:25 by khais #+# #+# */ +/* Updated: 2025/04/09 17:45:20 by khais ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef GROUP_CMD_DEBUG_H +# define GROUP_CMD_DEBUG_H + +# include "../../minishell.h" + +void group_cmd_debug(t_group_cmd *cmd, t_buffer *leader, bool is_last); + +#endif // GROUP_CMD_DEBUG_H diff --git a/src/parser/wordlist/wordlist_debug.c b/src/parser/wordlist/wordlist_debug.c index 53db15a..2b3da40 100644 --- a/src/parser/wordlist/wordlist_debug.c +++ b/src/parser/wordlist/wordlist_debug.c @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/24 18:20:00 by khais #+# #+# */ -/* Updated: 2025/04/09 15:30:06 by khais ### ########.fr */ +/* Updated: 2025/04/10 12:48:01 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,15 +21,15 @@ void wordlist_debug(t_wordlist *wordlist, t_buffer *leader, bool is_last) { indent(leader, is_last); if (wordlist == NULL) - { ft_printf("(empty wordlist)\n"); - return ; - } - ft_printf("t_wordlist\n"); - while (wordlist != NULL) + else { - worddesc_debug(wordlist->word, leader, wordlist->next == NULL); - wordlist = wordlist->next; + ft_printf("t_wordlist\n"); + while (wordlist != NULL) + { + worddesc_debug(wordlist->word, leader, wordlist->next == NULL); + wordlist = wordlist->next; + } } dedent(leader, is_last); }