/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* cmd_env.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2018/12/14 15:54:45 by tmaze #+# #+# */ /* Updated: 2019/01/31 17:57:27 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" void put_env(t_list *env) { t_list *tmp; tmp = env; while (tmp) { ft_putstr(((t_envelem*)(tmp->content))->key); ft_putchar('='); ft_putendl(((t_envelem*)(tmp->content))->val); tmp = tmp->next; } } t_envelem *envelemdup(t_envelem *elem) { t_envelem *ret; if ((ret = (t_envelem*)ft_memalloc(sizeof(t_envelem))) == NULL) return (NULL); if ((ret->key = ft_strdup(elem->key)) == NULL) ft_memdel(&ret); if (ret == NULL) return (0); if ((ret->val = ft_strdup(elem->val)) == NULL) { ft_strdel(&(ret->key)); ft_memdel(&ret); return (NULL); } return (ret); } t_list *env_cpy(t_list *env) { t_list *ret; t_list *ind; t_list *tmp; t_envelem elem; ret = NULL; ind = env; while (ind) { if ((envelem = envelemdup((t_envelem*)ind->val)) == NULL) ft_lstdel(&ret, &lstdelenvelem); if (envelem = NULL) break ; if ((tmp = ft_lstnew((void*)envelem, sizeof(t_envelem))) == NULL || ft_lstaddend(&ret, tmp) == NULL) { ft_memdel(&envelem); ft_lstdel(&ret, &lstdelenvelem); break ; } ft_memdel(&envelem); ind = ind->next; } return (ret); } int cmd_env(char **argv, t_list **env) { t_list *env_cp; t_list *new; t_envelem *envelem; char tmp; size_t i; if (argv[1] == NULL) put_env(*env); i = 0; if ((env_cp = env_cpy(*env)) == NULL) return (2); while (argv[++i] && (tmp = ft_strchr(argv[i], '='))) { // add each env arg to a char ** and pass it ti ft_envtolst } return (0); }