/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* cd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/20 14:27:36 by erey-bet #+# #+# */ /* Updated: 2023/04/18 13:22:22 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "./builtins_private.h" int make_move(char *path, t_list **env) { char *join; char *old; join = ft_strjoin("/", path); join = ft_strfjoin(get_pwd(), join); old = get_pwd(); if (chdir(join) == 0) { set_value_by_key("OLDPWD", old, env); set_value_by_key("PWD", get_pwd(), env); free(join); return (0); } free(old); free(join); write(2, "cd: No such file or directory\n", 30); return (1); } int move_folder(char **args, t_list **env) { char *path; char *old; if (args[0] == NULL || args[1] != NULL) { write(2, "cd: Wrong number's argument\n", 28); return (1); } path = args[0]; if (path[0] == '/' || ft_strncmp(path, "..", ft_strlen(path)) == 0) { old = get_pwd(); if (chdir(path) == 0) { set_value_by_key("OLDPWD", old, env); set_value_by_key("PWD", get_pwd(), env); return (0); } free(old); write(2, "cd: No such file or directory\n", 30); return (1); } else return (make_move(path, env)); }