fixing the parsing

This commit is contained in:
Maoake Teriierooiterai
2026-01-12 14:00:08 +01:00
parent ccccc3b640
commit 97ce3bf40b
6 changed files with 34 additions and 7 deletions

View File

@@ -11,6 +11,17 @@
/* ************************************************************************** */ /* ************************************************************************** */
#include "check_error.h" #include "check_error.h"
#include "parsing.h"
int verif_is_number(char **tab)
{
int len;
len = len_split(tab);
if (tab[len - 1][0] == '-')
return (0);
return (1);
}
int check_error(char **tab, int mod) int check_error(char **tab, int mod)
{ {
@@ -22,5 +33,7 @@ int check_error(char **tab, int mod)
return (0); return (0);
if (!verif_double(tab, mod)) if (!verif_double(tab, mod))
return (0); return (0);
if (!verif_is_number(tab))
return (0);
return (1); return (1);
} }

View File

@@ -17,11 +17,11 @@ static int is_exist_flag(char **tab, int pos)
int verif; int verif;
verif = 0; verif = 0;
if (ft_strncmp(tab[pos], "--bench", 7) if (ft_strncmp(tab[pos], "--bench", 30)
|| ft_strncmp(tab[pos], "--simple", 8) || ft_strncmp(tab[pos], "--simple", 30)
|| ft_strncmp(tab[pos], "--medium", 8) || ft_strncmp(tab[pos], "--medium", 30)
|| ft_strncmp(tab[pos], "--adaptive", 10) || ft_strncmp(tab[pos], "--adaptive", 30)
|| ft_strncmp(tab[pos], "--complex", 9)) || ft_strncmp(tab[pos], "--complex", 30))
verif = 1; verif = 1;
return (verif); return (verif);
} }

View File

@@ -12,7 +12,7 @@
#include "parsing.h" #include "parsing.h"
static int scan_str_is_digit(char *tab) int scan_str_is_digit(char *tab)
{ {
int i; int i;
@@ -21,7 +21,9 @@ static int scan_str_is_digit(char *tab)
{ {
if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1]))) if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1])))
return (0); return (0);
if (tab[i] == '+' && !ft_isdigit(tab[i + 1])) else if (tab[i] == '+' && !ft_isdigit(tab[i + 1]))
return (0);
else if (!ft_isdigit(tab[i]))
return (0); return (0);
i++; i++;
} }

View File

@@ -18,5 +18,6 @@ int check_error(char **tab, int mod);
int verif_is_digit(char **tab, int mod); int verif_is_digit(char **tab, int mod);
int verif_overflow(char **tab, int mod); int verif_overflow(char **tab, int mod);
int verif_double(char **tab, int mod); int verif_double(char **tab, int mod);
int scan_str_is_digit(char *tab);
#endif #endif

8
main.c
View File

@@ -22,10 +22,18 @@ int main(int argc, char **argv)
int mod; int mod;
int len; int len;
if (argc < 2)
return (0);
tab = split_all(join_all(argc, argv)); tab = split_all(join_all(argc, argv));
if (!tab) if (!tab)
return (0); return (0);
len = len_split(tab); 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); mod = calcul_mod(len, tab);
if (check_error(tab, mod)) if (check_error(tab, mod))
test1(tab, len, mod); test1(tab, len, mod);

View File

@@ -27,7 +27,10 @@ int test1(char **tab, int len, int mod)
if (!stacks) if (!stacks)
return (0); return (0);
if (check_order(stacks->a)) if (check_order(stacks->a))
{
free_all(stacks);
return (0); return (0);
}
flags(pos_flag(tab, mod), pos_bench(tab, mod), tab, stacks); flags(pos_flag(tab, mod), pos_bench(tab, mod), tab, stacks);
if (stacks->bench == 1) if (stacks->bench == 1)
print_bench(stacks); print_bench(stacks);