Free_safe implemented, ft_lstnew_safe and ft_lstclear_safe added
ft_strdup_safe added ft_strjoin_safe added
This commit is contained in:
parent
07f48cfc62
commit
91cb0af6ef
@ -18,5 +18,6 @@
|
|||||||
void print_commands(void *param);
|
void print_commands(void *param);
|
||||||
void token_print(void *param);
|
void token_print(void *param);
|
||||||
void print_redirects(void *param);
|
void print_redirects(void *param);
|
||||||
|
void print_freelist(t_minishell *minishell);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 12:36:00 by whaffman #+# #+# */
|
/* Created: 2025/02/05 12:36:00 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/25 14:45:15 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:19:05 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -17,7 +17,7 @@
|
|||||||
* Lexer
|
* Lexer
|
||||||
*/
|
*/
|
||||||
t_lexer *ft_lexer_new(t_minishell *minishell);
|
t_lexer *ft_lexer_new(t_minishell *minishell);
|
||||||
void ft_lexer_free(t_lexer *lexer);
|
void ft_lexer_free(t_minishell *minishell, t_lexer *lexer);
|
||||||
void lexer_readchar(t_lexer *lexer);
|
void lexer_readchar(t_lexer *lexer);
|
||||||
char *lexer_readword(t_minishell *minishell, t_lexer *lexer);
|
char *lexer_readword(t_minishell *minishell, t_lexer *lexer);
|
||||||
t_list *ft_parse_input(t_minishell *minishell);
|
t_list *ft_parse_input(t_minishell *minishell);
|
||||||
@ -26,8 +26,8 @@ t_list *ft_parse_input(t_minishell *minishell);
|
|||||||
*/
|
*/
|
||||||
t_token *ft_token_next(t_minishell *minishell, t_lexer *lexer);
|
t_token *ft_token_next(t_minishell *minishell, t_lexer *lexer);
|
||||||
t_token *token_new(t_minishell *minishell, t_token_type type, char *c, int pos);
|
t_token *token_new(t_minishell *minishell, t_token_type type, char *c, int pos);
|
||||||
void ft_token_free(t_token *token);
|
void ft_token_free(t_minishell *minishell, t_token *token);
|
||||||
void ft_clear_tokenlist(void *content);
|
void ft_clear_tokenlist(t_minishell *minishell, void *content);
|
||||||
t_token *token_parse(t_minishell *minishell, t_lexer *lexer);
|
t_token *token_parse(t_minishell *minishell, t_lexer *lexer);
|
||||||
|
|
||||||
#endif // TOKENIZER_H
|
#endif // TOKENIZER_H
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
void free_minishell_line(t_minishell *minishell);
|
void free_minishell_line(t_minishell *minishell);
|
||||||
void free_minishell(t_minishell **minishell);
|
void free_minishell(t_minishell **minishell);
|
||||||
void free_command_list(void *content);
|
void free_command_list(t_minishell *minishell, void *content);
|
||||||
t_minishell *init_minishell(void);
|
t_minishell *init_minishell(void);
|
||||||
void print_banner(void);
|
void print_banner(void);
|
||||||
void print_list(void *content);
|
void print_list(void *content);
|
||||||
@ -23,8 +23,13 @@ void simple_builtins(t_minishell *minishell);
|
|||||||
void error_msg(char *func, char *msg);
|
void error_msg(char *func, char *msg);
|
||||||
void check_malloc(t_minishell *minishell, void *ptr);
|
void check_malloc(t_minishell *minishell, void *ptr);
|
||||||
char *ft_strdup_safe(t_minishell *minishell, const char *str);
|
char *ft_strdup_safe(t_minishell *minishell, const char *str);
|
||||||
char *ft_strjoin_safe(t_minishell *minishell, const char *s1, const char *s2);
|
char *ft_strjoin_safe(t_minishell *minishell,
|
||||||
|
const char *s1, const char *s2);
|
||||||
void *malloc_safe(t_minishell *minishell, size_t size);
|
void *malloc_safe(t_minishell *minishell, size_t size);
|
||||||
void free_safe(t_minishell *minishell, void **ptr);
|
void free_safe(t_minishell *minishell, void **ptr);
|
||||||
|
void free_freelist(t_minishell *minishell);
|
||||||
|
void ft_lstclear_safe(t_minishell *minishell, t_list **lst,
|
||||||
|
void (*del)(t_minishell *minishell, void *));
|
||||||
|
t_list *ft_lstnew_safe(t_minishell *minishell, void *content);
|
||||||
|
|
||||||
#endif // UTILS_H
|
#endif // UTILS_H
|
||||||
|
|||||||
16
sources.mk
16
sources.mk
@ -3,16 +3,16 @@ SOURCES = history_load.c history_write.c prompt.c free_lexer.c free_token.c \
|
|||||||
free_token_list.c free_minishell.c free_minishell_line.c \
|
free_token_list.c free_minishell.c free_minishell_line.c \
|
||||||
init_minishell.c check_malloc.c error_msg.c free_command_list.c \
|
init_minishell.c check_malloc.c error_msg.c free_command_list.c \
|
||||||
ft_strdup_safe.c ft_strjoin_safe.c print_banner.c free_freelist.c \
|
ft_strdup_safe.c ft_strjoin_safe.c print_banner.c free_freelist.c \
|
||||||
malloc_safe.c free_safe.c lexer_read_char.c lexer_token_next.c \
|
malloc_safe.c free_safe.c ft_lstclear_safe.c ft_lstnew_safe.c \
|
||||||
lexer_parse_input.c lexer_new.c lexer_read_word.c token_new.c \
|
lexer_read_char.c lexer_token_next.c lexer_parse_input.c lexer_new.c \
|
||||||
token_parse.c environment_free.c environment_del.c \
|
lexer_read_word.c token_new.c token_parse.c environment_free.c \
|
||||||
environment_free_list.c environment_get.c environment_parse.c \
|
environment_del.c environment_free_list.c environment_get.c \
|
||||||
environment_add.c environment_get_arr.c environment_print.c \
|
environment_parse.c environment_add.c environment_get_arr.c \
|
||||||
executor_close_fds.c executor_child.c executor_fork.c \
|
environment_print.c executor_close_fds.c executor_child.c \
|
||||||
executor_absolute_path.c executor_execute_pipeline.c \
|
executor_fork.c executor_absolute_path.c executor_execute_pipeline.c \
|
||||||
executor_count_fds.c executor_create_redirects.c executor_open_fds.c \
|
executor_count_fds.c executor_create_redirects.c executor_open_fds.c \
|
||||||
executor_create_pipes.c parser_get_arguments.c parser_new_command.c \
|
executor_create_pipes.c parser_get_arguments.c parser_new_command.c \
|
||||||
parser_get_commands.c signal.c print_commands.c \
|
parser_get_commands.c signal.c print_commands.c print_freelist.c \
|
||||||
expander_expand_dollar.c expander_get_variable.c \
|
expander_expand_dollar.c expander_get_variable.c \
|
||||||
expander_is_character.c expander_parse_variables.c \
|
expander_is_character.c expander_parse_variables.c \
|
||||||
expander_parse_string.c expander_allocate_memory.c builtin_cd.c \
|
expander_parse_string.c expander_allocate_memory.c builtin_cd.c \
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/20 11:32:59 by whaffman #+# #+# */
|
/* Created: 2025/02/20 11:32:59 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/25 15:31:16 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:04:17 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -36,7 +36,8 @@ int builtin_exit(t_minishell *minishell, t_command *cmd)
|
|||||||
}
|
}
|
||||||
exit_status = ft_atoi(cmd->args[1]);
|
exit_status = ft_atoi(cmd->args[1]);
|
||||||
}
|
}
|
||||||
//free_minishell(&minishell);
|
//print_freelist(minishell);
|
||||||
|
free_minishell(&minishell);
|
||||||
exit(exit_status);
|
exit(exit_status);
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/20 11:32:53 by whaffman #+# #+# */
|
/* Created: 2025/02/20 11:32:53 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/25 15:17:21 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:39:13 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ int builtin_export(t_minishell *minishell, t_command *cmd)
|
|||||||
if (env != NULL)
|
if (env != NULL)
|
||||||
{
|
{
|
||||||
free_safe(minishell, (void **)&(env->value));
|
free_safe(minishell, (void **)&(env->value));
|
||||||
env->value = ft_strdup(arr[1]); //TODO: malloc check
|
env->value = ft_strdup_safe(minishell, arr[1]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
environment_add(minishell, arr[0], arr[1]);
|
environment_add(minishell, arr[0], arr[1]);
|
||||||
|
|||||||
28
src/debug/print_freelist.c
Normal file
28
src/debug/print_freelist.c
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* :::::::: */
|
||||||
|
/* print_freelist.c :+: :+: */
|
||||||
|
/* +:+ */
|
||||||
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
|
/* +#+ */
|
||||||
|
/* Created: 2025/02/25 15:46:03 by whaffman #+# #+# */
|
||||||
|
/* Updated: 2025/02/25 15:55:41 by whaffman ######## odam.nl */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
void print_freelist(t_minishell *minishell)
|
||||||
|
{
|
||||||
|
t_list *freelist;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
freelist = minishell->freelist;
|
||||||
|
while (freelist)
|
||||||
|
{
|
||||||
|
printf("%d: %p\n", i, freelist->content);
|
||||||
|
i++;
|
||||||
|
freelist = freelist->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/04 16:13:33 by whaffman #+# #+# */
|
/* Created: 2025/02/04 16:13:33 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/25 15:24:34 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:50:12 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -24,9 +24,9 @@ void environment_add(t_minishell *minishell, char *name, char *value)
|
|||||||
new_environment = malloc_safe(minishell, sizeof(t_environment));
|
new_environment = malloc_safe(minishell, sizeof(t_environment));
|
||||||
if (new_environment == NULL)
|
if (new_environment == NULL)
|
||||||
return (perror("malloc"));
|
return (perror("malloc"));
|
||||||
new_environment->name = ft_strdup(name);
|
new_environment->name = ft_strdup_safe(minishell, name);
|
||||||
new_environment->value = ft_strdup(value);
|
new_environment->value = ft_strdup_safe(minishell, value);
|
||||||
new_node = ft_lstnew(new_environment);
|
new_node = ft_lstnew_safe(minishell, new_environment);
|
||||||
if (new_node == NULL
|
if (new_node == NULL
|
||||||
|| new_environment->name == NULL
|
|| new_environment->name == NULL
|
||||||
|| new_environment->value == NULL)
|
|| new_environment->value == NULL)
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: willem <willem@student.codam.nl> +#+ */
|
/* By: willem <willem@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/08 17:00:24 by willem #+# #+# */
|
/* Created: 2025/02/08 17:00:24 by willem #+# #+# */
|
||||||
/* Updated: 2025/02/25 15:26:05 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:39:59 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ char *executor_absolute_path(t_minishell *minishell, char *cmd)
|
|||||||
{
|
{
|
||||||
if (access(cmd, F_OK) == 0)
|
if (access(cmd, F_OK) == 0)
|
||||||
{
|
{
|
||||||
executable = ft_strdup(cmd);
|
executable = ft_strdup_safe(minishell, cmd);
|
||||||
if (!executable)
|
if (!executable)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
return (executable);
|
return (executable);
|
||||||
|
|||||||
@ -6,13 +6,13 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/18 19:00:35 by qmennen #+# #+# */
|
/* Created: 2025/02/18 19:00:35 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/25 14:32:59 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:14:16 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
static void free_variables(t_list *variables)
|
static void free_variables(t_minishell *minishell, t_list *variables)
|
||||||
{
|
{
|
||||||
t_list *current;
|
t_list *current;
|
||||||
t_list *last;
|
t_list *last;
|
||||||
@ -22,7 +22,7 @@ static void free_variables(t_list *variables)
|
|||||||
{
|
{
|
||||||
last = current;
|
last = current;
|
||||||
current = current->next;
|
current = current->next;
|
||||||
free(last);
|
free_safe(minishell, (void **)&last);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,6 +54,6 @@ char *expander_parse_string(char *s, t_minishell *minishell)
|
|||||||
//TODO: Figure out why echo "> echo "\as"" breaks
|
//TODO: Figure out why echo "> echo "\as"" breaks
|
||||||
|
|
||||||
string[j] = 0;
|
string[j] = 0;
|
||||||
free_variables(variables);
|
free_variables(minishell, variables);
|
||||||
return (string);
|
return (string);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* :::::::: */
|
||||||
/* expander_parse_variables.c :+: :+: :+: */
|
/* expander_parse_variables.c :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/19 13:58:13 by qmennen #+# #+# */
|
/* Created: 2025/02/19 13:58:13 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/19 15:07:23 by qmennen ### ########.fr */
|
/* Updated: 2025/02/25 16:51:16 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -27,9 +27,9 @@ t_list *expander_parse_variables(const char *s, t_minishell *minishell)
|
|||||||
{
|
{
|
||||||
env = expander_get_var(s, i + 1, minishell);
|
env = expander_get_var(s, i + 1, minishell);
|
||||||
if (env)
|
if (env)
|
||||||
ft_lstadd_back(&var_list, ft_lstnew(env));
|
ft_lstadd_back(&var_list, ft_lstnew_safe(minishell, env));
|
||||||
else
|
else
|
||||||
ft_lstadd_back(&var_list, ft_lstnew(NULL));
|
ft_lstadd_back(&var_list, ft_lstnew_safe(minishell, NULL));
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 19:03:01 by qmennen #+# #+# */
|
/* Created: 2025/02/05 19:03:01 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/25 14:35:35 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:40:16 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ t_lexer *ft_lexer_new(t_minishell *minishell)
|
|||||||
t_lexer *lexer;
|
t_lexer *lexer;
|
||||||
input = minishell->line;
|
input = minishell->line;
|
||||||
lexer = malloc_safe(minishell, sizeof(t_lexer));
|
lexer = malloc_safe(minishell, sizeof(t_lexer));
|
||||||
lexer->input = ft_strdup(input);
|
lexer->input = ft_strdup_safe(minishell, input);
|
||||||
lexer->pos = 0;
|
lexer->pos = 0;
|
||||||
lexer->n_pos = 1;
|
lexer->n_pos = 1;
|
||||||
lexer->current_char = '\0';
|
lexer->current_char = '\0';
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 19:09:20 by qmennen #+# #+# */
|
/* Created: 2025/02/05 19:09:20 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/25 14:39:37 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:51:27 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -37,8 +37,8 @@ t_list *ft_parse_input(t_minishell *minishell)
|
|||||||
token = ft_token_next(minishell, lexer);
|
token = ft_token_next(minishell, lexer);
|
||||||
if (token->type == T_EOF || token->type == T_ERROR) //TODO T_ERROR removes the inf loop
|
if (token->type == T_EOF || token->type == T_ERROR) //TODO T_ERROR removes the inf loop
|
||||||
break ;
|
break ;
|
||||||
ft_lstadd_back(&list, ft_lstnew(token));
|
ft_lstadd_back(&list, ft_lstnew_safe(minishell, token));
|
||||||
}
|
}
|
||||||
ft_token_free(token);
|
ft_token_free(minishell, token);
|
||||||
return (list);
|
return (list);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,7 +37,7 @@ int main(int argc, char **argv, char **envp)
|
|||||||
simple_builtins(minishell);
|
simple_builtins(minishell);
|
||||||
free_minishell_line(minishell);
|
free_minishell_line(minishell);
|
||||||
}
|
}
|
||||||
ft_lstclear(&minishell->commands, free_command_list);
|
ft_lstclear_safe(minishell, &minishell->commands, free_command_list);
|
||||||
free_minishell(&minishell);
|
free_minishell(&minishell);
|
||||||
return (EXIT_SUCCESS);
|
return (EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/11 16:20:09 by qmennen #+# #+# */
|
/* Created: 2025/02/11 16:20:09 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/25 14:41:06 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:40:26 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ char **parser_get_arguments(t_list *list, t_minishell *minishell)
|
|||||||
}
|
}
|
||||||
else if (((t_token *)current->content)->type == T_WORD ||
|
else if (((t_token *)current->content)->type == T_WORD ||
|
||||||
((t_token *)current->content)->type == T_SQWORD)
|
((t_token *)current->content)->type == T_SQWORD)
|
||||||
args[i] = ft_strdup(((t_token *)current->content)->value);
|
args[i] = ft_strdup_safe(minishell, ((t_token *)current->content)->value);
|
||||||
current = current->next;
|
current = current->next;
|
||||||
}
|
}
|
||||||
args[i] = 0;
|
args[i] = 0;
|
||||||
|
|||||||
@ -31,11 +31,11 @@ t_list *parser_get_commands(t_minishell *minishell)
|
|||||||
while (current)
|
while (current)
|
||||||
{
|
{
|
||||||
token = (t_token *) current->content;
|
token = (t_token *) current->content;
|
||||||
command = parser_command_new(minishell, ft_strdup(token->value));
|
command = parser_command_new(minishell, ft_strdup_safe(minishell, token->value));
|
||||||
command->args = parser_get_arguments(current, minishell);
|
command->args = parser_get_arguments(current, minishell);
|
||||||
command->redirect_in = redirect_get_inputs(minishell, current);
|
command->redirect_in = redirect_get_inputs(minishell, current);
|
||||||
command->redirect_out = redirect_get_outputs(minishell, current);
|
command->redirect_out = redirect_get_outputs(minishell, current);
|
||||||
ft_lstadd_back(&command_list, ft_lstnew(command));
|
ft_lstadd_back(&command_list, ft_lstnew_safe(minishell, command));
|
||||||
while (current && is_command_token((t_token *)current->content))
|
while (current && is_command_token((t_token *)current->content))
|
||||||
current = current->next;
|
current = current->next;
|
||||||
if (current && ((t_token *)current->content)->type >= 3)
|
if (current && ((t_token *)current->content)->type >= 3)
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/04 16:13:08 by whaffman #+# #+# */
|
/* Created: 2025/02/04 16:13:08 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/25 15:27:33 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:43:27 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ char *get_path_with_home(t_minishell *minishell)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
ft_strlcpy(result, cwd, len);
|
ft_strlcpy(result, cwd, len);
|
||||||
free_safe(minishell, (void **)&cwd);
|
free(cwd);
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,15 +80,10 @@ char *get_path(t_minishell *minishell)
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
len = ft_strlen(cwd) + ft_strlen(BLUE RESET "> ") + 1;
|
len = ft_strlen(cwd) + ft_strlen(BLUE RESET "> ") + 1;
|
||||||
result = malloc_safe(minishell, len);
|
result = malloc_safe(minishell, len);
|
||||||
if (result == NULL)
|
|
||||||
{
|
|
||||||
perror("malloc");
|
|
||||||
return (free(cwd), NULL);
|
|
||||||
}
|
|
||||||
ft_strlcpy(result, BLUE, len);
|
ft_strlcpy(result, BLUE, len);
|
||||||
ft_strlcat(result, cwd, len);
|
ft_strlcat(result, cwd, len);
|
||||||
ft_strlcat(result, RESET "> ", len);
|
ft_strlcat(result, RESET "> ", len);
|
||||||
free(cwd);
|
free_safe(minishell,(void **) &cwd);
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,7 +100,7 @@ char *ft_prompt(t_minishell *minishell)
|
|||||||
user = get_user(minishell);
|
user = get_user(minishell);
|
||||||
if (user == NULL)
|
if (user == NULL)
|
||||||
return (free(cwd), NULL);
|
return (free(cwd), NULL);
|
||||||
prompt = ft_strjoin(user, cwd);
|
prompt = ft_strjoin_safe(minishell, user, cwd);
|
||||||
if (prompt == NULL)
|
if (prompt == NULL)
|
||||||
{
|
{
|
||||||
perror("malloc");
|
perror("malloc");
|
||||||
|
|||||||
@ -10,40 +10,41 @@
|
|||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
# include "redirect.h"
|
#include "redirect.h"
|
||||||
|
|
||||||
t_list *redirect_get_inputs(t_minishell *minishell, t_list *list)
|
t_list *redirect_get_inputs(t_minishell *minishell, t_list *list)
|
||||||
{
|
{
|
||||||
t_list *current;
|
t_list *current;
|
||||||
t_list *redirects;
|
t_list *redirects;
|
||||||
t_token *token;
|
t_token *token;
|
||||||
|
|
||||||
redirects = NULL;
|
redirects = NULL;
|
||||||
current = list;
|
current = list;
|
||||||
while (current)
|
while (current)
|
||||||
{
|
{
|
||||||
token = (t_token *)current->content;
|
token = (t_token *)current->content;
|
||||||
if (redirect_is_delimiter(token))
|
if (redirect_is_delimiter(token))
|
||||||
break ;
|
break ;
|
||||||
if (token->type != T_REDIRECT_IN && token->type != T_HEREDOC)
|
if (token->type != T_REDIRECT_IN && token->type != T_HEREDOC)
|
||||||
{
|
{
|
||||||
current = current->next;
|
current = current->next;
|
||||||
continue ;
|
continue ;
|
||||||
}
|
}
|
||||||
if (redirect_is_valid(current, token))
|
if (redirect_is_valid(current, token))
|
||||||
{
|
{
|
||||||
ft_lstadd_front(&redirects, ft_lstnew(
|
ft_lstadd_front(&redirects, ft_lstnew_safe(minishell,
|
||||||
redirect_new(minishell, token->type,
|
redirect_new(minishell, token->type,
|
||||||
ft_strdup(((t_token *)current->next->content)->value))));
|
ft_strdup_safe(minishell,
|
||||||
current = current->next;
|
((t_token *)current->next->content)->value))));
|
||||||
continue ;
|
current = current->next;
|
||||||
}
|
continue ;
|
||||||
else
|
}
|
||||||
{
|
else
|
||||||
ft_lstadd_front(&redirects, ft_lstnew(redirect_new(minishell, T_ERROR, NULL)));
|
{
|
||||||
break ;
|
ft_lstadd_front(&redirects, ft_lstnew_safe(minishell, redirect_new(minishell, T_ERROR, NULL)));
|
||||||
}
|
break ;
|
||||||
current = current->next;
|
}
|
||||||
}
|
current = current->next;
|
||||||
return (redirects);
|
}
|
||||||
|
return (redirects);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,34 +14,35 @@
|
|||||||
|
|
||||||
t_list *redirect_get_outputs(t_minishell *minishell, t_list *list)
|
t_list *redirect_get_outputs(t_minishell *minishell, t_list *list)
|
||||||
{
|
{
|
||||||
t_list *current;
|
t_list *current;
|
||||||
t_list *redirects;
|
t_list *redirects;
|
||||||
t_token *token;
|
t_token *token;
|
||||||
|
|
||||||
redirects = NULL;
|
redirects = NULL;
|
||||||
current = list;
|
current = list;
|
||||||
while (current)
|
while (current)
|
||||||
{
|
{
|
||||||
token = (t_token *)current->content;
|
token = (t_token *)current->content;
|
||||||
if (redirect_is_delimiter(token))
|
if (redirect_is_delimiter(token))
|
||||||
break;
|
break ;
|
||||||
if (token->type != T_REDIRECT_OUT && token->type != T_APPEND_OUT)
|
if (token->type != T_REDIRECT_OUT && token->type != T_APPEND_OUT)
|
||||||
{
|
{
|
||||||
current = current->next;
|
current = current->next;
|
||||||
continue ;
|
continue ;
|
||||||
}
|
}
|
||||||
if (redirect_is_valid(current, token))
|
if (redirect_is_valid(current, token))
|
||||||
{
|
{
|
||||||
ft_lstadd_front(&redirects, ft_lstnew(redirect_new(minishell, token->type, ft_strdup(((t_token *)current->next->content)->value))));
|
ft_lstadd_front(&redirects,
|
||||||
current = current->next;
|
ft_lstnew_safe(minishell, redirect_new(minishell, token->type, ft_strdup_safe(minishell, ((t_token *)current->next->content)->value))));
|
||||||
continue ;
|
current = current->next;
|
||||||
}
|
continue ;
|
||||||
else
|
}
|
||||||
{
|
else
|
||||||
ft_lstadd_front(&redirects, ft_lstnew(redirect_new(minishell, T_ERROR, NULL)));
|
{
|
||||||
break ;
|
ft_lstadd_front(&redirects, ft_lstnew_safe(minishell, redirect_new(minishell, T_ERROR, NULL)));
|
||||||
}
|
break ;
|
||||||
current = current->next;
|
}
|
||||||
}
|
current = current->next;
|
||||||
return (redirects);
|
}
|
||||||
|
return (redirects);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 19:10:49 by qmennen #+# #+# */
|
/* Created: 2025/02/05 19:10:49 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/25 14:43:56 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:42:52 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ t_token *token_new(t_minishell *minishell, t_token_type type, char *c, int pos)
|
|||||||
token->type = type;
|
token->type = type;
|
||||||
token->position = pos;
|
token->position = pos;
|
||||||
if (c)
|
if (c)
|
||||||
token->value = ft_strdup(c);
|
token->value = ft_strdup_safe(minishell, c);
|
||||||
else
|
else
|
||||||
token->value = NULL;
|
token->value = NULL;
|
||||||
return (token);
|
return (token);
|
||||||
|
|||||||
@ -15,6 +15,8 @@
|
|||||||
|
|
||||||
void check_malloc(t_minishell *minishell, void *ptr)
|
void check_malloc(t_minishell *minishell, void *ptr)
|
||||||
{
|
{
|
||||||
|
t_list *new;
|
||||||
|
|
||||||
if (ptr == NULL)
|
if (ptr == NULL)
|
||||||
{
|
{
|
||||||
error_msg("malloc", "can't allocate memory");
|
error_msg("malloc", "can't allocate memory");
|
||||||
@ -23,6 +25,14 @@ void check_malloc(t_minishell *minishell, void *ptr)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ft_lstadd_front(&(minishell->freelist), ft_lstnew(ptr));
|
new = ft_lstnew(ptr);
|
||||||
|
if (new == NULL)
|
||||||
|
{
|
||||||
|
error_msg("malloc", "can't allocate memory");
|
||||||
|
ft_lstclear(&(minishell->freelist), free);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ft_lstadd_front(&(minishell->freelist), new);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,20 +12,20 @@
|
|||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
static void free_args(char **args)
|
static void free_args(t_minishell *minishell, char **args)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (args[i])
|
while (args[i])
|
||||||
{
|
{
|
||||||
free(args[i]);
|
free_safe(minishell, (void **)&args[i]);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
free(args);
|
free_safe(minishell, (void **)&args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void free_redirects(t_list *lst)
|
static void free_redirects(t_minishell *minishell, t_list *lst)
|
||||||
{
|
{
|
||||||
t_redirect *redir;
|
t_redirect *redir;
|
||||||
t_list *current;
|
t_list *current;
|
||||||
@ -37,26 +37,26 @@ static void free_redirects(t_list *lst)
|
|||||||
last = current;
|
last = current;
|
||||||
redir = (t_redirect *)current->content;
|
redir = (t_redirect *)current->content;
|
||||||
if (redir && redir->value)
|
if (redir && redir->value)
|
||||||
free(redir->value);
|
free_safe(minishell, (void **)&redir->value);
|
||||||
if (redir)
|
if (redir)
|
||||||
free(redir);
|
free_safe(minishell, (void **)&redir);
|
||||||
current = current->next;
|
current = current->next;
|
||||||
free(last);
|
free_safe(minishell, (void **)&last);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_command_list(void *content)
|
void free_command_list(t_minishell *minishell, void *content)
|
||||||
{
|
{
|
||||||
t_command *command;
|
t_command *command;
|
||||||
|
|
||||||
command = (t_command *)content;
|
command = (t_command *)content;
|
||||||
if (command->command)
|
if (command->command)
|
||||||
free(command->command);
|
free_safe(minishell, (void **)&(command->command));
|
||||||
if (command->args)
|
if (command->args)
|
||||||
free_args(command->args);
|
free_args(minishell, command->args);
|
||||||
if (command->redirect_in)
|
if (command->redirect_in)
|
||||||
free_redirects(command->redirect_in);
|
free_redirects(minishell, command->redirect_in);
|
||||||
if (command->redirect_out)
|
if (command->redirect_out)
|
||||||
free_redirects(command->redirect_out);
|
free_redirects(minishell, command->redirect_out);
|
||||||
free(command);
|
free_safe(minishell, (void **)&command);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/25 13:23:30 by whaffman #+# #+# */
|
/* Created: 2025/02/25 13:23:30 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/25 13:24:18 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 15:56:40 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -14,5 +14,16 @@
|
|||||||
|
|
||||||
void free_freelist(t_minishell *minishell)
|
void free_freelist(t_minishell *minishell)
|
||||||
{
|
{
|
||||||
ft_lstclear(&(minishell->freelist), free);
|
t_list *freelist;
|
||||||
|
t_list *next;
|
||||||
|
|
||||||
|
freelist = minishell->freelist;
|
||||||
|
while (freelist)
|
||||||
|
{
|
||||||
|
next = freelist->next;
|
||||||
|
free(freelist->content);
|
||||||
|
free(freelist);
|
||||||
|
freelist = next;
|
||||||
|
}
|
||||||
|
minishell->freelist = NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,20 +1,20 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* :::::::: */
|
||||||
/* free_lexer.c :+: :+: :+: */
|
/* free_lexer.c :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 19:07:01 by qmennen #+# #+# */
|
/* Created: 2025/02/05 19:07:01 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/05 19:07:18 by qmennen ### ########.fr */
|
/* Updated: 2025/02/25 16:16:01 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
void ft_lexer_free(t_lexer *lexer)
|
void ft_lexer_free(t_minishell *minishell, t_lexer *lexer)
|
||||||
{
|
{
|
||||||
if (lexer->input)
|
if (lexer->input)
|
||||||
free(lexer->input);
|
free_safe(minishell, (void **)&(lexer->input));
|
||||||
free(lexer);
|
free_safe(minishell, (void **)&lexer);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 16:03:57 by whaffman #+# #+# */
|
/* Created: 2025/02/05 16:03:57 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/25 15:30:19 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:02:57 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -14,10 +14,11 @@
|
|||||||
|
|
||||||
void free_minishell(t_minishell **minishell)
|
void free_minishell(t_minishell **minishell)
|
||||||
{
|
{
|
||||||
if ((*minishell)->line)
|
// if ((*minishell)->line)
|
||||||
free_minishell_line(*minishell);
|
// free_minishell_line(*minishell);
|
||||||
if ((*minishell)->environment)
|
// if ((*minishell)->environment)
|
||||||
environment_free_list(*minishell);
|
// environment_free_list(*minishell);
|
||||||
free(minishell);
|
free_freelist(*minishell);
|
||||||
|
free(*minishell);
|
||||||
*minishell = NULL;
|
*minishell = NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 16:01:44 by whaffman #+# #+# */
|
/* Created: 2025/02/05 16:01:44 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/25 15:28:18 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:48:39 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -17,9 +17,9 @@ void free_minishell_line(t_minishell *minishell)
|
|||||||
if (minishell->line)
|
if (minishell->line)
|
||||||
free_safe(minishell, (void **)&(minishell->line));
|
free_safe(minishell, (void **)&(minishell->line));
|
||||||
if (minishell->lexer)
|
if (minishell->lexer)
|
||||||
ft_lexer_free(minishell->lexer);
|
ft_lexer_free(minishell, minishell->lexer);
|
||||||
if (minishell->tokens)
|
if (minishell->tokens)
|
||||||
ft_lstclear(&minishell->tokens, ft_clear_tokenlist);
|
ft_lstclear_safe(minishell, &minishell->tokens, ft_clear_tokenlist);
|
||||||
if (minishell->commands)
|
if (minishell->commands)
|
||||||
ft_lstclear(&minishell->commands, free_command_list);
|
ft_lstclear_safe(minishell, &minishell->commands, free_command_list);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
/* +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/25 15:09:34 by whaffman #+# #+# */
|
/* Created: 2025/02/25 15:09:34 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/02/25 15:41:05 by whaffman ######## odam.nl */
|
/* Updated: 2025/02/25 16:00:29 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -31,11 +31,12 @@ void free_safe(t_minishell *minishell, void **ptr)
|
|||||||
minishell->freelist = current->next;
|
minishell->freelist = current->next;
|
||||||
free(*ptr);
|
free(*ptr);
|
||||||
free(current);
|
free(current);
|
||||||
break ;
|
return;
|
||||||
}
|
}
|
||||||
prev = current;
|
prev = current;
|
||||||
current = current->next;
|
current = current->next;
|
||||||
}
|
}
|
||||||
|
error_msg("free_safe", "pointer not found in freelist");
|
||||||
}
|
}
|
||||||
*ptr = NULL;
|
*ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,20 +1,20 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* :::::::: */
|
||||||
/* free_token.c :+: :+: :+: */
|
/* free_token.c :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 19:07:45 by qmennen #+# #+# */
|
/* Created: 2025/02/05 19:07:45 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/05 19:07:54 by qmennen ### ########.fr */
|
/* Updated: 2025/02/25 16:17:52 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
void ft_token_free(t_token *token)
|
void ft_token_free(t_minishell *minishell, t_token *token)
|
||||||
{
|
{
|
||||||
if (token->value)
|
if (token->value)
|
||||||
free(token->value);
|
free_safe(minishell, (void **)&token->value);
|
||||||
free(token);
|
free_safe(minishell, (void **)&token);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,21 +1,21 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* :::::::: */
|
||||||
/* free_token_list.c :+: :+: :+: */
|
/* free_token_list.c :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+ */
|
||||||
/* Created: 2025/02/05 19:08:14 by qmennen #+# #+# */
|
/* Created: 2025/02/05 19:08:14 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/02/05 19:08:31 by qmennen ### ########.fr */
|
/* Updated: 2025/02/25 16:18:44 by whaffman ######## odam.nl */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "minishell.h"
|
#include "minishell.h"
|
||||||
|
|
||||||
void ft_clear_tokenlist(void *content)
|
void ft_clear_tokenlist(t_minishell *minishell, void *content)
|
||||||
{
|
{
|
||||||
t_token *token;
|
t_token *token;
|
||||||
|
|
||||||
token = (t_token *)content;
|
token = (t_token *)content;
|
||||||
ft_token_free(token);
|
ft_token_free(minishell, token);
|
||||||
}
|
}
|
||||||
|
|||||||
30
src/utils/ft_lstclear_safe.c
Normal file
30
src/utils/ft_lstclear_safe.c
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* :::::::: */
|
||||||
|
/* minishell_lstclear.c :+: :+: */
|
||||||
|
/* +:+ */
|
||||||
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
|
/* +#+ */
|
||||||
|
/* Created: 2025/02/25 16:21:16 by whaffman #+# #+# */
|
||||||
|
/* Updated: 2025/02/25 16:48:43 by whaffman ######## odam.nl */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
void ft_lstclear_safe(t_minishell *minishell, t_list **lst,
|
||||||
|
void (*del)(t_minishell *minishell, void *))
|
||||||
|
{
|
||||||
|
t_list *current;
|
||||||
|
t_list *next;
|
||||||
|
|
||||||
|
current = *lst;
|
||||||
|
while (current)
|
||||||
|
{
|
||||||
|
next = current->next;
|
||||||
|
del(minishell, current->content);
|
||||||
|
free_safe(minishell, (void **)¤t);
|
||||||
|
current = next;
|
||||||
|
}
|
||||||
|
*lst = NULL;
|
||||||
|
}
|
||||||
23
src/utils/ft_lstnew_safe.c
Normal file
23
src/utils/ft_lstnew_safe.c
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* :::::::: */
|
||||||
|
/* minishell_lstnew.c :+: :+: */
|
||||||
|
/* +:+ */
|
||||||
|
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
||||||
|
/* +#+ */
|
||||||
|
/* Created: 2025/02/25 16:47:09 by whaffman #+# #+# */
|
||||||
|
/* Updated: 2025/02/25 16:49:11 by whaffman ######## odam.nl */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "minishell.h"
|
||||||
|
|
||||||
|
t_list *ft_lstnew_safe(t_minishell *minishell, void *content)
|
||||||
|
{
|
||||||
|
t_list *new;
|
||||||
|
|
||||||
|
new = malloc_safe(minishell, sizeof(t_list));
|
||||||
|
new->content = content;
|
||||||
|
new->next = NULL;
|
||||||
|
return (new);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user