svn commit: r218323 - in head: bin/sh
tools/regression/bin/sh/execution
Jilles Tjoelker
jilles at FreeBSD.org
Sat Feb 5 14:01:46 UTC 2011
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 .
More information about the svn-src-head
mailing list