Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Feb 2011 14: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: r218323 - in head: bin/sh tools/regression/bin/sh/execution
Message-ID:  <201102051401.p15E1kgm029779@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Sat Feb  5 14:01:46 2011
New Revision: 218323
URL: http://svn.freebsd.org/changeset/base/218323

Log:
  sh: Forget all cached command locations on any PATH change.
  
  POSIX requires this and it is simpler than the previous code that remembered
  command locations when appending directories to PATH.
  
  In particular,
    PATH=$PATH
  is no longer a no-op but discards all cached command locations.

Added:
  head/tools/regression/bin/sh/execution/hash1.0   (contents, props changed)
Modified:
  head/bin/sh/exec.c

Modified: head/bin/sh/exec.c
==============================================================================
--- head/bin/sh/exec.c	Sat Feb  5 13:07:35 2011	(r218322)
+++ head/bin/sh/exec.c	Sat Feb  5 14:01:46 2011	(r218323)
@@ -494,30 +494,7 @@ hashcd(void)
 void
 changepath(const char *newval)
 {
-	const char *old, *new;
-	int idx;
-	int firstchange;
-
-	old = pathval();
-	new = newval;
-	firstchange = 9999;	/* assume no change */
-	idx = 0;
-	for (;;) {
-		if (*old != *new) {
-			firstchange = idx;
-			if ((*old == '\0' && *new == ':')
-			 || (*old == ':' && *new == '\0'))
-				firstchange++;
-			old = new;	/* ignore subsequent differences */
-		}
-		if (*new == '\0')
-			break;
-		if (*new == ':') {
-			idx++;
-		}
-		new++, old++;
-	}
-	clearcmdentry(firstchange);
+	clearcmdentry(0);
 }
 
 

Added: head/tools/regression/bin/sh/execution/hash1.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/tools/regression/bin/sh/execution/hash1.0	Sat Feb  5 14:01:46 2011	(r218323)
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit
+trap 'rm -rf "${T}"' 0
+PATH=$T:$PATH
+ls -ld . >/dev/null
+cat <<EOF >"$T/ls"
+:
+EOF
+chmod 755 "$T/ls"
+PATH=$PATH
+ls -ld .



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