push_swap/parsing.c
Etienne Rey-bethbeder 5fe90a0875 Correction leak
2022-12-09 18:02:14 +01:00

70 lines
1.7 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* parsing.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/07 19:23:59 by erey-bet #+# #+# */
/* Updated: 2022/12/09 15:07:13 by erey-bet ### ########.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
void choice(long *tab, int y)
{
if (y == 4 || y > 5)
pre_push_swap(tab, y);
else if (y == 5)
push_swap_5(tab, y);
else if (y == 3)
push_swap_3(tab, y);
else if (y == 2)
if (tab[0] > tab[1])
write(1, "ra\n", 3);
}
int put_tab(char **tmp, long **tab, int *y)
{
int x;
x = 0;
while (tmp[x] != NULL)
{
if (ft_atoi_check(tmp[x]))
(*tab)[(*y)++] = ft_atoi(tmp[x]);
else
{
free_strstr(tmp);
return (put_error());
}
x++;
}
return (0);
}
int parsing(int argc, char *argv[], long *tab)
{
int i;
int y;
char **tmp;
i = 0;
y = 0;
while (++i < argc)
{
argv = set_only_space(argv, i);
tmp = ft_split(argv[i], ' ');
if (tmp == NULL)
return (1);
if (put_tab(tmp, &tab, &y))
return (1);
free_strstr(tmp);
}
if (if_there_is_double(tab, y) || (y < argc - 1))
return (put_error());
choice(tab, y);
return (0);
}