mirror of
https://github.com/DavidGailleton/42-Push_Swap.git
synced 2026-01-27 00:41:57 +00:00
refactoring functions parsing main flags
This commit is contained in:
@@ -19,11 +19,10 @@ int scan_str_is_digit(char *tab)
|
|||||||
i = 0;
|
i = 0;
|
||||||
while (tab[i])
|
while (tab[i])
|
||||||
{
|
{
|
||||||
if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1])))
|
if ((tab[i] == '+' || tab[i] == '-') && ft_isdigit(tab[i + 1])
|
||||||
return (0);
|
&& tab[i + 1])
|
||||||
else if (tab[i] == '+' && !ft_isdigit(tab[i + 1]))
|
i++;
|
||||||
return (0);
|
if (!ft_isdigit(tab[i]))
|
||||||
else if (!ft_isdigit(tab[i]))
|
|
||||||
return (0);
|
return (0);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ static int verif_atoi(const char *nptr)
|
|||||||
i = 0;
|
i = 0;
|
||||||
tmp = 0;
|
tmp = 0;
|
||||||
before = 0;
|
before = 0;
|
||||||
if (ft_strncmp("-2147483648", nptr, 12))
|
if (ft_strncmp("-2147483648", nptr, 15))
|
||||||
return (1);
|
return (1);
|
||||||
while ((nptr[i] >= 9 && nptr[i] <= 13) || nptr[i] == ' ')
|
while ((nptr[i] >= 9 && nptr[i] <= 13) || nptr[i] == ' ')
|
||||||
i++;
|
i++;
|
||||||
|
|||||||
44
flags/flag.c
44
flags/flag.c
@@ -14,48 +14,14 @@
|
|||||||
#include "parsing.h"
|
#include "parsing.h"
|
||||||
#include "flags.h"
|
#include "flags.h"
|
||||||
|
|
||||||
static int verif_arg(char *argv)
|
int calcul_mod(int argc, 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 mod;
|
int mod;
|
||||||
|
|
||||||
if (verif_arg(argv[argc -1]) == 0)
|
mod = 0;
|
||||||
{
|
while (argv[mod] && !ft_isdigit(argv[mod][0]) && mod < argc)
|
||||||
if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2))
|
mod++;
|
||||||
mod = 2;
|
mod--;
|
||||||
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;
|
|
||||||
return (mod);
|
return (mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
main.c
6
main.c
@@ -28,12 +28,6 @@ int main(int argc, char **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);
|
||||||
|
|||||||
@@ -16,13 +16,7 @@
|
|||||||
|
|
||||||
int wich_mod(int mod)
|
int wich_mod(int mod)
|
||||||
{
|
{
|
||||||
if (mod == 0)
|
return (mod % 3 + 1);
|
||||||
return (1);
|
|
||||||
else if (mod == 1)
|
|
||||||
return (2);
|
|
||||||
else if (mod == 2)
|
|
||||||
return (3);
|
|
||||||
return (0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static t_stack *parsing(int argc, char **argv, int mod)
|
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);
|
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)
|
static void set_t_stacks(t_stacks *stacks)
|
||||||
{
|
{
|
||||||
stacks->a = NULL;
|
stacks->a = NULL;
|
||||||
@@ -102,10 +74,7 @@ t_stacks *init_stacks(int argc, char **argv, int mod)
|
|||||||
if (!stacks)
|
if (!stacks)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
set_t_stacks(stacks);
|
set_t_stacks(stacks);
|
||||||
if (mod == 0 || mod == 1 || mod == 2)
|
a = parsing(argc, argv, mod);
|
||||||
a = parsing(argc, argv, mod);
|
|
||||||
else
|
|
||||||
a = special_parsing(argv, mod);
|
|
||||||
if (!a)
|
if (!a)
|
||||||
{
|
{
|
||||||
free(stacks);
|
free(stacks);
|
||||||
|
|||||||
Reference in New Issue
Block a user