aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Kaiser2024-08-11 12:27:02 +0200
committerDominik Kaiser2024-08-11 12:27:02 +0200
commit99e8655aaf9827c7d5248c7f3d0913fcb1377cfb (patch)
treefcfc4288ea38348d707ad549cd4fa04c49a446b7
parentf53acc629b1b3e7f4097eef1e26841ef0b9b24c6 (diff)
downloadminishell-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--Makefile2
-rw-r--r--include/ast.h12
-rw-r--r--include/minishell.h3
-rw-r--r--src/collect_assigns.c84
-rw-r--r--src/free_node.c20
-rw-r--r--src/new_node.c5
-rw-r--r--src/parse_cmd.c6
-rw-r--r--src/print_ast.c10
8 files changed, 10 insertions, 132 deletions
diff --git a/Makefile b/Makefile
index d4778bf..827c317 100644
--- a/Makefile
+++ b/Makefile
@@ -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);