diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2020-09-09 18:24:53 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2020-09-09 18:24:53 +0200 |
| commit | c8c72449733f064f86b8a7c0b1284b6196fff0e3 (patch) | |
| tree | e347b900dd39c7518c37564058494ab8a0a59e23 /src/eval/variable.c | |
| parent | 4238485a4e26a9d15541708bfc38bfede9bbe7d2 (diff) | |
| download | minishell-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.c | 42 |
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)); +} |
