aboutsummaryrefslogtreecommitdiff
path: root/src/parse_cmd.c
diff options
context:
space:
mode:
authorcuhlig2024-12-17 15:22:32 +0100
committerGitHub2024-12-17 15:22:32 +0100
commita93558047c6d04ca4181fa84229d82b09dd7def2 (patch)
treea0b67075c625731e1e1d526db46eb5dec81b5616 /src/parse_cmd.c
parent8cbba6da72ddd04e358bdb893e700702f92adacd (diff)
parentae5512ea0d6d8be833ca3a9b39f93239109f45b4 (diff)
downloadminishell-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.c52
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);
+}