diff --git a/inc/environment.h b/inc/environment.h index 29dac33..d98c3c3 100644 --- a/inc/environment.h +++ b/inc/environment.h @@ -1,26 +1,27 @@ /* ************************************************************************** */ /* */ /* :::::::: */ -/* environment.h :+: :+: */ +/* environment.h :+: :+: */ /* +:+ */ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/02/04 16:26:35 by whaffman #+# #+# */ -/* Updated: 2025/02/05 12:36:59 by whaffman ######## odam.nl */ +/* Updated: 2025/02/11 15:39:15 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ -#ifndef environment_H -# define environment_H +#ifndef ENVIRONMENT_H +# define ENVIRONMENT_H # include "minishell.h" -void environment_add(t_list **environment, char *name, char *value); +void environment_add(t_list **environment, char *name, char *value); void environment_print(t_list *environment); t_environment *environment_get(t_list *environment, char *name); -void environment_free(t_list *environment); +void environment_free_list(t_list **environment); int environment_parse(char **envp, t_list **environment); -char **environment_get_arr(t_list *environment); +char **environment_get_arr(t_list *environment); void environment_del(t_list **environment, char *name); +void environment_free(void *content); -#endif // environment_H +#endif // ENVIRONMENT_H diff --git a/src/environment/environment_del.c b/src/environment/environment_del.c index c531c66..e8c74e0 100644 --- a/src/environment/environment_del.c +++ b/src/environment/environment_del.c @@ -6,7 +6,7 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/02/11 14:17:53 by whaffman #+# #+# */ -/* Updated: 2025/02/11 14:33:29 by whaffman ######## odam.nl */ +/* Updated: 2025/02/11 15:40:09 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -14,21 +14,21 @@ void environment_del(t_list **environment, char *name) { - t_list *prev; - t_list *current; - t_list *next; + t_list *prev; + t_list *current; + t_list *next; + t_environment *env; prev = NULL; - next = NULL; + next = NULL; current = *environment; while (current != NULL) { - if (ft_strncmp(((t_environment *)current->content)->name, name, ft_strlen(name) + 1) == 0) + env = (t_environment *)current->content; + if (ft_strncmp(env->name, name, ft_strlen(name) + 1) == 0) { next = current->next; - free(((t_environment *)current->content)->name); - free(((t_environment *)current->content)->value); - free(current->content); + environment_free(current->content); free(current); if (prev == NULL) *environment = next; diff --git a/src/environment/environment_free.c b/src/environment/environment_free.c index 09d8811..6680cb1 100644 --- a/src/environment/environment_free.c +++ b/src/environment/environment_free.c @@ -1,28 +1,23 @@ /* ************************************************************************** */ /* */ /* :::::::: */ -/* environment_free.c :+: :+: */ +/* environment_free.c :+: :+: */ /* +:+ */ /* By: whaffman +#+ */ /* +#+ */ -/* Created: 2025/02/04 16:13:59 by whaffman #+# #+# */ -/* Updated: 2025/02/04 16:14:04 by whaffman ######## odam.nl */ +/* Created: 2025/02/11 15:38:43 by whaffman #+# #+# */ +/* Updated: 2025/02/11 15:38:48 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "minishell.h" -void environment_free(t_list *environment) +void environment_free(void *content) { - t_list *tmp; + t_environment *env; - while (environment != NULL) - { - tmp = environment; - environment = environment->next; - free(((t_environment *)tmp->content)->name); - free(((t_environment *)tmp->content)->value); - free(tmp->content); - free(tmp); - } + env = (t_environment *)content; + free(env->name); + free(env->value); + free(env); } diff --git a/src/environment/environment_free_list.c b/src/environment/environment_free_list.c new file mode 100644 index 0000000..711d851 --- /dev/null +++ b/src/environment/environment_free_list.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* :::::::: */ +/* environment_free_list.c :+: :+: */ +/* +:+ */ +/* By: whaffman +#+ */ +/* +#+ */ +/* Created: 2025/02/04 16:13:59 by whaffman #+# #+# */ +/* Updated: 2025/02/04 16:14:04 by whaffman ######## odam.nl */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +void environment_free_list(t_list **environment) +{ + ft_lstclear(environment, environment_free); +}