diff options
author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-04-28 14:45:38 +0200 |
---|---|---|
committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-04-28 14:45:38 +0200 |
commit | 26debd1a134bfe6b4b400136c75b30d368a39252 (patch) | |
tree | fb16a6befac3470f6e45a139d4f99fb66cd6f469 /src/ft_b_cd.c | |
parent | Removed useless function made obsolete by subst_var_value (diff) | |
download | 42-minishell-26debd1a134bfe6b4b400136c75b30d368a39252.tar.gz 42-minishell-26debd1a134bfe6b4b400136c75b30d368a39252.tar.bz2 42-minishell-26debd1a134bfe6b4b400136c75b30d368a39252.tar.xz 42-minishell-26debd1a134bfe6b4b400136c75b30d368a39252.tar.zst 42-minishell-26debd1a134bfe6b4b400136c75b30d368a39252.zip |
Ok cd
Diffstat (limited to 'src/ft_b_cd.c')
-rw-r--r-- | src/ft_b_cd.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/ft_b_cd.c b/src/ft_b_cd.c index 7d4ef1a..e36d60c 100644 --- a/src/ft_b_cd.c +++ b/src/ft_b_cd.c @@ -14,6 +14,8 @@ #include <stdint.h> #include <unistd.h> +#include "ft_f_fail.h" +#include "ft_s_destroy.h" #include "ft_s_struct.h" #include "ft_u_utils.h" #include "ft_u_vars.h" @@ -41,22 +43,37 @@ uint8_t ft_b_cd(char *args[], t_msh *msh) { + /* TODO: norme */ const uint64_t argc = ft_get_argc((const char**)args); char *path; - if (argc == 0) + if (argc >= 2) { - path = ft_subst_var_value("$HOME", msh); - ft_printf("%s\n", path); + ft_fail_too_many_args("cd", msh); + return (1); + } + else if (argc == 0) + { + if (!(path = ft_subst_var_value("$HOME", msh))) + return (1); + } + else + { + if (!(path = ft_strdup(*args))) + { + ft_s_destroy(msh); + ft_fail_alloc(msh); + } } if (chdir(path) != 0) { - /* TODO: handle cd failed */ + ft_f_dump_errno("cd", msh); + ft_memdel((void*)&path); + return (1); } /* TODO: ft_switch_env_var() */ ft_memdel((void*)&msh->cwd); msh->cwd = getcwd(NULL, 0); ft_memdel((void*)&path); - /* TODO: finish cd */ return (0); } |