/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* env_cmd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: mmoussou 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(tmp_env->content) + ft_strlen(content)); if (!new_content) return (-1); 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(tmp_env->content); tmp_env->content = new_content; return (0); } int env_edit(char *name, char *content, t_env *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(tmp_env->content); tmp_env->content = content; return (0); } int env_delete(char *name, t_env *env) { t_env *tmp; if (!ft_strcmp(env->name, name)) { ft_free("cc", &env->name, &env->content); env->name = env->next->name; env->content = env->next->content; env->next = env->next->next; return (0); } while (env && env->next && ft_strcmp(env->next->name, name)) env = env->next; if (!env || !env->next) return (-1); ft_free("cc", &env->next->name, &env->next->content); tmp = env->next; env->next = env->next->next; free(tmp); return (0); } char *env_get_value(char *name, t_env *env) { char *value; while (env && ft_strcmp(env->name, name)) env = env->next; if (env) { value = ft_strdup(env->content); return (value); } return (NULL); } char *env_getn_value(char *name, t_env *env, int n) { char *value; while (env && ft_strncmp(env->name, name, n)) env = env->next; if (env) { value = ft_strdup(env->content); return (value); } return (NULL); }