/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* cd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/12/04 19:31:19 by lperrey #+# #+# */ /* Updated: 2021/12/05 16:21:41 by lperrey ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" int builtin_cd(int argc, char *argv[], t_all *c) { char *tmp; if (argc == 2) tmp = argv[1]; else if (argc < 2) { tmp = getenv("HOME"); if (!tmp) return (shell_error("cd: ", "HOME not set", "", EXIT_FAILURE)); } else if (argc > 2) return (shell_error("cd: ", "too many arguments", "", EXIT_FAILURE)); if (chdir(tmp) == -1) return (shell_perror("cd: ", tmp, ": ", EXIT_FAILURE)); tmp = init_prompt(c->prompt_base); if (!tmp) return (ft_reti_perror(EXIT_FAILURE, "builtin_cd, init_prompt()")); free(c->prompt); c->prompt = tmp; return (EXIT_SUCCESS); }