diff options
| author | cuhlig | 2024-12-17 15:22:32 +0100 |
|---|---|---|
| committer | GitHub | 2024-12-17 15:22:32 +0100 |
| commit | a93558047c6d04ca4181fa84229d82b09dd7def2 (patch) | |
| tree | a0b67075c625731e1e1d526db46eb5dec81b5616 /src/parse_cmd.c | |
| parent | 8cbba6da72ddd04e358bdb893e700702f92adacd (diff) | |
| parent | ae5512ea0d6d8be833ca3a9b39f93239109f45b4 (diff) | |
| download | minishell-a93558047c6d04ca4181fa84229d82b09dd7def2.tar.gz minishell-a93558047c6d04ca4181fa84229d82b09dd7def2.zip | |
Merge branch 'main' into bugfix-tokenizer
Diffstat (limited to 'src/parse_cmd.c')
| -rw-r--r-- | src/parse_cmd.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/parse_cmd.c b/src/parse_cmd.c new file mode 100644 index 0000000..2755cae --- /dev/null +++ b/src/parse_cmd.c @@ -0,0 +1,52 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse_cmd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/07/08 15:06:25 by dkaiser #+# #+# */ +/* Updated: 2024/08/11 12:20:06 by dkaiser ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +static char **collect_args(t_token **tokens); + +t_node *parse_cmd(t_token *tokens) +{ + char **args; + t_redirection *redirs; + + redirs = collect_redirs(&tokens); + args = collect_args(&tokens); + return (new_cmd_node(args, redirs)); +} + +static char **collect_args(t_token **tokens) +{ + t_token *cur; + char **result; + int i; + + cur = *tokens; + i = 0; + while (cur != NULL && ++i) + cur = cur->next; + result = malloc(sizeof(char *) * (i + 1)); + if (result == NULL) + return (free_tokens(*tokens), NULL); + cur = *tokens; + i = 0; + while (cur != NULL && cur->type == STRING_TOKEN) + { + if (cur->previous) + free_token(cur->previous); + result[i] = cur->content.string; + i++; + cur = cur->next; + } + result[i] = NULL; + return (result); +} |
