diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/builtin/cd.c | 15 | ||||
| -rw-r--r-- | src/builtin/export.c | 40 | ||||
| -rw-r--r-- | src/builtin/unset.c | 6 |
3 files changed, 41 insertions, 20 deletions
diff --git a/src/builtin/cd.c b/src/builtin/cd.c index ed0b3cc..cdcdaa4 100644 --- a/src/builtin/cd.c +++ b/src/builtin/cd.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* cd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* By: charles <charles@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:10:20 by charles #+# #+# */ -/* Updated: 2020/04/03 12:11:52 by charles ### ########.fr */ +/* Updated: 2020/06/17 12:36:29 by nahaddac ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,11 +19,16 @@ int builtin_cd(char **argv, t_env env) { - //change $PWD + char buf[PATH_MAX]; + (void)env; if (argv[1] == NULL) return (1); - if (chdir(argv[1]) == -1) - return (1); + if (chdir(argv[1]) != -1) + { + if (!(getcwd(buf, PATH_MAX))) + return(1); + env_export(env, "PWD", buf); + } return (0); } 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); } diff --git a/src/builtin/unset.c b/src/builtin/unset.c index 146b755..b1e2d5b 100644 --- a/src/builtin/unset.c +++ b/src/builtin/unset.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* unset.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* By: charles <charles@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:10:51 by charles #+# #+# */ -/* Updated: 2020/04/02 11:17:03 by charles ### ########.fr */ +/* Updated: 2020/06/17 12:41:45 by nahaddac ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ int builtin_unset(char **argv, t_env env) i = 0; while (i < env->size) { - if (ft_strncmp(env->data[i], argv[1], ft_strlen(argv[1])) == 0) + if (env_keycmp(env->data[i],argv[1]) == 0) { ft_vecremove(env, i, free); return (0); |
