/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* parse.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/19 09:03:28 by cacharle #+# #+# */ /* Updated: 2021/09/09 10:02:15 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "common.h" static t_status has_dup(int *xs, size_t size) { int *tmp; t_bool is_set; tmp = (int *)malloc(size * sizeof(int)); if (tmp == NULL) return (STATUS_ERROR); ft_memcpy(tmp, xs, size * sizeof(int)); is_set = ft_is_set(tmp, size, sizeof(int), &ft_compar_int); free(tmp); if (is_set) return (STATUS_SUCCESS); else return (STATUS_FAILURE); } t_status parse(int argc, char **argv, t_stack *a) { while (--argc >= 1) { errno = 0; stack_push(a, ft_strict_atoi(argv[argc])); if (errno != 0) { ft_putendl_fd("Error", STDERR_FILENO); stack_destroy(a); return (STATUS_FAILURE); } } if (has_dup(a->elements, stack_length(a)) != STATUS_SUCCESS) { ft_putendl_fd("Error", STDERR_FILENO); stack_destroy(a); return (STATUS_FAILURE); } return (STATUS_SUCCESS); }