Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 May 2011 20:01:46 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r222381 - in head: bin/sh tools/regression/bin/sh/builtins
Message-ID:  <201105272001.p4RK1kmN050584@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Fri May 27 20:01:46 2011
New Revision: 222381
URL: http://svn.freebsd.org/changeset/base/222381

Log:
  sh: Correct criterion for using CDPATH in cd.
  
  CDPATH should be ignored not only for pathnames starting with '/' but also
  for pathnames whose first component is '.' or '..'.
  
  The man page already describes this behaviour.

Added:
  head/tools/regression/bin/sh/builtins/cd6.0   (contents, props changed)
  head/tools/regression/bin/sh/builtins/cd7.0   (contents, props changed)
Modified:
  head/bin/sh/cd.c

Modified: head/bin/sh/cd.c
==============================================================================
--- head/bin/sh/cd.c	Fri May 27 19:57:58 2011	(r222380)
+++ head/bin/sh/cd.c	Fri May 27 20:01:46 2011	(r222381)
@@ -123,7 +123,10 @@ cdcmd(int argc, char **argv)
 		else
 			dest = ".";
 	}
-	if (*dest == '/' || (path = bltinlookup("CDPATH", 1)) == NULL)
+	if (dest[0] == '/' ||
+	    (dest[0] == '.' && (dest[1] == '/' || dest[1] == '\0')) ||
+	    (dest[0] == '.' && dest[1] == '.' && (dest[2] == '/' || dest[2] == '\0')) ||
+	    (path = bltinlookup("CDPATH", 1)) == NULL)
 		path = nullstr;
 	while ((p = padvance(&path, dest)) != NULL) {
 		if (stat(p, &statb) >= 0 && S_ISDIR(statb.st_mode)) {

Added: head/tools/regression/bin/sh/builtins/cd6.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/tools/regression/bin/sh/builtins/cd6.0	Fri May 27 20:01:46 2011	(r222381)
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+set -e
+cd -P /bin
+d=$PWD
+CDPATH=/:
+cd -P .
+[ "$d" = "$PWD" ]
+cd -P ./
+[ "$d" = "$PWD" ]

Added: head/tools/regression/bin/sh/builtins/cd7.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/tools/regression/bin/sh/builtins/cd7.0	Fri May 27 20:01:46 2011	(r222381)
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+set -e
+cd /usr/bin
+[ "$PWD" = /usr/bin ]
+CDPATH=/:
+cd .
+[ "$PWD" = /usr/bin ]
+cd ./
+[ "$PWD" = /usr/bin ]
+cd ..
+[ "$PWD" = /usr ]
+cd /usr/bin
+cd ../
+[ "$PWD" = /usr ]



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105272001.p4RK1kmN050584>