/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* main.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lfirmin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/12 19:13:52 by lfirmin #+# #+# */ /* Updated: 2024/11/03 19:40:43 by lfirmin ### ########.fr */ /* */ /* ************************************************************************** */ #include "../include/pushswap.h" int fill_stack(t_stack *stack_a, char **av) { int i; int num; i = 0; while (av[i]) { if (ft_atoll(av[i]) > 2147483647) return (ft_printf_fd(2, "Error\n"), 0); num = ft_atoll(av[i]); if (valid_input(av[i]) == 0 && num <= INT_MAX && num >= INT_MIN \ && in_stack(stack_a, (int)num) == 0) { add_stack(stack_a, (int)num); i++; } else return (0); } return (1); } int main(int ac, char **av) { t_stack *stack_a; t_stack *stack_b; char **av_pars; if (ac < 2) return (0); stack_a = init_stack(); stack_b = init_stack(); if (!stack_a || !stack_b) return (1); av_pars = pars(av); if (!av_pars) return (ft_printf_fd(1, "error\n"), 1); if (!fill_stack(stack_a, av_pars)) return (free_stack(stack_a), free_stack(stack_b), \ free_array(av_pars), 1); if (is_sorted(stack_a) == 1) return (free_stack(stack_a), free_stack(stack_b), \ free_array(av_pars), 1); sort(stack_a, stack_b); return (free_stack(stack_a), free_stack(stack_b), free_array(av_pars), 0); }