From edd3712b5a6e0e1a82063c30789bc96c2901ed1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl?= <35407363+EniumRaphael@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:45:03 +0200 Subject: [PATCH] First Steps into exec part --- includes/minishell.h | 4 +- note_raph.txt | 1 - sources/main.c | 107 +++++++++++++++---------------------------- 3 files changed, 41 insertions(+), 71 deletions(-) delete mode 100644 note_raph.txt diff --git a/includes/minishell.h b/includes/minishell.h index 6ff1c10c..1fb652c8 100644 --- a/includes/minishell.h +++ b/includes/minishell.h @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/28 14:41:15 by rparodi #+# #+# */ -/* Updated: 2024/04/28 18:34:45 by maiboyer ### ########.fr */ +/* Updated: 2024/04/29 15:07:54 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,8 @@ # include # include +# define PATH_FILES "/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" + typedef struct s_utils { t_str name_shell; diff --git a/note_raph.txt b/note_raph.txt deleted file mode 100644 index e04cc25b..00000000 --- a/note_raph.txt +++ /dev/null @@ -1 +0,0 @@ -Alors pour le coup, il faut que j'arrive a separer les strings par commande puis a chaque sep regarder les autres cmd (bisous lpb si tu passe par la ;)) diff --git a/sources/main.c b/sources/main.c index 9ed61a75..66dd9e4b 100644 --- a/sources/main.c +++ b/sources/main.c @@ -6,43 +6,16 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/28 14:40:38 by rparodi #+# #+# */ -/* Updated: 2024/04/29 13:29:01 by maiboyer ### ########.fr */ +/* Updated: 2024/04/29 16:06:33 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../includes/minishell.h" -t_i32 ft_check_type_operators(t_str operators) { - if (operators == NULL) - printf("End of input"); - else if (ft_strcmp(operators, ">") == 0) - printf("Have to redirect in the file\n"); - else if (ft_strcmp(operators, ">>") == 0) - printf("Have to redirect at the end of the file after\n"); - else if (ft_strcmp(operators, ">&") == 0) - printf("Have to redirect the stdout in the file\n"); - else if (ft_strcmp(operators, "<") == 0) - printf("Have to redirect at the end of the file before\n"); - else if (ft_strcmp(operators, "<<") == 0) - printf("Have to redirect at the end of the file after\n"); - else if (ft_strcmp(operators, "<&") == 0) - printf("Have to redirect the stdout in the file\n"); - else if (ft_strcmp(operators, ";") == 0) - printf("Have to execute one more command\n"); - else if (ft_strcmp(operators, ";") == 0) - printf("Have to execute one more command\n"); - else if (ft_strcmp(operators, "|") == 0) - printf("I have to pipe a operators !\n"); - else if (ft_strcmp(operators, "||") == 0) - printf("Or something\n"); - else if (ft_strcmp(operators, "&&") == 0) - printf("Only if the first has exit status 0\n"); - else if (ft_strcmp(operators, "&") == 0) - printf("Parreil mais chelou\n"); - else - return (0); - return (1); -} +#include "app/node.h" +#include "me/string/str_len.h" +#include "parser/api.h" +#include "parser/parser.h" +#include "../includes/minishell.h" void ft_check(t_utils *shcat, char **input) { t_usize i; @@ -51,14 +24,10 @@ void ft_check(t_utils *shcat, char **input) { i = 0; prev_i = 0; while (input[i] != NULL) { - while (ft_check_type_operators(input[i]) == 1) - i++; if (ft_strcmp(input[i], "exit") == 0) ft_exit(shcat, 0); else if (ft_strcmp(input[i], "pwd") == 0) ft_pwd(); - else if (ft_strcmp(input[i], "echo") == 0) - ft_echo("ECHO MAIS PAS ARG BORDEL !\n", "flag"); else ft_other_cmd(shcat, i, prev_i); prev_i = i; @@ -66,7 +35,8 @@ void ft_check(t_utils *shcat, char **input) { } } -void ft_take_args(t_utils *shcat) { +void ft_take_args(t_utils *shcat) +{ t_i32 i; i = 0; @@ -85,33 +55,25 @@ void ft_take_args(t_utils *shcat) { } } -void ft_init_arge(t_str arge[], t_utils *utils) { - size_t i; - char *temp; +void ft_find_path(t_str arge[], t_utils *utils) +{ + t_i32 i; + t_u8 check; - i = 0; - temp = NULL; - while (arge[i] != NULL) { - if (arge[i][0] == 'P' && arge[i][1] == 'A' && arge[i][2] == 'T' && - arge[i][3] == 'H' && arge[i][4] == '=') { - temp = ft_strdup(arge[i] + 5); - if (!temp) - ft_exit(utils, 1); - else - utils->path = ft_split(temp, ':'); - break; - } - i++; - } - if (temp != NULL) - free(temp); + i = 0; + check = 0; + while (arge[i] != NULL) + { + if (arge[i][0] == 'P' && arge[i][1] == 'A' && arge[i][2] == 'T' && arge[i][3] == 'H' && arge[i][4] == '=') + { + utils->path = ft_split(arge[i] + 5, ':'); + return ; + } + i++; + } + utils->path = ft_split(PATH_FILES, ':'); } -#include "app/node.h" -#include "me/string/str_len.h" -#include "parser/api.h" -#include "parser/parser.h" - TSLanguage *tree_sitter_bash(void); t_node parse_to_nodes(TSParser *parser, t_const_str input) { @@ -158,12 +120,19 @@ t_node parse_string(t_myparser *parser, t_const_str input) { return (parse_to_nodes(parser->parser, input)); } -t_i32 main() { - t_myparser parser; - t_node node; +t_i32 main(t_i32 argc, t_str argv[], t_str arge[]) +{ + // t_myparser parser; + // t_node node; + t_utils utils; - parser = create_myparser(); - node = parse_string(&parser, "banane \"$VAR\"'truc'"); - print_node_data(&node, 0); - free_node(node); + (void)argc; + (void)argv; + ft_find_path(arge, &utils); + utils.name_shell = "42sh > "; + ft_take_args(&utils); + // parser = create_myparser(); + // node = parse_string(&parser, "banane \"$VAR\"'truc'"); + // print_node_data(&node, 0); + // free_node(node); }