svn commit: r215727 - head/bin/sh
Jilles Tjoelker
jilles at FreeBSD.org
Mon Nov 22 23:49:06 UTC 2010
Author: jilles
Date: Mon Nov 22 23:49:06 2010
New Revision: 215727
URL: http://svn.freebsd.org/changeset/base/215727
Log:
sh: Fix confusing behaviour if chdir succeeded but getcwd failed in cd -P.
If getcwd fails, do not treat this as an error, but print a warning and
unset PWD. This is similar to the behaviour when starting the shell in a
directory whose name cannot be determined.
Modified:
head/bin/sh/cd.c
Modified: head/bin/sh/cd.c
==============================================================================
--- head/bin/sh/cd.c Mon Nov 22 23:35:29 2010 (r215726)
+++ head/bin/sh/cd.c Mon Nov 22 23:49:06 2010 (r215727)
@@ -219,10 +219,13 @@ cdphysical(char *dest)
char *p;
INTOFF;
- if (chdir(dest) < 0 || (p = findcwd(NULL)) == NULL) {
+ if (chdir(dest) < 0) {
INTON;
return (-1);
}
+ p = findcwd(NULL);
+ if (p == NULL)
+ out2fmt_flush("cd: warning: failed to get name of current directory\n");
updatepwd(p);
INTON;
return (0);
@@ -304,7 +307,7 @@ updatepwd(char *dir)
if (prevdir)
ckfree(prevdir);
prevdir = curdir;
- curdir = savestr(dir);
+ curdir = dir ? savestr(dir) : NULL;
setvar("PWD", curdir, VEXPORT);
setvar("OLDPWD", prevdir, VEXPORT);
}
More information about the svn-src-head
mailing list