diff options
| author | nass1pro <nass1pro@gmail.com> | 2020-06-18 14:05:42 +0200 |
|---|---|---|
| committer | nass1pro <nass1pro@gmail.com> | 2020-06-18 14:05:42 +0200 |
| commit | 1e53dcdbd4f94a11a6d23687bc518fdd8aee0bd9 (patch) | |
| tree | 64c9fdfb2f9d055404d72160e9d0f679809e7426 /src/builtin/export.c | |
| parent | 70459a3ab97b13df9bf829e29ed91becfba1ea03 (diff) | |
| parent | 52bc3c1a6035dae4e45015c48a8c65681a31512a (diff) | |
| download | minishell-1e53dcdbd4f94a11a6d23687bc518fdd8aee0bd9.tar.gz minishell-1e53dcdbd4f94a11a6d23687bc518fdd8aee0bd9.tar.bz2 minishell-1e53dcdbd4f94a11a6d23687bc518fdd8aee0bd9.zip | |
Merge branch 'master' into parse_cmd
Diffstat (limited to 'src/builtin/export.c')
| -rw-r--r-- | src/builtin/export.c | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/src/builtin/export.c b/src/builtin/export.c index 1d362b3..c60d8f0 100644 --- a/src/builtin/export.c +++ b/src/builtin/export.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* export.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* By: charles <charles@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:11:34 by charles #+# #+# */ -/* Updated: 2020/04/03 12:11:38 by charles ### ########.fr */ +/* Updated: 2020/06/18 13:50:47 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,19 +15,35 @@ ** \brief `export` builtin */ +// modify existing +// set with no string without '=' +// TODO: multiple exported variable (e.g export A=a B=b C=c) + #include "minishell.h" int builtin_export(char **argv, t_env env) { - char *tmp; + char *temp; + size_t i; - // modify existing - // set with no string without '=' - if (ft_strchr(argv[1], '=') == NULL) - return (1); - if ((tmp = ft_strdup(argv[1])) == NULL) - return (2); - if (ft_vecinsert(env, env->size - 1, tmp) == NULL) - return (2); // internal error code - return (0); + (void)env; + if (argv[1] == NULL) + return (4); + if(ft_isdigit(argv[1][0])) + return(0); + i = 0; + temp = argv[1]; + while(temp[i] != '\0') + { + if(temp[i] == ' ' || ft_isalnum(temp[i]) == 0) + return(2); + if (temp[i] == '=') + { + temp[i] = '\0'; + env_export(env, temp, argv[1][i + 1]); + return(0); + } + i++; + } + return (3); } |
