diff options
| author | Dominik Kaiser | 2025-01-20 20:14:32 +0100 |
|---|---|---|
| committer | GitHub | 2025-01-20 20:14:32 +0100 |
| commit | bd8c817797d5f2b1affe6957ffc51846a38e70ec (patch) | |
| tree | 2fc0f567b1c4f2f168a931ad0bff69e52c6c226c /src/parse_cmd.c | |
| parent | a9aba07b52cbf98eb9c52cd8ee0cd5f5021d2931 (diff) | |
| parent | dc6a4f2d0de92984c2584ef905011e2a60792850 (diff) | |
| download | minishell-bd8c817797d5f2b1affe6957ffc51846a38e70ec.tar.gz minishell-bd8c817797d5f2b1affe6957ffc51846a38e70ec.zip | |
Merge interpreter changes into main
Miau
Diffstat (limited to 'src/parse_cmd.c')
| -rw-r--r-- | src/parse_cmd.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/parse_cmd.c b/src/parse_cmd.c index 2755cae..6505384 100644 --- a/src/parse_cmd.c +++ b/src/parse_cmd.c @@ -3,32 +3,42 @@ /* ::: :::::::: */ /* parse_cmd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/08 15:06:25 by dkaiser #+# #+# */ -/* Updated: 2024/08/11 12:20:06 by dkaiser ### ########.fr */ +/* Updated: 2025/01/20 19:09:21 by chuhlig ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -static char **collect_args(t_token **tokens); +static char **collect_args(t_token **tokens, t_env **env); -t_node *parse_cmd(t_token *tokens) +t_node *parse_cmd(t_token *tokens, t_env **env) { char **args; t_redirection *redirs; + t_list *create_files; - redirs = collect_redirs(&tokens); - args = collect_args(&tokens); - return (new_cmd_node(args, redirs)); + create_files = NULL; + redirs = collect_redirs(&tokens, *env, &create_files); + if (redirs == NULL) + return (NULL); + args = collect_args(&tokens, env); + if (args == NULL) + { + free(redirs); + return (NULL); + } + return (new_cmd_node(args, redirs, create_files)); } -static char **collect_args(t_token **tokens) +static char **collect_args(t_token **tokens, t_env **env) { t_token *cur; char **result; int i; + t_token *next; cur = *tokens; i = 0; @@ -41,11 +51,12 @@ static char **collect_args(t_token **tokens) i = 0; while (cur != NULL && cur->type == STRING_TOKEN) { + next = cur->next; if (cur->previous) free_token(cur->previous); - result[i] = cur->content.string; + result[i] = format_string(cur->content.string, *env, ft_atoi("0")); i++; - cur = cur->next; + cur = next; } result[i] = NULL; return (result); |
