/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* input_check.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/31 21:05:07 by fgras-ca #+# #+# */ /* Updated: 2023/07/31 22:01:50 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ #include "push_swap.h" static int arg_is_number(char *argv) { int i; i = 0; if (is_sign(argv[i]) && argv[i + 1] != '\0') i++; while (argv[i] && is_digit(argv[i])) i++; if (argv[i] != '\0' && !is_digit(argv[i])) return (0); return (1); } static int have_duplicates(char **argv) { int i; int j; i = 1; while (argv[i]) { j = 1; while (argv[j]) { if (j != i && nbstr_cmp(argv[i], argv[j]) == 0) return (1); j++; } i++; } return (0); } static int arg_is_zero(char *argv) { int i; i = 0; if (is_sign(argv[i])) i++; while (argv[i] && argv[i] == '0') i++; if (argv[i] != '\0') return (0); return (1); } int is_correct_input(char **argv, int start_idx) { int i; int nb_zeros; nb_zeros = 0; i = start_idx; while (argv[i]) { if (!arg_is_number(argv[i])) return (0); nb_zeros += arg_is_zero(argv[i]); i++; } if (nb_zeros > 1) return (0); if (have_duplicates(argv)) return (0); return (1); }