diff --git a/src/env/env_cmd.c b/src/env/env_cmd.c index 9d25b6d..59e68d5 100644 --- a/src/env/env_cmd.c +++ b/src/env/env_cmd.c @@ -6,7 +6,7 @@ /* By: mmoussou name, name)) - env = env->next; - if (!env) + tmp_env = env; + while (tmp_env && ft_strcmp(tmp_env->name, name)) + tmp_env = tmp_env->next; + if (!tmp_env) + { + ft_envadd_back(&env, ft_envnew(name, content)); return (-1); - new_content = ft_calloc(1, ft_strlen(env->content) + ft_strlen(content)); + } + new_content = ft_calloc(1, ft_strlen(tmp_env->content) + + ft_strlen(content)); if (!new_content) return (-1); - ft_strlcpy(new_content, env->content, ft_strlen(env->content) + 1); - ft_strlcpy(new_content + ft_strlen(env->content), + ft_strlcpy(new_content, tmp_env->content, ft_strlen(tmp_env->content) + 1); + ft_strlcpy(new_content + ft_strlen(tmp_env->content), content, ft_strlen(content) + 1); - free(env->content); - env->content = new_content; + free(tmp_env->content); + tmp_env->content = new_content; return (0); } int env_edit(char *name, char *content, t_env *env) { - while (env && ft_strcmp(env->name, name)) - env = env->next; - if (!env) + t_env *tmp_env; + + tmp_env = env; + while (tmp_env && ft_strcmp(tmp_env->name, name)) + tmp_env = tmp_env->next; + if (!tmp_env) + { + ft_envadd_back(&env, ft_envnew(name, content)); return (-1); - free(env->content); - env->content = content; + } + free(tmp_env->content); + tmp_env->content = content; return (0); }