summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2009-12-31 17:44:24 +0000
committerjilles <jilles@FreeBSD.org>2009-12-31 17:44:24 +0000
commit9f56916a97d5af44789eba5f567e44a49dbec53c (patch)
treeced57aab1f0f22eec1c1982336d0fcd7e9609583
parent8e6aa134e5ad932e4809cecaf9117c734ef3a9c7 (diff)
downloadFreeBSD-src-9f56916a97d5af44789eba5f567e44a49dbec53c.zip
FreeBSD-src-9f56916a97d5af44789eba5f567e44a49dbec53c.tar.gz
sh: Use PATH= assignment in type.
Example: PATH=/var/empty; PATH=/bin type ls
-rw-r--r--bin/sh/exec.c2
-rw-r--r--tools/regression/bin/sh/builtins/type2.026
2 files changed, 27 insertions, 1 deletions
diff --git a/bin/sh/exec.c b/bin/sh/exec.c
index 02cf91e..c9f9a26 100644
--- a/bin/sh/exec.c
+++ b/bin/sh/exec.c
@@ -838,5 +838,5 @@ typecmd_impl(int argc, char **argv, int cmd, const char *path)
int
typecmd(int argc, char **argv)
{
- return typecmd_impl(argc, argv, TYPECMD_TYPE, pathval());
+ return typecmd_impl(argc, argv, TYPECMD_TYPE, bltinlookup("PATH", 1));
}
diff --git a/tools/regression/bin/sh/builtins/type2.0 b/tools/regression/bin/sh/builtins/type2.0
new file mode 100644
index 0000000..fe44d95
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/type2.0
@@ -0,0 +1,26 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+ if ! eval "$*"; then
+ echo "Failed: $*"
+ : $((failures += 1))
+ fi
+}
+
+check 'PATH=/libexec type ld-elf.so.1 >/dev/null'
+check '! PATH=/libexec type ls 2>/dev/null'
+
+PATH=/libexec:$PATH
+
+check 'type ld-elf.so.1 >/dev/null'
+
+PATH=/libexec
+
+check 'type ld-elf.so.1 >/dev/null'
+check '! type ls 2>/dev/null'
+check 'PATH=/bin type ls >/dev/null'
+check '! PATH=/bin type ld-elf.so.1 2>/dev/null'
+
+exit $((failures > 0))
OpenPOWER on IntegriCloud