/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* generic.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/10/08 09:25:35 by lperrey #+# #+# */ /* Updated: 2021/10/30 12:30:10 by lperrey ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" char *ft_strjoinfree(char *s1, char *s2) { char *str; str = ft_strjoin(s1, s2); free(s1); free(s2); return (str); } char *ft_strjoinfree_s1(char *s1, const char *s2) { char *str; str = ft_strjoin(s1, s2); free(s1); return (str); } char *ft_strjoinfree_s2(const char *s1, char *s2) { char *str; str = ft_strjoin(s1, s2); free(s2); return (str); } void ft_lstprint(t_list *lst, int fd) { while (lst) { ft_putendl_fd(lst->content, fd); lst = lst->next; } } int ft_isinset_str(char *str, char *set) { size_t i; size_t i_set; int valid; i = 0; while (str[i]) { valid = 0; i_set = 0; while (set[i_set] && !valid) { if (str[i] == set[i_set]) valid = 1; i_set++; } if (!valid) return (0); i++; } return (i); } size_t ft_2d_arrlen(void *ptr) // Replace ft_arrlen() { size_t len; char **arr; arr = (char **)ptr; len = 0; while (arr[len] != NULL) len++; return (len); } char **ft_dup_2d_char_arr(char **ptr) { unsigned int i; char **arr; char **new_arr; new_arr = malloc((ft_2d_arrlen(ptr) + 1) * sizeof (void *)); if (!new_arr) return (NULL); arr = (char **)ptr; i = 0; while (arr[i]) { new_arr[i] = ft_strdup(arr[i]); if (!new_arr[i]) return (ft_retp_free(NULL, new_arr, ft_free_2d_arr)); i++; } new_arr[i] = NULL; return (new_arr); } void *ft_resize_2d_arr(void *ptr, size_t add_nbr) { unsigned int i; char **arr; char **new_arr; new_arr = ft_calloc(ft_2d_arrlen(ptr) + add_nbr + 1, sizeof (void *)); arr = (char **)ptr; i = 0; while (arr[i]) { new_arr[i] = arr[i]; i++; } free(arr); return (new_arr); } t_list *ft_lstbeforelast(t_list *lst) { if (!lst || !lst->next) return (NULL); while (lst->next->next) lst = lst->next; return (lst); }