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);
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to