debug, destroy all new types (also some code for testing it)

This commit is contained in:
Khaïs COLIN 2025-04-08 16:18:57 +02:00
parent a8a0273e03
commit d122a00567
Signed by: logistic-bot
SSH key fingerprint: SHA256:RlpiqKeXpcPFZZ4y9Ou4xi2M8OhRJovIwDlbCaMsuAo
12 changed files with 307 additions and 10 deletions

View file

@ -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 \

View file

@ -6,7 +6,7 @@
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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)

View file

@ -6,7 +6,7 @@
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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)

View file

@ -0,0 +1,66 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* cmd_debug.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}

View file

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* cmd_debug.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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

View file

@ -0,0 +1,60 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* cmd_destroy.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/09 16:53:02 by khais #+# #+# */
/* Updated: 2025/04/09 17:42:05 by khais ### ########.fr */
/* */
/* ************************************************************************** */
#include "cmd_destroy.h"
#include <stdlib.h>
#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);
}

View file

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* cmd_destroy.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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

View file

@ -0,0 +1,51 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* connec_cmd_debug.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}

View file

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* connec_cmd_debug.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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

View file

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* group_cmd_debug.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}

View file

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* group_cmd_debug.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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

View file

@ -6,7 +6,7 @@
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}