diff --git a/src/env/env.c b/src/env/env.c index fa841f7..82923f2 100644 --- a/src/env/env.c +++ b/src/env/env.c @@ -121,3 +121,24 @@ char *get_env_variable(lst** root, const char* key) } return (NULL); } + +int edit_env_variable(lst** root, const char *key, const char *new_value) +{ + lst* current = *root; + env* content; + + while (current != NULL) + { + content = current->content; + if (strcmp(content->key, key) == 0) + { + free(content->value); + content->value = strdup(new_value); + if (content->value == NULL) + return (2); + return (0); + } + current = current->next; + } + return (1); +} diff --git a/src/env/env.h b/src/env/env.h index 1b5afcd..09a7578 100644 --- a/src/env/env.h +++ b/src/env/env.h @@ -7,7 +7,9 @@ typedef struct s_env char *value; } env; -int add_env_variable(lst** root, const char *key, const char *value); lst** env_init(const char **env); void env_del(void *ptr); + char *get_env_variable(lst** root, const char* key); +int add_env_variable(lst** root, const char *key, const char *value); +int edit_env_variable(lst** root, const char *key, const char *new_value);