diff options
| author | Dominik Kaiser | 2024-08-11 12:27:02 +0200 |
|---|---|---|
| committer | Dominik Kaiser | 2024-08-11 12:27:02 +0200 |
| commit | 99e8655aaf9827c7d5248c7f3d0913fcb1377cfb (patch) | |
| tree | fcfc4288ea38348d707ad549cd4fa04c49a446b7 | |
| parent | f53acc629b1b3e7f4097eef1e26841ef0b9b24c6 (diff) | |
| download | minishell-99e8655aaf9827c7d5248c7f3d0913fcb1377cfb.tar.gz minishell-99e8655aaf9827c7d5248c7f3d0913fcb1377cfb.zip | |
Remove assigns
I found out that there's a difference between shell variables and env
variables.
We don't have to implement shell variables, so I removed all code that
handles them.
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | include/ast.h | 12 | ||||
| -rw-r--r-- | include/minishell.h | 3 | ||||
| -rw-r--r-- | src/collect_assigns.c | 84 | ||||
| -rw-r--r-- | src/free_node.c | 20 | ||||
| -rw-r--r-- | src/new_node.c | 5 | ||||
| -rw-r--r-- | src/parse_cmd.c | 6 | ||||
| -rw-r--r-- | src/print_ast.c | 10 |
8 files changed, 10 insertions, 132 deletions
@@ -13,7 +13,7 @@ HEADERS = -I include -I $(LIB_DIR)/libft VPATH := src SRC := main.c debug_tools.c init.c signal_handling.c repl.c new_token.c \ free_token.c new_node.c free_node.c tokenizer.c parser.c \ - parse_cmd.c collect_assigns.c collect_redirs.c print_ast.c + parse_cmd.c collect_redirs.c print_ast.c OBJ_DIR := _obj OBJ := $(addprefix $(OBJ_DIR)/, $(SRC:%.c=%.o)) diff --git a/include/ast.h b/include/ast.h index bf19083..cd2f9c9 100644 --- a/include/ast.h +++ b/include/ast.h @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/27 11:48:27 by dkaiser #+# #+# */ -/* Updated: 2024/07/10 12:31:39 by dkaiser ### ########.fr */ +/* Updated: 2024/08/11 12:20:56 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,12 +20,6 @@ enum e_node_type STRING_NODE }; -typedef struct s_assign -{ - char *var; - char *value; -} t_assign; - typedef struct s_pipe { struct s_node *left; @@ -49,7 +43,6 @@ typedef struct s_redirection typedef struct s_cmd { char **args; - struct s_assign **assigns; struct s_redirection redirs[2]; } t_cmd; @@ -68,8 +61,7 @@ typedef struct s_node t_node *new_node(int type); t_node *new_pipe_node(t_node *left, t_node *right); -t_node *new_cmd_node(char **args, t_assign **assigns, - t_redirection redirs[2]); +t_node *new_cmd_node(char **args, t_redirection redirs[2]); t_node *new_string_node(char *string); void free_node(t_node *node); diff --git a/include/minishell.h b/include/minishell.h index 4f04682..6997b15 100644 --- a/include/minishell.h +++ b/include/minishell.h @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/22 17:14:49 by dkaiser #+# #+# */ -/* Updated: 2024/08/11 10:59:16 by dkaiser ### ########.fr */ +/* Updated: 2024/08/11 12:22:07 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,7 +34,6 @@ void repl(const char *prompt); t_list *parse(t_token *tokens); t_node *parse_cmd(t_token *tokens); t_redirection *collect_redirs(t_token **tokens); -t_assign **collect_assigns(t_token **tokens); void print_ast(t_node *ast); #endif diff --git a/src/collect_assigns.c b/src/collect_assigns.c deleted file mode 100644 index da43503..0000000 --- a/src/collect_assigns.c +++ /dev/null @@ -1,84 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* collect_assigns.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/08/02 13:54:36 by dkaiser #+# #+# */ -/* Updated: 2024/08/02 14:37:41 by dkaiser ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" -#include "token.h" - -static t_assign *to_assign(char *str); -static int count_tokens(t_token *tokens); -static int is_quote(char c); - -t_assign **collect_assigns(t_token **tokens) -{ - t_token *cur; - t_assign **result; - int i; - - result = malloc(sizeof(t_assign *) * (count_tokens(*tokens) + 1)); - if (result == NULL) - return (free_tokens(*tokens), NULL); - cur = *tokens; - i = 0; - while (cur != NULL && cur->type == STRING_TOKEN - && !is_quote(cur->content.string[0]) && ft_strchr(cur->content.string, - '=') != NULL) - { - result[i++] = to_assign(cur->content.string); - if (cur->next != NULL) - { - cur = cur->next; - free_token(cur->previous); - } - else - free_token(cur); - } - *tokens = cur; - result[i] = NULL; - return (result); -} - -static t_assign *to_assign(char *str) -{ - t_assign *result; - char *split_pos; - - split_pos = ft_strchr(str, '='); - *split_pos = '\0'; - result = malloc(sizeof(t_assign)); - if (result == NULL) - { - return (NULL); - } - result->var = str; - result->value = split_pos + 1; - return (result); -} - -static int count_tokens(t_token *tokens) -{ - int len; - - len = 0; - while (tokens != NULL && tokens->type == STRING_TOKEN - && !is_quote(tokens->content.string[0]) - && ft_strchr(tokens->content.string, '=') != NULL) - { - len++; - tokens = tokens->next; - } - return (len); -} - -static int is_quote(char c) -{ - return (c == '"' || c == '\''); -} diff --git a/src/free_node.c b/src/free_node.c index f387c0a..6eae059 100644 --- a/src/free_node.c +++ b/src/free_node.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/27 11:41:46 by dkaiser #+# #+# */ -/* Updated: 2024/08/02 13:28:47 by dkaiser ### ########.fr */ +/* Updated: 2024/08/11 12:26:20 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,6 @@ static void free_pipe_node(t_node *node); static void free_cmd_node(t_node *node); -static void free_assigns(t_assign **assigns); void free_node(t_node *node) { @@ -46,7 +45,6 @@ static void free_cmd_node(t_node *node) i++; } free(node->content.cmd.args); - free_assigns(node->content.cmd.assigns); if (node->content.cmd.redirs[0].type != 0 && node->content.cmd.redirs[0].specifier != NULL) free(node->content.cmd.redirs[0].specifier); @@ -54,19 +52,3 @@ static void free_cmd_node(t_node *node) && node->content.cmd.redirs[0].specifier != NULL) free(node->content.cmd.redirs[1].specifier); } - -static void free_assigns(t_assign **assigns) -{ - int i; - - i = 0; - if (assigns == 0) - return ; - while (assigns[i] != NULL) - { - free(assigns[i]->var); - free(assigns[i]); - i++; - } - free(assigns); -} diff --git a/src/new_node.c b/src/new_node.c index c2458d0..6da9f9e 100644 --- a/src/new_node.c +++ b/src/new_node.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/27 11:21:03 by dkaiser #+# #+# */ -/* Updated: 2024/07/22 14:25:03 by dkaiser ### ########.fr */ +/* Updated: 2024/08/11 12:22:45 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,7 +35,7 @@ t_node *new_pipe_node(t_node *left, t_node *right) return (node); } -t_node *new_cmd_node(char **args, t_assign **assigns, t_redirection redirs[2]) +t_node *new_cmd_node(char **args, t_redirection redirs[2]) { t_node *node; @@ -43,7 +43,6 @@ t_node *new_cmd_node(char **args, t_assign **assigns, t_redirection redirs[2]) if (node == NULL) return (NULL); node->content.cmd.args = args; - node->content.cmd.assigns = assigns; node->content.cmd.redirs[0] = redirs[0]; node->content.cmd.redirs[1] = redirs[1]; free(redirs); diff --git a/src/parse_cmd.c b/src/parse_cmd.c index eb70f0d..2755cae 100644 --- a/src/parse_cmd.c +++ b/src/parse_cmd.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/08 15:06:25 by dkaiser #+# #+# */ -/* Updated: 2024/08/11 12:14:11 by dkaiser ### ########.fr */ +/* Updated: 2024/08/11 12:20:06 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,13 +17,11 @@ static char **collect_args(t_token **tokens); t_node *parse_cmd(t_token *tokens) { char **args; - t_assign **assigns; t_redirection *redirs; redirs = collect_redirs(&tokens); - assigns = collect_assigns(&tokens); args = collect_args(&tokens); - return (new_cmd_node(args, assigns, redirs)); + return (new_cmd_node(args, redirs)); } static char **collect_args(t_token **tokens) diff --git a/src/print_ast.c b/src/print_ast.c index 94f813f..a511246 100644 --- a/src/print_ast.c +++ b/src/print_ast.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/22 15:16:53 by dkaiser #+# #+# */ -/* Updated: 2024/08/02 13:18:48 by dkaiser ### ########.fr */ +/* Updated: 2024/08/11 12:26:00 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,14 +49,6 @@ static void print_cmd_node(t_node *ast, int indent) printf(" '%s'", ast->content.cmd.args[i]); i++; } - i = 0; - printf("\n%*sASSIGNS:", indent + 2, ""); - while (ast->content.cmd.assigns[i] != NULL) - { - printf(" %s=%s", ast->content.cmd.assigns[i]->var, - ast->content.cmd.assigns[i]->value); - i++; - } printf("\n%*sREDIRS:", indent + 2, ""); printf("\n%*sIN: %d %s", indent + 4, "", ast->content.cmd.redirs[0].type, ast->content.cmd.redirs[0].specifier); |
