aboutsummaryrefslogtreecommitdiff
path: root/src/eval/variable.c
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-09-09 18:24:53 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-09-09 18:24:53 +0200
commitc8c72449733f064f86b8a7c0b1284b6196fff0e3 (patch)
treee347b900dd39c7518c37564058494ab8a0a59e23 /src/eval/variable.c
parent4238485a4e26a9d15541708bfc38bfede9bbe7d2 (diff)
downloadminishell-c8c72449733f064f86b8a7c0b1284b6196fff0e3.tar.gz
minishell-c8c72449733f064f86b8a7c0b1284b6196fff0e3.tar.bz2
minishell-c8c72449733f064f86b8a7c0b1284b6196fff0e3.zip
Re Added cmd variable
Diffstat (limited to 'src/eval/variable.c')
-rw-r--r--src/eval/variable.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/eval/variable.c b/src/eval/variable.c
new file mode 100644
index 0000000..2b6d7cf
--- /dev/null
+++ b/src/eval/variable.c
@@ -0,0 +1,42 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* variable.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <me@cacharle.xyz> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/09/09 17:12:14 by charles #+# #+# */
+/* Updated: 2020/09/09 18:22:43 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "eval.h"
+
+bool variable_extract(t_tok_lst **argv, t_env env, t_env env_local)
+{
+ char *key;
+ t_tok_lst *value_tokens;
+ char **strs;
+
+ if (*argv == NULL || !((*argv)->tag & TAG_STR)
+ || !utils_start_with_valid_identifier((*argv)->content))
+ return (true);
+
+ key = (*argv)->content;
+ (*argv)->content = ft_strchr(key, '=');
+ *(*argv)->content = '\0';
+ (*argv)->content++;
+ (*argv)->content = ft_strdup((*argv)->content);
+
+ /* printf("|%s| |%s|\n", key, (*argv)->content); */
+ /* if (*(*argv)->content == '\0') */
+ /* { */
+ /* ft_lstpop_front((t_ftlst**)argv, NULL); */
+ /* return (true); */
+ /* } */
+ value_tokens = tok_lst_take_sticked(argv);
+ strs = preprocess(&value_tokens, env);
+ if (env_export(env_local, key, strs[0]) == NULL)
+ return (false);
+ return (variable_extract(argv, env, env_local));
+}