/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ms_env.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/09/20 11:43:53 by tmaze #+# #+# */ /* Updated: 2019/09/26 16:48:37 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" void lstdelelem(t_env **elem) { if (elem) { ft_strdel(&((*elem)->key)); ft_strdel(&((*elem)->val)); ft_memdel((void**)elem); } } void lstdel(t_env **env) { t_env *tmp; while (*env) { tmp = *env; *env = (*env)->next; lstdelelem(&tmp); } } t_env *lstnew(char *env) { t_env *ret; int i; i = 0; ret = NULL; while (env[i] && env[i] != '=') i++; if (env[i] == '=' && (ret = (t_env*)ft_memalloc(sizeof(t_env))) != NULL) if ((ret->val = ft_strsub(env, i + 1, ft_strlen(env) - i - 1)) == NULL || (ret->key = ft_strsub(env, 0, i)) == NULL) lstdelelem(&ret); return (ret); } t_env *lstaddend(t_env **alst, t_env *new) { t_env *tmp; if (new == NULL) return (NULL); if (*alst == NULL) *alst = new; else { tmp = *alst; while (tmp->next) tmp = tmp->next; tmp->next = new; } return (*alst); }