diff --git a/src/env/env_cmd.c b/src/env/env_cmd.c index 6d2d220..569b5c0 100644 --- a/src/env/env_cmd.c +++ b/src/env/env_cmd.c @@ -5,109 +5,13 @@ /* +:+ +:+ +:+ */ /* By: mmoussou name) - + ft_strlen(env->content) + 2); - if (!exec_env[i]) - { - ft_free("a", exec_env); - return (NULL); - } - ft_strlcpy(exec_env[i], env->name, ft_strlen(env->name) + 1); - exec_env[i][ft_strlen(env->name)] = '='; - ft_strlcpy(exec_env[i] + ft_strlen(env->name) + 1, - env->content, ft_strlen(env->content) + 1); - env = env->next; - i++; - } - return (exec_env); -} - -int env_create_first_el(char *env_line, t_env *env) -{ - char *name; - char *content; - - content = ft_strdup(ft_strchr(env_line, '=') + 1); - if (!content) - return (-1); - ft_strchr(env_line, '=')[0] = 0; - name = ft_strdup(env_line); - if (!name) - return (-1); - env->name = name; - env->content = content; - env->next = NULL; - return (0); -} - -t_env *env_create_el(char *env_line) -{ - t_env *new; - char *name; - char *content; - - content = ft_strdup(ft_strchr(env_line, '=') + 1); - if (!content) - return (NULL); - ft_strchr(env_line, '=')[0] = 0; - name = ft_strdup(env_line); - if (!name) - return (NULL); - new = ft_envnew(name, content); - return (new); -} - -int env_init(char **env_d, t_env *env) -{ - t_env *new; - int i; - char bool_first_el; - - i = 0; - bool_first_el = true; - while (env_d[i]) - { - if (bool_first_el) - i = env_create_first_el(env_d[i], env); - if (bool_first_el && i < 0) - return (1); - if (bool_first_el) - bool_first_el = false; - else - { - new = env_create_el(env_d[i]); - if (!new) - { - ft_envclear(&env, free); - return (1); - } - ft_envadd_back(&env, new); - } - i++; - } - return (0); -} - int env_append(char *name, char *content, t_env *env) { char *new_content; @@ -117,6 +21,8 @@ int env_append(char *name, char *content, t_env *env) if (!env) return (-1); new_content = ft_calloc(1, ft_strlen(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), content, ft_strlen(content) + 1); diff --git a/src/env/env_setters.c b/src/env/env_setters.c new file mode 100644 index 0000000..05c1c18 --- /dev/null +++ b/src/env/env_setters.c @@ -0,0 +1,112 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* env_setters.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mmoussou name = name; + env->content = content; + env->next = NULL; + return (0); +} + +t_env *env_create_el(char *env_line) +{ + t_env *new; + char *name; + char *content; + + content = ft_strdup(ft_strchr(env_line, '=') + 1); + if (!content) + return (NULL); + ft_strchr(env_line, '=')[0] = 0; + name = ft_strdup(env_line); + if (!name) + { + free(content); + return (NULL); + } + new = ft_envnew(name, content); + return (new); +} + +int env_init(char **env_d, t_env *env) +{ + t_env *new; + int i; + char bool_first_el; + + i = -1; + bool_first_el = true; + while (env_d[++i]) + { + if (bool_first_el) + i = env_create_first_el(env_d[i], env); + if (bool_first_el && i < 0) + return (1); + else + { + new = env_create_el(env_d[i]); + if (!new) + { + ft_envclear(&env, free); + return (1); + } + ft_envadd_back(&env, new); + } + bool_first_el = false; + } + return (0); +} + +char **env_get(t_env *env) +{ + char **exec_env; + int i; + + exec_env = malloc(sizeof(char *) * (ft_envsize(env) + 1)); + if (!exec_env) + return (exec_env); + exec_env[ft_envsize(env)] = NULL; + i = 0; + while (env) + { + exec_env[i] = malloc(ft_strlen(env->name) + + ft_strlen(env->content) + 2); + if (!exec_env[i]) + { + ft_free("a", exec_env); + return (NULL); + } + ft_strlcpy(exec_env[i], env->name, ft_strlen(env->name) + 1); + exec_env[i][ft_strlen(env->name)] = '='; + ft_strlcpy(exec_env[i] + ft_strlen(env->name) + 1, + env->content, ft_strlen(env->content) + 1); + env = env->next; + i++; + } + return (exec_env); +} diff --git a/src/main.c b/src/main.c index c65dae6..daa175d 100644 --- a/src/main.c +++ b/src/main.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* main.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: adjoly +#+ +:+ +#+ */ +/* By: mmoussou