From 4af87fa98a2d54f7500a1f64ca663c80b4dd7eef Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Thu, 8 Jan 2026 15:04:02 +0100 Subject: [PATCH] finnish the parsing --- headers/parsing.h | 1 + parsing/ft_split.c | 2 +- parsing/parsing.c | 39 +++++++++++++++++++++++++++++---------- test_one.c | 2 +- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/headers/parsing.h b/headers/parsing.h index ad07753..fb9ee29 100644 --- a/headers/parsing.h +++ b/headers/parsing.h @@ -22,5 +22,6 @@ int ft_strncmp(const char *s1, const char *s2, int n); size_t ft_strlen(const char *s); char *ft_substr(char const *s, unsigned int start, size_t len); char **ft_split(char const *s, char c); +void free_tab(char **tab); #endif diff --git a/parsing/ft_split.c b/parsing/ft_split.c index c205ad1..db67aca 100644 --- a/parsing/ft_split.c +++ b/parsing/ft_split.c @@ -54,7 +54,7 @@ static size_t len_word(size_t i, char const *s, char c) return (len); } -static void free_tab(char **tab) +void free_tab(char **tab) { int i; diff --git a/parsing/parsing.c b/parsing/parsing.c index 90ffe1b..54a533d 100644 --- a/parsing/parsing.c +++ b/parsing/parsing.c @@ -16,9 +16,23 @@ static int wich_mod(int mod) { - if (mod == 0 || mod == 3) + if (mod == 0) return (1); - return (2); + else if (mod == 1) + return (2); + else if (mod == 2) + return (3); + return (0); +} + +static int len_split(char **tab) +{ + int i; + + i = 0; + while (tab[i]) + i++; + return (i); } static t_stack *parsing(int argc, char **argv, int mod) @@ -47,19 +61,21 @@ static t_stack *parsing(int argc, char **argv, int mod) return (first); } -static t_stack *special_parsing(int argc, char **argv, int mod) +static t_stack *special_parsing(char **argv, int mod) { - t_stacks *piles; - t_stack *first; - t_stack *new; + t_stack *a; char **split_tab; + int len; int i; - i = 0; - split_tab = ft_split(arv[wich_mod(mod)]); + i = mod % 3 + 1; + split_tab = ft_split(argv[i], ' '); if (!split_tab) return (NULL); - while () + len = len_split(split_tab); + a = parsing(len, split_tab, mod); + free_tab(split_tab); + return (a); } t_stacks *init_piles(int argc, char **argv, int mod) @@ -72,7 +88,10 @@ t_stacks *init_piles(int argc, char **argv, int mod) stacks->b = NULL; if (!stacks) return (NULL); - a = parsing(argc, argv, mod); + if (mod == 0 || mod == 1 || mod == 2) + a = parsing(argc, argv, mod); + else + a = special_parsing(argv, mod); stacks->a = a; return (stacks); } diff --git a/test_one.c b/test_one.c index 1a0ee0c..5fbd4d4 100644 --- a/test_one.c +++ b/test_one.c @@ -19,7 +19,7 @@ int test1(int argc, char **argv) { t_stacks *piles; - //t_tab *preset; + t_tab *preset; piles = NULL; if (argc > 1)