diff options
Diffstat (limited to 'src/free_node.c')
| -rw-r--r-- | src/free_node.c | 128 |
1 files changed, 64 insertions, 64 deletions
diff --git a/src/free_node.c b/src/free_node.c index d866727..733fe1c 100644 --- a/src/free_node.c +++ b/src/free_node.c @@ -6,7 +6,7 @@ /* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/27 11:41:46 by dkaiser #+# #+# */ -/* Updated: 2025/01/22 01:53:34 by chuhlig ### ########.fr */ +/* Updated: 2025/01/22 16:00:36 by chuhlig ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,84 +28,84 @@ static void free_file(void *arg); // panic(UNREACHABLE); // free(node); // } -void free_redirections(t_redirection redirs[2]) -{ - for (int i = 0; i < 2; i++) - { - if (redirs[i].specifier) - free(redirs[i].specifier); - } -} -void free_node(t_node *node) -{ - if (!node) - return; +// static void free_pipe_node(t_node *node) +// { +// free_node(node->content.pipe.left); +// free_node(node->content.pipe.right); +// } + +// static void free_cmd_node(t_node *node) +// { +// int i; + +// i = 0; +// while (node->content.cmd.args != NULL && node->content.cmd.args[i] != NULL) +// { +// free(node->content.cmd.args[i]); +// i++; +// } +// free(node->content.cmd.args); +// if (node->content.cmd.redirs[0].type != 0 +// && node->content.cmd.redirs[0].specifier != NULL) +// free(node->content.cmd.redirs[0].specifier); +// if (node->content.cmd.redirs[1].type != 0 +// && node->content.cmd.redirs[0].specifier != NULL) +// free(node->content.cmd.redirs[1].specifier); +// if (node->content.cmd.create_files != NULL) +// ft_lstclear(&node->content.cmd.create_files, free_file); +// } + +// static void free_file(void *arg) +// { +// t_redirection *file; +// file = (t_redirection *)arg; +// free(file->specifier); +// free(file); +// } + +void free_node(t_node *node) +{ if (node->type == PIPE_NODE) - { - free_node(node->content.pipe.left); - free_node(node->content.pipe.right); - } + free_pipe_node(node); else if (node->type == CMD_NODE) - { - if (node->content.cmd.args) - { - for (int i = 0; node->content.cmd.args[i]; i++) - free(node->content.cmd.args[i]); - free(node->content.cmd.args); - } - free_redirections(node->content.cmd.redirs); - // Assuming create_files is a list of dynamically allocated strings - t_list *current = node->content.cmd.create_files; - t_list *next; - while (current) - { - next = current->next; - free(current->content); - free(current); - current = next; - } - } + free_cmd_node(node); else if (node->type == STRING_NODE) - { free(node->content.string); - } free(node); } -static void free_pipe_node(t_node *node) +static void free_pipe_node(t_node *node) { - free_node(node->content.pipe.left); - free_node(node->content.pipe.right); + free_node(node->content.pipe.left); + free_node(node->content.pipe.right); } -static void free_cmd_node(t_node *node) +static void free_cmd_node(t_node *node) { - int i; + int i; - i = 0; - while (node->content.cmd.args != NULL && node->content.cmd.args[i] != NULL) - { - free(node->content.cmd.args[i]); - i++; - } - free(node->content.cmd.args); - if (node->content.cmd.redirs[0].type != 0 - && node->content.cmd.redirs[0].specifier != NULL) - free(node->content.cmd.redirs[0].specifier); - if (node->content.cmd.redirs[1].type != 0 - && node->content.cmd.redirs[0].specifier != NULL) - free(node->content.cmd.redirs[1].specifier); - if (node->content.cmd.create_files != NULL) - ft_lstclear(&node->content.cmd.create_files, free_file); + i = 0; + while (node->content.cmd.args != NULL && node->content.cmd.args[i] != NULL) + { + free(node->content.cmd.args[i]); + i++; + } + free(node->content.cmd.args); + if (node->content.cmd.redirs[0].type != 0 && node->content.cmd.redirs[0].specifier != NULL) + free(node->content.cmd.redirs[0].specifier); + if (node->content.cmd.redirs[1].type != 0 && node->content.cmd.redirs[1].specifier != NULL) + free(node->content.cmd.redirs[1].specifier); + if (node->content.cmd.create_files != NULL) + ft_lstclear(&node->content.cmd.create_files, free_file); } -static void free_file(void *arg) +static void free_file(void *arg) { - t_redirection *file; + t_redirection *file; - file = (t_redirection *)arg; - free(file->specifier); - free(file); -} + file = (t_redirection *)arg; + free(file->specifier); + free(file); +}
\ No newline at end of file |
