mirror of
https://codeberg.org/la-chouette/minishell.git
synced 2025-12-06 07:28:09 +01:00
Compare commits
3 commits
09ef35e7d7
...
1115238f6d
| Author | SHA1 | Date | |
|---|---|---|---|
| 1115238f6d | |||
| 7996ea1879 | |||
| cd0846f926 |
20 changed files with 408 additions and 30 deletions
5
Makefile
5
Makefile
|
|
@ -44,9 +44,12 @@ srcs = \
|
|||
src/executing/simple_cmd/builtins.c \
|
||||
src/executing/simple_cmd/builtin_unset.c \
|
||||
src/executing/simple_cmd/simple_cmd_execute.c \
|
||||
src/executing/simple_cmd/simple_cmd_execute_debug.c \
|
||||
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 +58,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 \
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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/10 15:27:08 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -37,15 +37,23 @@ static void connec_pipe_cmd_execute(t_connec_cmd *cmd, t_minishell *app)
|
|||
pid1 = fork();
|
||||
if (pid1 == 0)
|
||||
cmd_execute(cmd->first, app);
|
||||
pid2 = fork();
|
||||
if (pid2 == 0)
|
||||
cmd_execute(cmd->second, app);
|
||||
do_waitpid(app, pid1);
|
||||
do_waitpid(app, pid2);
|
||||
else
|
||||
{
|
||||
pid2 = fork();
|
||||
if (pid2 == 0)
|
||||
cmd_execute(cmd->second, app);
|
||||
else
|
||||
{
|
||||
do_waitpid(app, pid1);
|
||||
do_waitpid(app, pid2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/03/27 16:21:56 by khais #+# #+# */
|
||||
/* Updated: 2025/04/08 16:12:36 by khais ### ########.fr */
|
||||
/* Updated: 2025/04/10 15:37:47 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -25,6 +25,7 @@
|
|||
#include "../../postprocess/expansion/expand_vars.h"
|
||||
#include "../../postprocess/fieldsplit/fieldsplit.h"
|
||||
#include "../../postprocess/expansion/expand_wildcard.h"
|
||||
#include "simple_cmd_execute_debug.h"
|
||||
|
||||
static void command_not_found(t_simple_cmd *cmd)
|
||||
{
|
||||
|
|
@ -91,6 +92,7 @@ void simple_cmd_execute(t_simple_cmd *cmd, t_minishell *app)
|
|||
return ;
|
||||
if (post_process_command(cmd, app) == NULL)
|
||||
return ;
|
||||
simple_cmd_execute_debug(cmd, app);
|
||||
if (handle_redirections(cmd, app) == NULL)
|
||||
return ;
|
||||
if (execute_builtin(cmd, app) != BUILTIN_INVALID)
|
||||
|
|
|
|||
24
src/executing/simple_cmd/simple_cmd_execute_debug.c
Normal file
24
src/executing/simple_cmd/simple_cmd_execute_debug.c
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* simple_cmd_execute_debug.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/04/10 15:36:26 by khais #+# #+# */
|
||||
/* Updated: 2025/04/10 15:37:29 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "simple_cmd_execute_debug.h"
|
||||
#include "libft.h"
|
||||
#include "../../parser/simple_cmd/simple_cmd.h"
|
||||
|
||||
void simple_cmd_execute_debug(t_simple_cmd *cmd, t_minishell *app)
|
||||
{
|
||||
if (app->debug)
|
||||
{
|
||||
ft_printf("about to execute\n");
|
||||
simple_cmd_root_debug(cmd);
|
||||
}
|
||||
}
|
||||
20
src/executing/simple_cmd/simple_cmd_execute_debug.h
Normal file
20
src/executing/simple_cmd/simple_cmd_execute_debug.h
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* simple_cmd_execute_debug.h :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/04/10 15:36:08 by khais #+# #+# */
|
||||
/* Updated: 2025/04/10 15:36:44 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef SIMPLE_CMD_EXECUTE_DEBUG_H
|
||||
# define SIMPLE_CMD_EXECUTE_DEBUG_H
|
||||
|
||||
# include "../../minishell.h"
|
||||
|
||||
void simple_cmd_execute_debug(t_simple_cmd *cmd, t_minishell *app);
|
||||
|
||||
#endif // SIMPLE_CMD_EXECUTE_DEBUG_H
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: kcolin <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/06 13:44:06 by kcolin #+# #+# */
|
||||
/* Updated: 2025/04/09 14:03:09 by khais ### ########.fr */
|
||||
/* Updated: 2025/04/11 12:08:59 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -56,8 +56,9 @@ static void debug_command(t_simple_cmd *cmd, t_minishell *app)
|
|||
{
|
||||
t_buffer *indent;
|
||||
|
||||
if (app->debug == false)
|
||||
if (app->debug == false || cmd == NULL)
|
||||
return ;
|
||||
ft_printf("parsed command\n");
|
||||
indent = ft_buffer_new();
|
||||
simple_cmd_debug(cmd, indent, true);
|
||||
ft_buffer_free(indent);
|
||||
|
|
|
|||
66
src/parser/cmd/cmd_debug.c
Normal file
66
src/parser/cmd/cmd_debug.c
Normal 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);
|
||||
}
|
||||
20
src/parser/cmd/cmd_debug.h
Normal file
20
src/parser/cmd/cmd_debug.h
Normal 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
|
||||
62
src/parser/cmd/cmd_destroy.c
Normal file
62
src/parser/cmd/cmd_destroy.c
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* cmd_destroy.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/04/09 16:53:02 by khais #+# #+# */
|
||||
/* Updated: 2025/04/11 15:55:05 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "cmd_destroy.h"
|
||||
#include <stdlib.h>
|
||||
#include "../simple_cmd/simple_cmd.h"
|
||||
#include "libft.h"
|
||||
|
||||
void redirect_destroy(t_redirect *redirect)
|
||||
{
|
||||
t_redirect *next;
|
||||
|
||||
while (redirect != NULL)
|
||||
{
|
||||
next = redirect->next;
|
||||
free(redirect->here_doc_eof);
|
||||
worddesc_destroy(redirect->redirectee.filename);
|
||||
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);
|
||||
}
|
||||
21
src/parser/cmd/cmd_destroy.h
Normal file
21
src/parser/cmd/cmd_destroy.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* cmd_destroy.h :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/04/09 16:52:31 by khais #+# #+# */
|
||||
/* Updated: 2025/04/11 15:53:30 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef CMD_DESTROY_H
|
||||
# define CMD_DESTROY_H
|
||||
|
||||
# include "../../minishell.h"
|
||||
|
||||
void cmd_destroy(t_cmd *cmd);
|
||||
void redirect_destroy(t_redirect *redirect);
|
||||
|
||||
#endif // CMD_DESTROY_H
|
||||
51
src/parser/connec_cmd/connec_cmd_debug.c
Normal file
51
src/parser/connec_cmd/connec_cmd_debug.c
Normal 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);
|
||||
}
|
||||
20
src/parser/connec_cmd/connec_cmd_debug.h
Normal file
20
src/parser/connec_cmd/connec_cmd_debug.h
Normal 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
|
||||
32
src/parser/group_cmd/group_cmd_debug.c
Normal file
32
src/parser/group_cmd/group_cmd_debug.c
Normal 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);
|
||||
}
|
||||
20
src/parser/group_cmd/group_cmd_debug.h
Normal file
20
src/parser/group_cmd/group_cmd_debug.h
Normal 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
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/04/09 15:07:58 by khais #+# #+# */
|
||||
/* Updated: 2025/04/09 15:40:03 by khais ### ########.fr */
|
||||
/* Updated: 2025/04/11 16:22:07 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -48,6 +48,7 @@ static void single_redirect_debug(t_redirect *redirect, t_buffer *leader,
|
|||
if (redirect == NULL)
|
||||
return ;
|
||||
indent(leader, is_last);
|
||||
ft_printf("t_redirect\n");
|
||||
redir_type_debug(redirect->type, leader, false);
|
||||
indent(leader, false);
|
||||
ft_printf("source = %d\n", redirect->source);
|
||||
|
|
@ -60,24 +61,31 @@ static void single_redirect_debug(t_redirect *redirect, t_buffer *leader,
|
|||
dedent(leader, false);
|
||||
redirectee_debug(redirect->redirectee, leader, false);
|
||||
indent(leader, true);
|
||||
ft_printf("c_flags = [%s]\n", redirect->here_doc_eof);
|
||||
ft_printf("here_doc_eof = [%s]\n", redirect->here_doc_eof);
|
||||
dedent(leader, true);
|
||||
dedent(leader, is_last);
|
||||
}
|
||||
|
||||
void redirect_debug(t_redirect *redirect, t_buffer *leader, bool is_last)
|
||||
{
|
||||
int i;
|
||||
|
||||
indent(leader, is_last);
|
||||
if (redirect == NULL)
|
||||
{
|
||||
indent(leader, is_last);
|
||||
ft_printf("redirections = (empty redir list)\n");
|
||||
dedent(leader, is_last);
|
||||
return ;
|
||||
}
|
||||
while (redirect != NULL)
|
||||
else
|
||||
{
|
||||
single_redirect_debug(redirect, leader, redirect->next == NULL);
|
||||
redirect = redirect->next;
|
||||
ft_printf("redirections\n");
|
||||
i = 0;
|
||||
while (redirect != NULL)
|
||||
{
|
||||
indent(leader, redirect->next == NULL);
|
||||
ft_printf("redirections[%d]\n", i);
|
||||
single_redirect_debug(redirect, leader, true);
|
||||
dedent(leader, redirect->next == NULL);
|
||||
redirect = redirect->next;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
dedent(leader, is_last);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/21 12:30:07 by khais #+# #+# */
|
||||
/* Updated: 2025/04/09 15:28:18 by khais ### ########.fr */
|
||||
/* Updated: 2025/04/11 16:14:35 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -14,6 +14,7 @@
|
|||
#include "libft.h"
|
||||
#include "../../treedrawing.h"
|
||||
#include "../redirect/redirect_debug.h"
|
||||
#include "../cmd/cmd_destroy.h"
|
||||
|
||||
/*
|
||||
** parse a wordlist and yield a simple command.
|
||||
|
|
@ -36,6 +37,7 @@ void simple_cmd_destroy(t_simple_cmd *cmd)
|
|||
if (cmd == NULL)
|
||||
return ;
|
||||
wordlist_destroy(cmd->words);
|
||||
redirect_destroy(cmd->redirections);
|
||||
free(cmd);
|
||||
}
|
||||
|
||||
|
|
@ -52,3 +54,12 @@ void simple_cmd_debug(t_simple_cmd *cmd, t_buffer *leader, bool is_last)
|
|||
redirect_debug(cmd->redirections, leader, true);
|
||||
dedent(leader, is_last);
|
||||
}
|
||||
|
||||
void simple_cmd_root_debug(t_simple_cmd *cmd)
|
||||
{
|
||||
t_buffer *leader;
|
||||
|
||||
leader = ft_buffer_new();
|
||||
simple_cmd_debug(cmd, leader, true);
|
||||
ft_buffer_free(leader);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/21 12:24:57 by khais #+# #+# */
|
||||
/* Updated: 2025/03/28 14:52:45 by khais ### ########.fr */
|
||||
/* Updated: 2025/04/10 15:33:10 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -22,5 +22,6 @@ t_simple_cmd *simple_cmd_from_wordlist(t_wordlist *words);
|
|||
void simple_cmd_destroy(t_simple_cmd *cmd);
|
||||
void simple_cmd_debug(t_simple_cmd *cmd, t_buffer *leader,
|
||||
bool is_last);
|
||||
void simple_cmd_root_debug(t_simple_cmd *cmd);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
4
test.sh
4
test.sh
|
|
@ -586,6 +586,7 @@ EOF
|
|||
expecting <<EOF
|
||||
[dbg: 1]
|
||||
[exec: 0]
|
||||
parsed command
|
||||
╰─ t_simple_cmd
|
||||
├─ line = 0
|
||||
├─ t_wordlist
|
||||
|
|
@ -615,6 +616,7 @@ EOF
|
|||
expecting <<EOF
|
||||
[dbg: 1]
|
||||
[exec: 0]
|
||||
parsed command
|
||||
╰─ t_simple_cmd
|
||||
├─ line = 0
|
||||
├─ t_wordlist
|
||||
|
|
@ -674,6 +676,7 @@ EOF
|
|||
expecting <<EOF
|
||||
[dbg: 1]
|
||||
[exec: 0]
|
||||
parsed command
|
||||
╰─ t_simple_cmd
|
||||
├─ line = 0
|
||||
├─ t_wordlist
|
||||
|
|
@ -733,6 +736,7 @@ EOF
|
|||
expecting <<EOF
|
||||
[dbg: 1]
|
||||
[exec: 0]
|
||||
parsed command
|
||||
╰─ t_simple_cmd
|
||||
├─ line = 0
|
||||
├─ t_wordlist
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue