diff --git a/lib/libft/libft.a b/lib/libft/libft.a deleted file mode 100644 index 65e06c6..0000000 Binary files a/lib/libft/libft.a and /dev/null differ diff --git a/lib/libft/obj/src/ft_atoi.o b/lib/libft/obj/src/ft_atoi.o deleted file mode 100644 index 98d7c94..0000000 Binary files a/lib/libft/obj/src/ft_atoi.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_bzero.o b/lib/libft/obj/src/ft_bzero.o deleted file mode 100644 index 283753d..0000000 Binary files a/lib/libft/obj/src/ft_bzero.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_calloc.o b/lib/libft/obj/src/ft_calloc.o deleted file mode 100644 index 878bef1..0000000 Binary files a/lib/libft/obj/src/ft_calloc.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_isalnum.o b/lib/libft/obj/src/ft_isalnum.o deleted file mode 100644 index f1ba7cb..0000000 Binary files a/lib/libft/obj/src/ft_isalnum.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_isalpha.o b/lib/libft/obj/src/ft_isalpha.o deleted file mode 100644 index 1993e07..0000000 Binary files a/lib/libft/obj/src/ft_isalpha.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_isascii.o b/lib/libft/obj/src/ft_isascii.o deleted file mode 100644 index b4d302e..0000000 Binary files a/lib/libft/obj/src/ft_isascii.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_isdigit.o b/lib/libft/obj/src/ft_isdigit.o deleted file mode 100644 index 9bba9c5..0000000 Binary files a/lib/libft/obj/src/ft_isdigit.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_isprint.o b/lib/libft/obj/src/ft_isprint.o deleted file mode 100644 index 89a9507..0000000 Binary files a/lib/libft/obj/src/ft_isprint.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_itoa.o b/lib/libft/obj/src/ft_itoa.o deleted file mode 100644 index c9c6314..0000000 Binary files a/lib/libft/obj/src/ft_itoa.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_lstadd_back.o b/lib/libft/obj/src/ft_lstadd_back.o deleted file mode 100644 index 8db002d..0000000 Binary files a/lib/libft/obj/src/ft_lstadd_back.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_lstadd_front.o b/lib/libft/obj/src/ft_lstadd_front.o deleted file mode 100644 index 0328a83..0000000 Binary files a/lib/libft/obj/src/ft_lstadd_front.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_lstclear.o b/lib/libft/obj/src/ft_lstclear.o deleted file mode 100644 index 1b56410..0000000 Binary files a/lib/libft/obj/src/ft_lstclear.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_lstdelone.o b/lib/libft/obj/src/ft_lstdelone.o deleted file mode 100644 index 5d37b30..0000000 Binary files a/lib/libft/obj/src/ft_lstdelone.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_lstiter.o b/lib/libft/obj/src/ft_lstiter.o deleted file mode 100644 index 702600d..0000000 Binary files a/lib/libft/obj/src/ft_lstiter.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_lstlast.o b/lib/libft/obj/src/ft_lstlast.o deleted file mode 100644 index 06fe1f4..0000000 Binary files a/lib/libft/obj/src/ft_lstlast.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_lstmap.o b/lib/libft/obj/src/ft_lstmap.o deleted file mode 100644 index 0419616..0000000 Binary files a/lib/libft/obj/src/ft_lstmap.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_lstnew.o b/lib/libft/obj/src/ft_lstnew.o deleted file mode 100644 index cde8371..0000000 Binary files a/lib/libft/obj/src/ft_lstnew.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_lstsize.o b/lib/libft/obj/src/ft_lstsize.o deleted file mode 100644 index adec3cf..0000000 Binary files a/lib/libft/obj/src/ft_lstsize.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_memchr.o b/lib/libft/obj/src/ft_memchr.o deleted file mode 100644 index 5dc0d62..0000000 Binary files a/lib/libft/obj/src/ft_memchr.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_memcmp.o b/lib/libft/obj/src/ft_memcmp.o deleted file mode 100644 index 96bff8b..0000000 Binary files a/lib/libft/obj/src/ft_memcmp.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_memcpy.o b/lib/libft/obj/src/ft_memcpy.o deleted file mode 100644 index f6ed351..0000000 Binary files a/lib/libft/obj/src/ft_memcpy.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_memmove.o b/lib/libft/obj/src/ft_memmove.o deleted file mode 100644 index 1cbf4f6..0000000 Binary files a/lib/libft/obj/src/ft_memmove.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_memset.o b/lib/libft/obj/src/ft_memset.o deleted file mode 100644 index 3fb4234..0000000 Binary files a/lib/libft/obj/src/ft_memset.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_putchar_fd.o b/lib/libft/obj/src/ft_putchar_fd.o deleted file mode 100644 index 1a610d1..0000000 Binary files a/lib/libft/obj/src/ft_putchar_fd.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_putendl_fd.o b/lib/libft/obj/src/ft_putendl_fd.o deleted file mode 100644 index 40b4dc7..0000000 Binary files a/lib/libft/obj/src/ft_putendl_fd.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_putnbr_fd.o b/lib/libft/obj/src/ft_putnbr_fd.o deleted file mode 100644 index 1219552..0000000 Binary files a/lib/libft/obj/src/ft_putnbr_fd.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_putstr_fd.o b/lib/libft/obj/src/ft_putstr_fd.o deleted file mode 100644 index 49ddd4d..0000000 Binary files a/lib/libft/obj/src/ft_putstr_fd.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_realloc.o b/lib/libft/obj/src/ft_realloc.o deleted file mode 100644 index 1684deb..0000000 Binary files a/lib/libft/obj/src/ft_realloc.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_split.o b/lib/libft/obj/src/ft_split.o deleted file mode 100644 index 1517ce7..0000000 Binary files a/lib/libft/obj/src/ft_split.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strchr.o b/lib/libft/obj/src/ft_strchr.o deleted file mode 100644 index 66c044a..0000000 Binary files a/lib/libft/obj/src/ft_strchr.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strdup.o b/lib/libft/obj/src/ft_strdup.o deleted file mode 100644 index 7dc9a65..0000000 Binary files a/lib/libft/obj/src/ft_strdup.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_striteri.o b/lib/libft/obj/src/ft_striteri.o deleted file mode 100644 index 9417c3f..0000000 Binary files a/lib/libft/obj/src/ft_striteri.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strjoin.o b/lib/libft/obj/src/ft_strjoin.o deleted file mode 100644 index c01592a..0000000 Binary files a/lib/libft/obj/src/ft_strjoin.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strlcat.o b/lib/libft/obj/src/ft_strlcat.o deleted file mode 100644 index e4601c7..0000000 Binary files a/lib/libft/obj/src/ft_strlcat.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strlcpy.o b/lib/libft/obj/src/ft_strlcpy.o deleted file mode 100644 index a853155..0000000 Binary files a/lib/libft/obj/src/ft_strlcpy.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strlen.o b/lib/libft/obj/src/ft_strlen.o deleted file mode 100644 index 43cab14..0000000 Binary files a/lib/libft/obj/src/ft_strlen.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strmapi.o b/lib/libft/obj/src/ft_strmapi.o deleted file mode 100644 index 1dd6827..0000000 Binary files a/lib/libft/obj/src/ft_strmapi.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strncmp.o b/lib/libft/obj/src/ft_strncmp.o deleted file mode 100644 index 20155fc..0000000 Binary files a/lib/libft/obj/src/ft_strncmp.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strnstr.o b/lib/libft/obj/src/ft_strnstr.o deleted file mode 100644 index 083a591..0000000 Binary files a/lib/libft/obj/src/ft_strnstr.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strrchr.o b/lib/libft/obj/src/ft_strrchr.o deleted file mode 100644 index 1c70aff..0000000 Binary files a/lib/libft/obj/src/ft_strrchr.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_strtrim.o b/lib/libft/obj/src/ft_strtrim.o deleted file mode 100644 index 6d3d8df..0000000 Binary files a/lib/libft/obj/src/ft_strtrim.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_substr.o b/lib/libft/obj/src/ft_substr.o deleted file mode 100644 index 1b7af4e..0000000 Binary files a/lib/libft/obj/src/ft_substr.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_tolower.o b/lib/libft/obj/src/ft_tolower.o deleted file mode 100644 index 73d1c97..0000000 Binary files a/lib/libft/obj/src/ft_tolower.o and /dev/null differ diff --git a/lib/libft/obj/src/ft_toupper.o b/lib/libft/obj/src/ft_toupper.o deleted file mode 100644 index 5577081..0000000 Binary files a/lib/libft/obj/src/ft_toupper.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_1st_char_in_set_i.o b/lib/libft/obj/src_extra/ft_1st_char_in_set_i.o deleted file mode 100644 index b70cc56..0000000 Binary files a/lib/libft/obj/src_extra/ft_1st_char_in_set_i.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_2d_array_len.o b/lib/libft/obj/src_extra/ft_2d_array_len.o deleted file mode 100644 index e6661d0..0000000 Binary files a/lib/libft/obj/src_extra/ft_2d_array_len.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_add_row_2d_array.o b/lib/libft/obj/src_extra/ft_add_row_2d_array.o deleted file mode 100644 index fbde592..0000000 Binary files a/lib/libft/obj/src_extra/ft_add_row_2d_array.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_add_row_2d_array_i.o b/lib/libft/obj/src_extra/ft_add_row_2d_array_i.o deleted file mode 100644 index 3c2a7b1..0000000 Binary files a/lib/libft/obj/src_extra/ft_add_row_2d_array_i.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_count_char.o b/lib/libft/obj/src_extra/ft_count_char.o deleted file mode 100644 index fc38e07..0000000 Binary files a/lib/libft/obj/src_extra/ft_count_char.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_duplicate_2d_array.o b/lib/libft/obj/src_extra/ft_duplicate_2d_array.o deleted file mode 100644 index dd0f23b..0000000 Binary files a/lib/libft/obj/src_extra/ft_duplicate_2d_array.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_free_2d_array.o b/lib/libft/obj/src_extra/ft_free_2d_array.o deleted file mode 100644 index 46ecf28..0000000 Binary files a/lib/libft/obj/src_extra/ft_free_2d_array.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_is_only_special.o b/lib/libft/obj/src_extra/ft_is_only_special.o deleted file mode 100644 index ec89d44..0000000 Binary files a/lib/libft/obj/src_extra/ft_is_only_special.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_is_space.o b/lib/libft/obj/src_extra/ft_is_space.o deleted file mode 100644 index 05a1a58..0000000 Binary files a/lib/libft/obj/src_extra/ft_is_space.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_is_special_symbol.o b/lib/libft/obj/src_extra/ft_is_special_symbol.o deleted file mode 100644 index 5182d8a..0000000 Binary files a/lib/libft/obj/src_extra/ft_is_special_symbol.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_print_2d_array_fd.o b/lib/libft/obj/src_extra/ft_print_2d_array_fd.o deleted file mode 100644 index 96f5125..0000000 Binary files a/lib/libft/obj/src_extra/ft_print_2d_array_fd.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_realloc_2d_array.o b/lib/libft/obj/src_extra/ft_realloc_2d_array.o deleted file mode 100644 index d9cf69c..0000000 Binary files a/lib/libft/obj/src_extra/ft_realloc_2d_array.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_splice_2d_array.o b/lib/libft/obj/src_extra/ft_splice_2d_array.o deleted file mode 100644 index 0e42901..0000000 Binary files a/lib/libft/obj/src_extra/ft_splice_2d_array.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_strchr_i.o b/lib/libft/obj/src_extra/ft_strchr_i.o deleted file mode 100644 index 08ddf91..0000000 Binary files a/lib/libft/obj/src_extra/ft_strchr_i.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_strcmp.o b/lib/libft/obj/src_extra/ft_strcmp.o deleted file mode 100644 index 27d80a9..0000000 Binary files a/lib/libft/obj/src_extra/ft_strcmp.o and /dev/null differ diff --git a/lib/libft/obj/src_extra/ft_strjoin_free.o b/lib/libft/obj/src_extra/ft_strjoin_free.o deleted file mode 100644 index bf22d0d..0000000 Binary files a/lib/libft/obj/src_extra/ft_strjoin_free.o and /dev/null differ diff --git a/minishell b/minishell deleted file mode 100755 index 11e8a5c..0000000 Binary files a/minishell and /dev/null differ diff --git a/src/exec/execution.c b/src/exec/execution.c index 862cdfd..6ea175b 100644 --- a/src/exec/execution.c +++ b/src/exec/execution.c @@ -6,7 +6,7 @@ /* By: Jskehan +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/16 10:52:13 by Jskehan #+# #+# */ -/* Updated: 2024/08/02 12:46:45 by Jskehan ### ########.fr */ +/* Updated: 2024/08/02 14:44:29 by Jskehan ### ########.fr */ /* */ /* ************************************************************************** */ @@ -83,12 +83,14 @@ static void close_pipes_in_parent(int num_cmds, int pipes[][2]) } } -static void close_pipes_in_child(int num_cmds, int pipes[][2]) +static void close_pipes_in_child(int num_cmds, int pipes[][2], int i) { - for (int i = 0; i < num_cmds - 1; i++) + for (int j = 0; j < num_cmds - 1; j++) { - close(pipes[i][0]); - close(pipes[i][1]); + if (j != i - 1) + close(pipes[j][0]); + if (j != i) + close(pipes[j][1]); } } @@ -134,44 +136,35 @@ void exec_pipes(t_mini *mini, t_list *commands) { int num_cmds; int pipes[128][2]; // Define a maximum number of pipes - t_list *cmd_node; pid_t pid; - int i; + int i; t_cmd *cmd; num_cmds = ft_lstsize(commands); - cmd_node = commands; i = 0; create_pipes(num_cmds, pipes); - while (cmd_node) + while (i < num_cmds) { - cmd = (t_cmd *)cmd_node->content; - printf("Executing command: %s\n", cmd->full_command[0]); // Debug print + cmd = (t_cmd *)commands->content; if ((pid = fork()) == 0) { setup_pipe_redirection(i, num_cmds, pipes); - close_pipes_in_child(num_cmds, pipes); + close_pipes_in_child(num_cmds, pipes, i); child_process(mini, cmd); - exit(0); // Ensure child process exits after executing the command } else if (pid < 0) { perror("fork"); exit(EXIT_FAILURE); } - // Close the write end of the previous pipe in the parent - if (i > 0) - { - close(pipes[i - 1][0]); - close(pipes[i - 1][1]); - } - cmd_node = cmd_node->next; + commands = commands->next; i++; } close_pipes_in_parent(num_cmds, pipes); wait_for_children(num_cmds, mini); } + void *check_to_fork(t_mini *mini, t_list *commands) { t_cmd *cmd; diff --git a/src/parser/prompt.c b/src/parser/prompt.c deleted file mode 100644 index 34e3065..0000000 --- a/src/parser/prompt.c +++ /dev/null @@ -1,121 +0,0 @@ - /* ************************************************************************** */ - /* */ - /* ::: :::::::: */ - /* prompt.c :+: :+: :+: */ - /* +:+ +:+ +:+ */ - /* By: iverniho +#+ +:+ +#+ */ - /* +#+#+#+#+#+ +#+ */ - /* Created: 2024/05/15 21:09:11 by Jskehan #+# #+# */ - /* Updated: 2024/07/28 12:11:29 by iverniho ### ########.fr */ - /* */ - /* ************************************************************************** */ - -#include "minishell.h" - -void handle_command_node(char **input, t_list **commands, - t_list **cur_command, int *i, t_mini *mini) -{ - *cur_command = ft_lstlast(*commands); - if (*i == 0 || (input[*i][0] == '|' && input[*i + 1] && input[*i + 1][0])) - { - ft_lstadd_back(commands, ft_lstnew(init_cmd(mini))); - *cur_command = ft_lstlast(*commands); - } - (*cur_command)->content = set_redir((*cur_command)->content, input[*i], - input, i); -} - -t_list *create_nodes(char **input, t_mini *mini) -{ - t_list *commands; - t_list *cur_command; - int i; - - - commands = NULL; - cur_command = NULL; - i = -1; - while (input && input[++i]) - { - handle_command_node(input, &commands, &cur_command, &i, mini); - if (i == -2) - { - ft_lstclear(&commands, free); - ft_free_2d_array(&input); - return (NULL); - } - } - print_nodes(commands); - return (commands); -} - -int check_tokenized_input(char **tokenized_input) -{ - int i; - int j; - - i = -1; - j = 0; - while (tokenized_input && tokenized_input[++i]) - { - if (j == 1 && ft_is_special_in_str(tokenized_input[i]) == 1) - return (ft_error(6, tokenized_input[i]), 0); - j = ft_is_special_in_str(tokenized_input[i]); - } - return (1); -} - -void handle_input(char *input, t_mini *mini) -{ - char **tokenized_input; - t_list *current; - - tokenized_input = ft_remove_quotes(tokenize_input(input, &mini)); - if (!tokenized_input || !tokenized_input[0] || !check_tokenized_input(tokenized_input)) - { - free(input); - if(tokenized_input) - ft_free_2d_array(&tokenized_input); - return ; - } - mini->node = create_nodes(tokenized_input, mini); - current = mini->node; - while (current) - { - check_to_fork(mini, current); - current = current->next; - } - ft_free_2d_array(&tokenized_input); - free(input); -} - -void prompt_loop(t_mini *mini) -{ - char *input; - - setup_signal_handlers(); - while (1) - { - if (g_sigint_received) - { - g_sigint_received = 0; - continue ; // Ensure readline gets called again - } - input = readline(PROMPT); - if (input == NULL) - { - printf("\n"); - break ; - } - if (input[0] != '\0') - add_history(input); - else - { - free(input); - continue ; - } - g_is_executing_command = 1; - handle_input(input, mini); - g_is_executing_command = 0; - } -} diff --git a/src/utils/prompt.c b/src/utils/prompt.c index 5faf199..1672266 100644 --- a/src/utils/prompt.c +++ b/src/utils/prompt.c @@ -1,120 +1,117 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* prompt.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: Jskehan +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/05/15 21:09:11 by Jskehan #+# #+# */ -/* Updated: 2024/08/02 12:36:56 by Jskehan ### ########.fr */ -/* */ -/* ************************************************************************** */ + /* ************************************************************************** */ + /* */ + /* ::: :::::::: */ + /* prompt.c :+: :+: :+: */ + /* +:+ +:+ +:+ */ + /* By: Jskehan +#+ +:+ +#+ */ + /* +#+#+#+#+#+ +#+ */ + /* Created: 2024/05/15 21:09:11 by Jskehan #+# #+# */ + /* Updated: 2024/08/02 14:20:23 by Jskehan ### ########.fr */ + /* */ + /* ************************************************************************** */ -#include "minishell.h" + #include "minishell.h" -void handle_command_node(char **input, t_list **commands, - t_list **cur_command, int *i, t_mini *mini) -{ - *cur_command = ft_lstlast(*commands); - if (*i == 0 || (input[*i][0] == '|' && input[*i + 1] && input[*i + 1][0])) + void handle_command_node(char **input, t_list **commands, + t_list **cur_command, int *i, t_mini *mini) { - ft_lstadd_back(commands, ft_lstnew(init_cmd(mini))); *cur_command = ft_lstlast(*commands); + if (*i == 0 || (input[*i][0] == '|' && input[*i + 1] && input[*i + 1][0])) + { + ft_lstadd_back(commands, ft_lstnew(init_cmd(mini))); + *cur_command = ft_lstlast(*commands); + } + (*cur_command)->content = set_redir((*cur_command)->content, input[*i], + input, i); } - (*cur_command)->content = set_redir((*cur_command)->content, input[*i], - input, i); -} - -t_list *create_nodes(char **input, t_mini *mini) -{ - t_list *commands; - t_list *cur_command; - int i; - commands = NULL; - cur_command = NULL; - i = -1; - (void)mini; - while (input && input[++i]) + t_list *create_nodes(char **input, t_mini *mini) { - handle_command_node(input, &commands, &cur_command, &i, mini); - if (i == -2) + t_list *commands; + t_list *cur_command; + int i; + + commands = NULL; + cur_command = NULL; + i = -1; + (void)mini; + while (input && input[++i]) { - ft_lstclear(&commands, free); - ft_free_2d_array(&input); - return (NULL); + handle_command_node(input, &commands, &cur_command, &i, mini); + if (i == -2) + { + ft_lstclear(&commands, free); + ft_free_2d_array(&input); + return (NULL); + } } + return (commands); } - return (commands); -} - -int check_tokenized_input(char **tokenized_input) -{ - int i; - int j; - i = -1; - j = 0; - while (tokenized_input && tokenized_input[++i]) + int check_tokenized_input(char **tokenized_input) { - if (j == 1 && ft_is_special_in_str(tokenized_input[i]) == 1) - return (ft_error(6, tokenized_input[i]), 0); - j = ft_is_special_in_str(tokenized_input[i]); + int i; + int j; + + i = -1; + j = 0; + while (tokenized_input && tokenized_input[++i]) + { + if (j == 1 && ft_is_special_in_str(tokenized_input[i]) == 1) + return (ft_error(6, tokenized_input[i]), 0); + j = ft_is_special_in_str(tokenized_input[i]); + } + return (1); } - return (1); -} void handle_input(char *input, t_mini *mini) { char **tokenized_input; - t_list *current; + t_list *commands; tokenized_input = ft_remove_quotes(tokenize_input(input, &mini)); if (!tokenized_input || !tokenized_input[0] || !check_tokenized_input(tokenized_input)) { free(input); - if(tokenized_input) + if (tokenized_input) ft_free_2d_array(&tokenized_input); return ; } - mini->node = create_nodes(tokenized_input, mini); - current = mini->node; - while (current) - { - check_to_fork(mini, current); - current = current->next; - } + commands = create_nodes(tokenized_input, mini); + if (commands) + check_to_fork(mini, commands); ft_free_2d_array(&tokenized_input); free(input); } -void prompt_loop(t_mini *mini) -{ - char *input; - setup_signal_handlers(); - while (1) + void prompt_loop(t_mini *mini) { - if (g_sigint_received) - { - g_sigint_received = 0; - continue ; // Ensure readline gets called again - } - input = readline(PROMPT); - if (input == NULL) - { - printf("\n"); - break ; - } - if (input[0] != '\0') - add_history(input); - else + char *input; + + setup_signal_handlers(); + while (1) { - free(input); - continue ; + if (g_sigint_received) + { + g_sigint_received = 0; + continue ; // Ensure readline gets called again + } + input = readline(PROMPT); + if (input == NULL) + { + printf("\n"); + break ; + } + if (input[0] != '\0') + add_history(input); + else + { + free(input); + continue ; + } + g_is_executing_command = 1; + handle_input(input, mini); + g_is_executing_command = 0; } - g_is_executing_command = 1; - handle_input(input, mini); - g_is_executing_command = 0; } -}