mirror of
https://github.com/DavidGailleton/42-Push_Swap.git
synced 2026-01-27 08:41:58 +00:00
final finish on the parsing protecting the malloc
This commit is contained in:
28
flags/flag.c
28
flags/flag.c
@@ -16,23 +16,27 @@
|
|||||||
|
|
||||||
static int verif_arg(char *argv)
|
static int verif_arg(char *argv)
|
||||||
{
|
{
|
||||||
int i;
|
int len;
|
||||||
|
int verif;
|
||||||
|
char **split;
|
||||||
|
|
||||||
i = 0;
|
split = ft_split(argv, ' ');
|
||||||
while (argv[i])
|
if (!split)
|
||||||
{
|
return (-1);
|
||||||
if (argv[i] == ' ')
|
len = len_split(split);
|
||||||
return (1);
|
if (len > 1)
|
||||||
i++;
|
verif = 1;
|
||||||
}
|
else
|
||||||
return (0);
|
verif = 0;
|
||||||
|
free_tab(split);
|
||||||
|
return (verif);
|
||||||
}
|
}
|
||||||
|
|
||||||
int calcul_mod(int argc, char **argv)
|
int calcul_mod(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int mod;
|
int mod;
|
||||||
|
|
||||||
if (!verif_arg(argv[argc -1]))
|
if (verif_arg(argv[argc -1]) == 0)
|
||||||
{
|
{
|
||||||
if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2))
|
if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2))
|
||||||
mod = 2;
|
mod = 2;
|
||||||
@@ -41,7 +45,7 @@ int calcul_mod(int argc, char **argv)
|
|||||||
else
|
else
|
||||||
mod = 0;
|
mod = 0;
|
||||||
}
|
}
|
||||||
else
|
else if (verif_arg(argv[argc -1]) == 1)
|
||||||
{
|
{
|
||||||
if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2))
|
if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2))
|
||||||
mod = 5;
|
mod = 5;
|
||||||
@@ -50,6 +54,8 @@ int calcul_mod(int argc, char **argv)
|
|||||||
else
|
else
|
||||||
mod = 3;
|
mod = 3;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
mod = -1;
|
||||||
return (mod);
|
return (mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,11 @@ static t_stack *special_parsing(char **argv, int mod)
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
len = len_split(split_tab);
|
len = len_split(split_tab);
|
||||||
a = parsing(len, split_tab, mod);
|
a = parsing(len, split_tab, mod);
|
||||||
|
if (!a)
|
||||||
|
{
|
||||||
|
free_tab(split_tab);
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
free_tab(split_tab);
|
free_tab(split_tab);
|
||||||
return (a);
|
return (a);
|
||||||
}
|
}
|
||||||
@@ -101,6 +106,11 @@ t_stacks *init_piles(int argc, char **argv, int mod)
|
|||||||
a = parsing(argc, argv, mod);
|
a = parsing(argc, argv, mod);
|
||||||
else
|
else
|
||||||
a = special_parsing(argv, mod);
|
a = special_parsing(argv, mod);
|
||||||
|
if (!a)
|
||||||
|
{
|
||||||
|
free(stacks);
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
stacks->a = a;
|
stacks->a = a;
|
||||||
return (stacks);
|
return (stacks);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,11 @@ int test1(int argc, char **argv)
|
|||||||
|
|
||||||
piles = NULL;
|
piles = NULL;
|
||||||
mod = calcul_mod(argc, argv);
|
mod = calcul_mod(argc, argv);
|
||||||
|
if (mod == -1)
|
||||||
|
return (0);
|
||||||
piles = init_piles(argc, argv, mod);
|
piles = init_piles(argc, argv, mod);
|
||||||
|
if (!piles)
|
||||||
|
return (0);
|
||||||
if (check_order(piles->a))
|
if (check_order(piles->a))
|
||||||
return (0);
|
return (0);
|
||||||
flags(pos_flag(argv, mod), pos_bench(argv, mod), argv, piles);
|
flags(pos_flag(argv, mod), pos_bench(argv, mod), argv, piles);
|
||||||
|
|||||||
Reference in New Issue
Block a user