/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* cmd_env.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/09/20 14:33:48 by tmaze #+# #+# */ /* Updated: 2019/10/10 13:49:33 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" static void put_env(t_env *env) { t_env *it; it = env; while (it) { ft_printf("%s=", it->key); if (it->val) ft_printf("%s", it->val); ft_putchar('\n'); it = it->next; } } t_env *envcpy(t_env *env) { t_env *cpy; cpy = NULL; if (env != NULL && (cpy = (t_env*)ft_memalloc(sizeof(t_env))) != NULL) if ((cpy->key = ft_strdup(env->key)) == NULL || (cpy->val = ft_strdup(env->val)) == NULL) lstdelelem(&cpy); return (cpy); } int cmd_env(char** argv, t_env** env) { int i; t_env *it; t_env *new; t_env *env_cp; i = 1; env_cp = NULL; if (!ft_strequ(argv[i] , "-i") && (env != NULL)) { it = *env; while (it) { if ((new = envcpy(it)) == NULL) { lstdel(&env_cp); ft_putstr_fd("minishell: env: Env copy error\n", 2); return (2); } lstaddend(&env_cp, new); it = it->next; } } if (ft_strequ(argv[i] , "-i")) i++; if (argv[i]) exec_cmd(argv + i, &env_cp); else put_env(env_cp); lstdel(&env_cp); return (0); }