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>