From a11ff2a0a3ea31ce992ccc9b3556def87703cbf5 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 30 Sep 2020 17:15:45 +0200 Subject: Update --- src/b_cd.c | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) (limited to 'src/b_cd.c') diff --git a/src/b_cd.c b/src/b_cd.c index 0e497aa..6bfd218 100644 --- a/src/b_cd.c +++ b/src/b_cd.c @@ -24,8 +24,7 @@ #include "u_vars.h" #include "u_vars_next.h" -static void - b_set_oldpwd(t_msh *msh) +static void b_set_oldpwd(t_msh *msh) { char pwd[PATH_MAX]; char tmp[PATH_MAX]; @@ -47,39 +46,36 @@ static void } } -static void - b_fill_repath(char repath[], - char *splited[]) +static void b_fill_repath(char rpath[], char *splited[]) { size_t i; size_t j; i = 0; - repath[0] = (splited[0] == NULL) ? '/' : repath[0]; + rpath[0] = (splited[0] == NULL) ? '/' : rpath[0]; while (splited[i] != NULL) { if (ft_strncmp(splited[i], "..", 3) == 0) { - j = (repath[0] == '\0') ? (0) : (ft_strlen(repath)); - while (repath[j] != '/' && j > 0) + j = (rpath[0] == '\0') ? (0) : (ft_strlen(rpath)); + while (rpath[j] != '/' && j > 0) j--; - repath[j] = '\0'; + rpath[j] = '\0'; } else if (ft_strncmp(splited[i], ".", 2) == 0) { } else { - j = (ft_strncmp(repath, "/", 2) == 0) ? (1) : (ft_strlen(repath) + 1); - repath[j - 1] = '/'; - ft_strlcpy(repath + j, splited[i], ft_strlen(splited[i]) + 1); + j = (ft_strncmp(rpath, "/", 2) == 0) ? (1) : (ft_strlen(rpath) + 1); + rpath[j - 1] = '/'; + ft_strlcpy(rpath + j, splited[i], ft_strlen(splited[i]) + 1); } i++; } } -static void - b_upgrade_pwd(const char path[], t_msh *msh) +static void b_upgrade_pwd(const char path[], t_msh *msh) { char **splited; char repath[262144]; @@ -107,22 +103,18 @@ static void f_alloc_and_destroy_msh(msh); } -uint8_t - b_cd(char *args[], - t_msh *msh) +uint8_t b_cd(char *args[], t_msh *msh) { const uint64_t argc = u_builtins_get_argc((const char**)args); char path[PATH_MAX]; if (argc >= 2) - { f_fail_too_many_args("cd", msh); + if (argc >= 2) return (1); - } else if (argc == 0) { - u_get_var_value(path, "$HOME", PATH_MAX, msh); - if (path[0] == C_NUL) + if (u_get_var_value(path, "$HOME", PATH_MAX, msh) == 1) { ft_dprintf(STDERR_FILENO, "minishell: cd: %s\n", FT_FAIL_HOME_NOT_SET); -- cgit v1.2.3