From cfdf913c4b8caa8e795e78f8b0503e12323af2e7 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Tue, 13 Jan 2026 08:17:50 +0100 Subject: [PATCH] refactoring functions parsing main flags --- checker/verif_is_digit.c | 9 ++++---- checker/verif_overflow.c | 2 +- flags/flag.c | 44 +++++----------------------------------- main.c | 6 ------ parsing/parsing.c | 35 ++------------------------------ 5 files changed, 12 insertions(+), 84 deletions(-) diff --git a/checker/verif_is_digit.c b/checker/verif_is_digit.c index 6d6f6d7..d9eacca 100644 --- a/checker/verif_is_digit.c +++ b/checker/verif_is_digit.c @@ -19,11 +19,10 @@ int scan_str_is_digit(char *tab) i = 0; while (tab[i]) { - if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1]))) - return (0); - else if (tab[i] == '+' && !ft_isdigit(tab[i + 1])) - return (0); - else if (!ft_isdigit(tab[i])) + if ((tab[i] == '+' || tab[i] == '-') && ft_isdigit(tab[i + 1]) + && tab[i + 1]) + i++; + if (!ft_isdigit(tab[i])) return (0); i++; } diff --git a/checker/verif_overflow.c b/checker/verif_overflow.c index c9518c7..173680d 100644 --- a/checker/verif_overflow.c +++ b/checker/verif_overflow.c @@ -28,7 +28,7 @@ static int verif_atoi(const char *nptr) i = 0; tmp = 0; before = 0; - if (ft_strncmp("-2147483648", nptr, 12)) + if (ft_strncmp("-2147483648", nptr, 15)) return (1); while ((nptr[i] >= 9 && nptr[i] <= 13) || nptr[i] == ' ') i++; diff --git a/flags/flag.c b/flags/flag.c index e531221..8157369 100644 --- a/flags/flag.c +++ b/flags/flag.c @@ -14,48 +14,14 @@ #include "parsing.h" #include "flags.h" -static int verif_arg(char *argv) -{ - int len; - int verif; - char **split; - - split = ft_split(argv, ' '); - if (!split) - return (-1); - len = len_split(split); - if (len > 1) - verif = 1; - else - verif = 0; - free_tab(split); - return (verif); -} - -int calcul_mod(int argc, char **argv) +int calcul_mod(int argc, char **argv) { int mod; - if (verif_arg(argv[argc -1]) == 0) - { - if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2)) - mod = 2; - else if (ft_strncmp("--", argv[1], 2) && !ft_strncmp("--", argv[2], 2)) - mod = 1; - else - mod = 0; - } - else if (verif_arg(argv[argc -1]) == 1) - { - if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2)) - mod = 5; - else if (ft_strncmp("--", argv[1], 2) && !ft_strncmp("--", argv[2], 2)) - mod = 4; - else - mod = 3; - } - else - mod = -1; + mod = 0; + while (argv[mod] && !ft_isdigit(argv[mod][0]) && mod < argc) + mod++; + mod--; return (mod); } diff --git a/main.c b/main.c index 4233fc8..fbbec01 100644 --- a/main.c +++ b/main.c @@ -28,12 +28,6 @@ int main(int argc, char **argv) if (!tab) return (0); len = len_split(tab); - if (!scan_str_is_digit(tab[len - 1])) - { - free_tab(tab); - write(2, "Error\n", 7); - return (0); - } mod = calcul_mod(len, tab); if (check_error(tab, mod)) test1(tab, len, mod); diff --git a/parsing/parsing.c b/parsing/parsing.c index 3a80a9c..232863f 100644 --- a/parsing/parsing.c +++ b/parsing/parsing.c @@ -16,13 +16,7 @@ int wich_mod(int mod) { - if (mod == 0) - return (1); - else if (mod == 1) - return (2); - else if (mod == 2) - return (3); - return (0); + return (mod % 3 + 1); } static t_stack *parsing(int argc, char **argv, int mod) @@ -51,28 +45,6 @@ static t_stack *parsing(int argc, char **argv, int mod) return (first); } -static t_stack *special_parsing(char **argv, int mod) -{ - t_stack *a; - char **split_tab; - int len; - int i; - - i = mod % 3 + 1; - split_tab = ft_split(argv[i], ' '); - if (!split_tab) - return (NULL); - len = len_split(split_tab); - a = parsing(len, split_tab, mod); - if (!a) - { - free_tab(split_tab); - return (NULL); - } - free_tab(split_tab); - return (a); -} - static void set_t_stacks(t_stacks *stacks) { stacks->a = NULL; @@ -102,10 +74,7 @@ t_stacks *init_stacks(int argc, char **argv, int mod) if (!stacks) return (NULL); set_t_stacks(stacks); - if (mod == 0 || mod == 1 || mod == 2) - a = parsing(argc, argv, mod); - else - a = special_parsing(argv, mod); + a = parsing(argc, argv, mod); if (!a) { free(stacks);