aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/msh.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/shell/msh.c b/shell/msh.c
index a2da540b3..968f073cd 100644
--- a/shell/msh.c
+++ b/shell/msh.c
@@ -3157,12 +3157,15 @@ static int dochdir(struct op *t)
3157 cp = t->words[1]; 3157 cp = t->words[1];
3158 if (cp == NULL) { 3158 if (cp == NULL) {
3159 cp = homedir->value; 3159 cp = homedir->value;
3160 if (cp == NULL) 3160 if (cp != NULL)
3161 er = ": no home directory"; 3161 goto do_cd;
3162 } else if (chdir(cp) < 0) 3162 er = ": no home directory";
3163 } else {
3164 do_cd:
3165 if (chdir(cp) >= 0)
3166 return 0;
3163 er = ": bad directory"; 3167 er = ": bad directory";
3164 else 3168 }
3165 return 0;
3166 prs(cp != NULL ? cp : "cd"); 3169 prs(cp != NULL ? cp : "cd");
3167 err(er); 3170 err(er);
3168 return 1; 3171 return 1;