/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_take_opts.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: bchanot +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2018/01/04 20:23:10 by bchanot #+# #+# */ /* Updated: 2018/10/14 03:22:26 by bchanot ### ########.fr */ /* */ /* ************************************************************************** */ #include "libft.h" t_bool ft_check_opts(char **tab, const char *opt) { size_t i; if (!tab) return (false); i = 0; while (tab[i]) { if (ft_strlen(opt) > 1) { if (!ft_strncmp(tab[i], "--", 2) && !ft_strcmp(tab[i] + 2, opt)) return (true); } else { if (ft_strncmp(tab[i], "--", 2)) { if (ft_cptchar(tab[i], *opt) > 0) return (true); } } i++; } return (false); } static char **ft_get_opts_begin(int ac, char **av, char **tab) { size_t index; int i; i = 0; index = 0; while (i < ac) { if (av[i][0] == '-') { if (av[i][1] && av[i][1] == '-' && av[i][2] == 0) break ; else if (av[i][1]) { tab[index] = ft_strdup(av[i]); index++; } } else break ; i++; } tab[index] = 0; return (tab); } char **ft_take_opts_begin(int ac, char **av) { size_t index; char **tab; int i; i = 0; index = 0; if (ac < 1) return (NULL); while (i < ac) { if (av[i][0] == '-') { if (av[i][1] && av[i][1] == '-' && av[i][2] == 0) break ; index++; } else break ; i++; } if (!(tab = (char **)ft_memalloc(sizeof(char *) * (index + 1)))) return (NULL); return (ft_get_opts_begin(ac, av, tab)); }