diff --git a/inc/redirect.h b/inc/redirect.h index 3c4c63f..2da3c94 100644 --- a/inc/redirect.h +++ b/inc/redirect.h @@ -15,6 +15,7 @@ # include "minishell.h" t_redirect *redirect_new(t_minishell *msh, t_token_type type, char *value); +void redirect_new_error(t_minishell *msh, t_list **redirects); void redirect_create(t_minishell *msh, t_list **tokens, t_list **redirects, t_token_type type); t_list *redirect_get_inputs(t_minishell *msh, t_list *list); t_list *redirect_get_outputs(t_minishell *msh, t_list *list); diff --git a/sources.mk b/sources.mk deleted file mode 100644 index b632b98..0000000 --- a/sources.mk +++ /dev/null @@ -1,24 +0,0 @@ -VPATH = src:src/prompt:src/utils:src/lexer:src/token:src/environment:src/executor:src/parser:src/debug:src/expander:src/builtin:src/signal:src/redirect: -SOURCES = history_load.c history_write.c prompt.c print_banner.c \ -init_minishell.c ft_substr_safe.c check_malloc.c error_msg.c \ -free_command_list.c free_freelist.c free_lexer.c free_minishell.c \ -free_minishell_line.c free_safe.c free_token.c free_token_list.c \ -ft_lstclear_safe.c ft_lstnew_safe.c ft_strdup_safe.c \ -ft_strjoin_safe.c malloc_safe.c lexer_read_char.c lexer_new.c \ -lexer_parse_input.c lexer_read_word.c lexer_token_next.c token_new.c \ -token_parse.c environment_add.c environment_del.c environment_free.c \ -environment_free_list.c environment_get.c environment_get_arr.c \ -environment_parse.c environment_print.c executor_close_fds.c \ -executor_absolute_path.c executor_child.c executor_count_fds.c \ -executor_create_pipes.c executor_create_redirects.c \ -executor_execute_pipeline.c executor_fork.c executor_open_fds.c \ -parser_get_arguments.c parser_new_command.c parser_get_commands.c \ -print_commands.c print_freelist.c expander_is_character.c \ -expander_expand_dollar.c expander_allocate_memory.c \ -expander_parse_string.c expander_parse_variables.c \ -expander_get_variable.c builtin_cd.c builtin_echo.c builtin_env.c \ -builtin_exit.c builtin_export.c builtin_pwd.c builtin_router.c \ -builtin_unset.c is_builtin.c simple_builtins.c signal.c \ -signal_init.c.c redirect_get_outputs.c redirect_new.c \ -redirect_get_inputs.c redirect_valid_type.c \ -redirect_process_heredoc.c main.c \ diff --git a/src/redirect/redirect_get_inputs.c b/src/redirect/redirect_get_inputs.c index 8b4b383..2eaabd3 100644 --- a/src/redirect/redirect_get_inputs.c +++ b/src/redirect/redirect_get_inputs.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/23 12:29:05 by Quinten #+# #+# */ -/* Updated: 2025/02/26 17:24:53 by qmennen ### ########.fr */ +/* Updated: 2025/02/26 17:38:59 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -43,6 +43,6 @@ t_list *redirect_get_inputs(t_minishell *msh, t_list *list) current = current->next; } if (flag <= 0) - ft_lstadd_front(&redirects, ft_lstnew_safe(msh, redirect_new(msh, T_ERROR, NULL))); + redirect_new_error(msh, &redirects); return (redirects); } diff --git a/src/redirect/redirect_get_outputs.c b/src/redirect/redirect_get_outputs.c index 7183617..19a4a4e 100644 --- a/src/redirect/redirect_get_outputs.c +++ b/src/redirect/redirect_get_outputs.c @@ -31,11 +31,11 @@ t_list *redirect_get_outputs(t_minishell *msh, t_list *list) current = current->next; continue ; } - flag = redirect_is_valid(current, token, -1); + flag = redirect_is_valid(current, token, -1); redirect_create(msh, ¤t, &redirects, token->type); current = current->next; } if (flag <= 0) - ft_lstadd_front(&redirects, ft_lstnew_safe(msh, redirect_new(msh, T_ERROR, NULL))); + redirect_new_error(msh, &redirects); return (redirects); } diff --git a/src/redirect/redirect_new.c b/src/redirect/redirect_new.c index 98bd6a4..ee11cf9 100644 --- a/src/redirect/redirect_new.c +++ b/src/redirect/redirect_new.c @@ -23,7 +23,9 @@ t_redirect *redirect_new(t_minishell *msh, t_token_type type, char *value) result->value = value; return (result); } -void redirect_create(t_minishell *msh, t_list **tokens, t_list **redirects, t_token_type type) + +void redirect_create(t_minishell *msh, t_list **tokens, t_list **redirects, +t_token_type type) { t_list *new; t_redirect *redir; @@ -31,9 +33,12 @@ void redirect_create(t_minishell *msh, t_list **tokens, t_list **redirects, t_to char *file_name; file_token = (t_token *)((*tokens)->next->content); - file_name = ft_strdup_safe(msh, file_token->value); + file_name = NULL; + if (file_token) + file_name = ft_strdup_safe(msh, file_token->value); redir = redirect_new(msh, type, file_name); new = ft_lstnew_safe(msh, redir); ft_lstadd_back(redirects, new); - *tokens = (*tokens)->next; -} \ No newline at end of file + if (tokens) + *tokens = (*tokens)->next; +} diff --git a/src/redirect/redirect_new_error.c b/src/redirect/redirect_new_error.c new file mode 100644 index 0000000..076e062 --- /dev/null +++ b/src/redirect/redirect_new_error.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* redirect_new_error.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/26 17:37:12 by qmennen #+# #+# */ +/* Updated: 2025/02/26 17:44:49 by qmennen ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +void redirect_new_error(t_minishell *msh, t_list **redirects) +{ + t_list *new; + t_redirect *redir; + + redir = redirect_new(msh, T_ERROR, NULL); + new = ft_lstnew_safe(msh, redir); + ft_lstadd_back(redirects, new); +} diff --git a/src/redirect/redirect_valid_type.c b/src/redirect/redirect_valid_type.c index b95746d..8d232d0 100644 --- a/src/redirect/redirect_valid_type.c +++ b/src/redirect/redirect_valid_type.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/23 12:30:18 by Quinten #+# #+# */ -/* Updated: 2025/02/26 17:12:40 by qmennen ### ########.fr */ +/* Updated: 2025/02/26 17:40:44 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,9 +20,9 @@ int redirect_token_type(t_token *token) || token->type == T_APPEND_OUT); } -int redirect_is_valid(t_list *lst, t_token *token, int mode) +int redirect_is_valid(t_list *lst, t_token *token, int mode) { - t_token *next; + t_token *next; if (!lst->next) return (0); @@ -39,7 +39,7 @@ int redirect_is_valid(t_list *lst, t_token *token, int mode) return (redirect_token_type(token) && next->type < 3); } -int redirect_is_delimiter(t_token *token) +int redirect_is_delimiter(t_token *token) { return (token->type == T_PIPE || token->type == T_AND