aboutsummaryrefslogtreecommitdiff
path: root/src/builtin/cd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/builtin/cd.c')
-rw-r--r--src/builtin/cd.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/src/builtin/cd.c b/src/builtin/cd.c
index d7115e5..de1eeb9 100644
--- a/src/builtin/cd.c
+++ b/src/builtin/cd.c
@@ -6,7 +6,7 @@
/* By: charles <charles@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:10:20 by charles #+# #+# */
-/* Updated: 2020/07/19 19:05:25 by charles ### ########.fr */
+/* Updated: 2020/09/12 11:09:49 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -19,35 +19,26 @@
int builtin_cd(char **argv, t_env env)
{
- char buf[PATH_MAX];
+ char buf[PATH_MAX + 1];
char *home;
(void)env;
if (argv[1] != NULL && argv[2] != NULL)
- {
- errorf("cd: too many arguments\n");
- return (1);
- }
+ return (errorf_ret(1, "cd: too many arguments\n"));
if (argv[1] != NULL && argv[1][0] == '\0')
return (0);
if (argv[1] == NULL)
{
if ((home = env_search(env, "HOME")) == NULL)
- {
- errorf("cd: HOME not set\n");
- return (1);
- }
+ return (errorf_ret(1, "cd: HOME not set\n"));
argv[1] = home;
}
errno = 0;
if (chdir(argv[1]) == -1)
- {
- errorf("cd: %s: %s\n", argv[1], strerror(errno));
- return (1);
- }
- if (!(getcwd(buf, PATH_MAX)))
+ return (errorf_ret(1, "cd: %s: %s\n", argv[1], strerror(errno)));
+ if (getcwd(buf, PATH_MAX) == NULL)
return (1);
if (env_export(env, "PWD", buf) == NULL)
- return (2); // FIXME malloc error recognition in builtins and cmd
+ return (EVAL_FATAL);
return (0);
}