From e5393671a265e1c301c6c303f21f938c4cf9ca75 Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 2 Apr 2020 15:50:13 +0200 Subject: Evaluation pipe frame (not tested) --- src/env.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/env.c') diff --git a/src/env.c b/src/env.c index 66b4994..631c2b4 100644 --- a/src/env.c +++ b/src/env.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 09:21:24 by cacharle #+# #+# */ -/* Updated: 2020/04/01 23:09:33 by charles ### ########.fr */ +/* Updated: 2020/04/02 10:33:12 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,9 +32,9 @@ t_env env_from_array(char **envp) while (envp[i] != NULL) if (ft_strchr(envp[i++], '=') == NULL) return (NULL); - if ((env = ft_vecnew(i)) == NULL) + if ((env = ft_vecnew(i + 1)) == NULL) return (NULL); - env->size = i; + env->size = i + 1; i = 0; while (envp[i] != NULL) { @@ -45,6 +45,7 @@ t_env env_from_array(char **envp) } i++; } + env->data[i] = NULL; return (env); } -- cgit From c0e2ee28eedc1a9a886f9729a994d77738e2eb58 Mon Sep 17 00:00:00 2001 From: Charles Date: Fri, 3 Apr 2020 15:13:08 +0200 Subject: Refactoring env, connecting pipes, preprocess draft --- src/env.c | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) (limited to 'src/env.c') diff --git a/src/env.c b/src/env.c index 631c2b4..d402a1b 100644 --- a/src/env.c +++ b/src/env.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 09:21:24 by cacharle #+# #+# */ -/* Updated: 2020/04/02 10:33:12 by charles ### ########.fr */ +/* Updated: 2020/04/03 14:25:31 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ #include "minishell.h" +#define ENV_VEC_DEFAULT_SIZE 64 + /* ** \brief Convert array of string to environment hash table ** \param envp array of string (each in the format `name=value`) @@ -25,28 +27,22 @@ t_env env_from_array(char **envp) { + char *tmp; t_env env; - size_t i; - i = 0; - while (envp[i] != NULL) - if (ft_strchr(envp[i++], '=') == NULL) - return (NULL); - if ((env = ft_vecnew(i + 1)) == NULL) + if ((env = ft_vecnew(ENV_VEC_DEFAULT_SIZE)) == NULL) return (NULL); - env->size = i + 1; - i = 0; - while (envp[i] != NULL) + while (*envp != NULL) { - if ((env->data[i] = ft_strdup(envp[i])) == NULL) + if ((tmp = ft_strdup(*envp)) == NULL || + ft_vecpush(env, tmp) == NULL) { ft_vecdestroy(env, free); return (NULL); } - i++; + envp++; } - env->data[i] = NULL; - return (env); + return (ft_vecpush(env, NULL)); } /** @@ -69,3 +65,20 @@ char *env_search(t_env env, char *key) } return (NULL); } + +char *env_match_first(t_env env, const char *haystack) +{ + int len; + size_t i; + + len = -1; + while (ft_isalnum(haystack[len]) || haystack[len] == '_') + len++; + while (i < env->size) + { + if (ft_strncmp((char*)env->data[i], haystack, len) == 0) + return (ft_strchr((char*)env->data[i], '=') + 1); + i++; + } + return (NULL); +} -- cgit From db122618b7dd0e1c2b9432e3f470c880e0d4422e Mon Sep 17 00:00:00 2001 From: Charles Date: Sat, 4 Apr 2020 19:11:05 +0200 Subject: Glob logic mainly done --- src/env.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/env.c') diff --git a/src/env.c b/src/env.c index d402a1b..f00d046 100644 --- a/src/env.c +++ b/src/env.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 09:21:24 by cacharle #+# #+# */ -/* Updated: 2020/04/03 14:25:31 by charles ### ########.fr */ +/* Updated: 2020/04/04 13:33:42 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,15 +27,13 @@ t_env env_from_array(char **envp) { - char *tmp; t_env env; if ((env = ft_vecnew(ENV_VEC_DEFAULT_SIZE)) == NULL) return (NULL); while (*envp != NULL) { - if ((tmp = ft_strdup(*envp)) == NULL || - ft_vecpush(env, tmp) == NULL) + if (ft_vecpush_safe(env, ft_strdup(*envp)) == NULL) { ft_vecdestroy(env, free); return (NULL); -- cgit From 4aeba6d2f03706fa21281709a138a7d3ea9797dc Mon Sep 17 00:00:00 2001 From: Charles Date: Sun, 5 Apr 2020 15:04:23 +0200 Subject: Preprocessing (glob and iterpolation) draft (not tested) --- src/env.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/env.c') diff --git a/src/env.c b/src/env.c index f00d046..41aca6d 100644 --- a/src/env.c +++ b/src/env.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 09:21:24 by cacharle #+# #+# */ -/* Updated: 2020/04/04 13:33:42 by charles ### ########.fr */ +/* Updated: 2020/04/05 14:42:38 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,6 +50,7 @@ t_env env_from_array(char **envp) ** \return Value after '=' in environment variable array or NULL if not found */ +// could be a wrapper around ft_lfind char *env_search(t_env env, char *key) { size_t i; @@ -64,12 +65,14 @@ char *env_search(t_env env, char *key) return (NULL); } -char *env_match_first(t_env env, const char *haystack) +char *env_search_first_match(t_env env, const char *haystack) { int len; size_t i; - len = -1; + if (ft_isdigit(*haystack)) + return (NULL); + len = 0; while (ft_isalnum(haystack[len]) || haystack[len] == '_') len++; while (i < env->size) -- cgit