summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmmv <jmmv@FreeBSD.org>2014-03-09 17:04:31 +0000
committerjmmv <jmmv@FreeBSD.org>2014-03-09 17:04:31 +0000
commit80efbcbbcda6a5c59a21cb9628b2fd0573697dfe (patch)
tree2eed051c6d4bc448ea3f0f646cd5dbe45f87974c
parentf3010cfb7d9dbb4553d0cfa508ec09190a32fc7a (diff)
downloadFreeBSD-src-80efbcbbcda6a5c59a21cb9628b2fd0573697dfe.zip
FreeBSD-src-80efbcbbcda6a5c59a21cb9628b2fd0573697dfe.tar.gz
Sync sh(1) in stable/10 to head.
This is a MFC of all the commits listed below. My original goal of this change was to only merge the move of the tests from tools/regression/bin/ into the new layout (which include tests for sh(1) and other tools as well). However, doing so is tricky due to the ongoing work in sh(1) and, especially, the many changes to its tests since stable/10 was first branched. Merging everything is the simplest way to achieve this goal and, as a bonus point, we get various fixes and miscellaneous improvements into the branch. Per jilles' suggestion, I'm avoiding the merge of a couple of changes (r256850 and r257506) that required depending kernel changes. I'm also avoiding very recent changes that have not had a long enough time to be validated in current. This is "make tinderbox" clean. r256735 sh: Remove one syscall when waiting for a foreground job. r257399 sh: Allow trapping SIGINT/SIGQUIT after ignore because of '&'. r257504 sh: Reorder union node to reduce its size on 64-bit platforms. r257920 sh: Add a test case for would-be assignments that are not due to quoting. r257929 sh: Properly quote alias output from command -v. r258489 sh: Add tests for the </dev/null implicit in a background command. r258533 sh: Add more tests for the </dev/null implicit in a background command. r258535 sh: Make <&0 disable the </dev/null implicit in a background command. r258776 sh: Prefer memcpy() to strcpy() in most cases. Remove the scopy macro. r259047 sh: Split set -x output into a separate function. r259210 Migrate tools/regression/bin/ tests to the new layout. r259844 sh: Remove an unused variable. r259846 sh: Initialize OPTIND=1 even if it came from the environment. r259874 sh: Simplify code related to PPID variable. r259946 sh: Don't check input for non-whitespace if history is disabled. r260246 sh(1): Discourage use of -e. r260506 Run the sh(1) and test(1) tests as unprivileged. r260586 Mark the bin/pax tests as requiring perl. r260634 Use TAP_TESTS_PERL to register the legacy_test in bin/pax. r260635 Replace hand-crafted Kyuafiles with automatic generation. r260654 sh: Remove SIGWINCH handler and just check for resize before every read. r261121 sh: Add test for nested alias. r261125 sh: Solve the alias recursion problem in a less hackish way. r261141 sh: Do not depend on parse/execute split in new alias test. r261160 sh: Add tests for alias names after another alias. r261192 sh: Allow aliases to force alias substitution on the following word. r262533 sh: Make expari() static. r262565 sh: Do not corrupt internal representation if LINENO inner expansion fails. r262697 sh: Simplify expari(). Reviewed by: jilles
-rw-r--r--bin/Makefile4
-rw-r--r--bin/date/Makefile6
-rw-r--r--bin/date/tests/Makefile9
-rw-r--r--bin/date/tests/legacy_test.sh (renamed from tools/regression/bin/date/regress.sh)0
-rw-r--r--bin/mv/Makefile6
-rw-r--r--bin/mv/tests/Makefile9
-rw-r--r--bin/mv/tests/legacy_test.sh (renamed from tools/regression/bin/mv/regress.sh)0
-rw-r--r--bin/pax/Makefile6
-rw-r--r--bin/pax/tests/Makefile9
-rw-r--r--[-rwxr-xr-x]bin/pax/tests/legacy_test.pl (renamed from tools/regression/bin/pax/regress.t)2
-rw-r--r--bin/sh/Makefile7
-rw-r--r--bin/sh/alias.c44
-rw-r--r--bin/sh/cd.c12
-rw-r--r--bin/sh/eval.c75
-rw-r--r--bin/sh/exec.c22
-rw-r--r--bin/sh/expand.c111
-rw-r--r--bin/sh/expand.h1
-rw-r--r--bin/sh/input.c37
-rw-r--r--bin/sh/jobs.c3
-rw-r--r--bin/sh/memalloc.c6
-rw-r--r--bin/sh/mystring.c5
-rw-r--r--bin/sh/mystring.h1
-rw-r--r--bin/sh/nodetypes6
-rw-r--r--bin/sh/parser.c6
-rw-r--r--bin/sh/parser.h1
-rw-r--r--bin/sh/redir.c9
-rw-r--r--bin/sh/sh.124
-rw-r--r--bin/sh/show.c4
-rw-r--r--bin/sh/tests/Makefile18
-rw-r--r--bin/sh/tests/builtins/Makefile148
-rw-r--r--bin/sh/tests/builtins/alias.0 (renamed from tools/regression/bin/sh/builtins/alias.0)0
-rw-r--r--bin/sh/tests/builtins/alias.0.stdout (renamed from tools/regression/bin/sh/builtins/alias.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/alias.1 (renamed from tools/regression/bin/sh/builtins/alias.1)0
-rw-r--r--bin/sh/tests/builtins/alias.1.stderr (renamed from tools/regression/bin/sh/builtins/alias.1.stderr)0
-rw-r--r--bin/sh/tests/builtins/alias3.0 (renamed from tools/regression/bin/sh/builtins/alias3.0)0
-rw-r--r--bin/sh/tests/builtins/alias3.0.stdout (renamed from tools/regression/bin/sh/builtins/alias3.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/alias4.0 (renamed from tools/regression/bin/sh/builtins/alias4.0)0
-rw-r--r--bin/sh/tests/builtins/break1.0 (renamed from tools/regression/bin/sh/builtins/break1.0)0
-rw-r--r--bin/sh/tests/builtins/break2.0 (renamed from tools/regression/bin/sh/builtins/break2.0)0
-rw-r--r--bin/sh/tests/builtins/break2.0.stdout (renamed from tools/regression/bin/sh/builtins/break2.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/break3.0 (renamed from tools/regression/bin/sh/builtins/break3.0)0
-rw-r--r--bin/sh/tests/builtins/break4.4 (renamed from tools/regression/bin/sh/builtins/break4.4)0
-rw-r--r--bin/sh/tests/builtins/break5.4 (renamed from tools/regression/bin/sh/builtins/break5.4)0
-rw-r--r--bin/sh/tests/builtins/builtin1.0 (renamed from tools/regression/bin/sh/builtins/builtin1.0)0
-rw-r--r--bin/sh/tests/builtins/case1.0 (renamed from tools/regression/bin/sh/builtins/case1.0)0
-rw-r--r--bin/sh/tests/builtins/case10.0 (renamed from tools/regression/bin/sh/builtins/case10.0)0
-rw-r--r--bin/sh/tests/builtins/case11.0 (renamed from tools/regression/bin/sh/builtins/case11.0)0
-rw-r--r--bin/sh/tests/builtins/case12.0 (renamed from tools/regression/bin/sh/builtins/case12.0)0
-rw-r--r--bin/sh/tests/builtins/case13.0 (renamed from tools/regression/bin/sh/builtins/case13.0)0
-rw-r--r--bin/sh/tests/builtins/case14.0 (renamed from tools/regression/bin/sh/builtins/case14.0)0
-rw-r--r--bin/sh/tests/builtins/case15.0 (renamed from tools/regression/bin/sh/builtins/case15.0)0
-rw-r--r--bin/sh/tests/builtins/case16.0 (renamed from tools/regression/bin/sh/builtins/case16.0)0
-rw-r--r--bin/sh/tests/builtins/case17.0 (renamed from tools/regression/bin/sh/builtins/case17.0)0
-rw-r--r--bin/sh/tests/builtins/case18.0 (renamed from tools/regression/bin/sh/builtins/case18.0)0
-rw-r--r--bin/sh/tests/builtins/case19.0 (renamed from tools/regression/bin/sh/builtins/case19.0)0
-rw-r--r--bin/sh/tests/builtins/case2.0 (renamed from tools/regression/bin/sh/builtins/case2.0)0
-rw-r--r--bin/sh/tests/builtins/case3.0 (renamed from tools/regression/bin/sh/builtins/case3.0)0
-rw-r--r--bin/sh/tests/builtins/case4.0 (renamed from tools/regression/bin/sh/builtins/case4.0)0
-rw-r--r--bin/sh/tests/builtins/case5.0 (renamed from tools/regression/bin/sh/builtins/case5.0)0
-rw-r--r--bin/sh/tests/builtins/case6.0 (renamed from tools/regression/bin/sh/builtins/case6.0)0
-rw-r--r--bin/sh/tests/builtins/case7.0 (renamed from tools/regression/bin/sh/builtins/case7.0)0
-rw-r--r--bin/sh/tests/builtins/case8.0 (renamed from tools/regression/bin/sh/builtins/case8.0)0
-rw-r--r--bin/sh/tests/builtins/case9.0 (renamed from tools/regression/bin/sh/builtins/case9.0)0
-rw-r--r--bin/sh/tests/builtins/cd1.0 (renamed from tools/regression/bin/sh/builtins/cd1.0)0
-rw-r--r--bin/sh/tests/builtins/cd2.0 (renamed from tools/regression/bin/sh/builtins/cd2.0)0
-rw-r--r--bin/sh/tests/builtins/cd3.0 (renamed from tools/regression/bin/sh/builtins/cd3.0)0
-rw-r--r--bin/sh/tests/builtins/cd4.0 (renamed from tools/regression/bin/sh/builtins/cd4.0)0
-rw-r--r--bin/sh/tests/builtins/cd5.0 (renamed from tools/regression/bin/sh/builtins/cd5.0)0
-rw-r--r--bin/sh/tests/builtins/cd6.0 (renamed from tools/regression/bin/sh/builtins/cd6.0)0
-rw-r--r--bin/sh/tests/builtins/cd7.0 (renamed from tools/regression/bin/sh/builtins/cd7.0)0
-rw-r--r--bin/sh/tests/builtins/cd8.0 (renamed from tools/regression/bin/sh/builtins/cd8.0)0
-rw-r--r--bin/sh/tests/builtins/command1.0 (renamed from tools/regression/bin/sh/builtins/command1.0)0
-rw-r--r--bin/sh/tests/builtins/command10.0 (renamed from tools/regression/bin/sh/builtins/command10.0)0
-rw-r--r--bin/sh/tests/builtins/command11.0 (renamed from tools/regression/bin/sh/builtins/command11.0)0
-rw-r--r--bin/sh/tests/builtins/command12.07
-rw-r--r--bin/sh/tests/builtins/command2.0 (renamed from tools/regression/bin/sh/builtins/command2.0)0
-rw-r--r--bin/sh/tests/builtins/command3.0 (renamed from tools/regression/bin/sh/builtins/command3.0)0
-rw-r--r--bin/sh/tests/builtins/command3.0.stdout (renamed from tools/regression/bin/sh/builtins/command3.0.stdout)2
-rw-r--r--bin/sh/tests/builtins/command4.0 (renamed from tools/regression/bin/sh/builtins/command4.0)0
-rw-r--r--bin/sh/tests/builtins/command5.0 (renamed from tools/regression/bin/sh/builtins/command5.0)0
-rw-r--r--bin/sh/tests/builtins/command5.0.stdout (renamed from tools/regression/bin/sh/builtins/command5.0.stdout)2
-rw-r--r--bin/sh/tests/builtins/command6.0 (renamed from tools/regression/bin/sh/builtins/command6.0)0
-rw-r--r--bin/sh/tests/builtins/command6.0.stdout (renamed from tools/regression/bin/sh/builtins/command6.0.stdout)2
-rw-r--r--bin/sh/tests/builtins/command7.0 (renamed from tools/regression/bin/sh/builtins/command7.0)0
-rw-r--r--bin/sh/tests/builtins/command8.0 (renamed from tools/regression/bin/sh/builtins/command8.0)0
-rw-r--r--bin/sh/tests/builtins/command9.0 (renamed from tools/regression/bin/sh/builtins/command9.0)0
-rw-r--r--bin/sh/tests/builtins/dot1.0 (renamed from tools/regression/bin/sh/builtins/dot1.0)0
-rw-r--r--bin/sh/tests/builtins/dot2.0 (renamed from tools/regression/bin/sh/builtins/dot2.0)0
-rw-r--r--bin/sh/tests/builtins/dot3.0 (renamed from tools/regression/bin/sh/builtins/dot3.0)0
-rw-r--r--bin/sh/tests/builtins/dot4.0 (renamed from tools/regression/bin/sh/builtins/dot4.0)0
-rw-r--r--bin/sh/tests/builtins/eval1.0 (renamed from tools/regression/bin/sh/builtins/eval1.0)0
-rw-r--r--bin/sh/tests/builtins/eval2.0 (renamed from tools/regression/bin/sh/builtins/eval2.0)0
-rw-r--r--bin/sh/tests/builtins/eval3.0 (renamed from tools/regression/bin/sh/builtins/eval3.0)0
-rw-r--r--bin/sh/tests/builtins/eval4.0 (renamed from tools/regression/bin/sh/builtins/eval4.0)0
-rw-r--r--bin/sh/tests/builtins/eval5.0 (renamed from tools/regression/bin/sh/builtins/eval5.0)0
-rw-r--r--bin/sh/tests/builtins/eval6.0 (renamed from tools/regression/bin/sh/builtins/eval6.0)0
-rw-r--r--bin/sh/tests/builtins/exec1.0 (renamed from tools/regression/bin/sh/builtins/exec1.0)0
-rw-r--r--bin/sh/tests/builtins/exec2.0 (renamed from tools/regression/bin/sh/builtins/exec2.0)0
-rw-r--r--bin/sh/tests/builtins/exit1.0 (renamed from tools/regression/bin/sh/builtins/exit1.0)0
-rw-r--r--bin/sh/tests/builtins/exit2.8 (renamed from tools/regression/bin/sh/builtins/exit2.8)0
-rw-r--r--bin/sh/tests/builtins/exit3.0 (renamed from tools/regression/bin/sh/builtins/exit3.0)0
-rw-r--r--bin/sh/tests/builtins/export1.0 (renamed from tools/regression/bin/sh/builtins/export1.0)0
-rw-r--r--bin/sh/tests/builtins/fc1.0 (renamed from tools/regression/bin/sh/builtins/fc1.0)0
-rw-r--r--bin/sh/tests/builtins/fc2.0 (renamed from tools/regression/bin/sh/builtins/fc2.0)0
-rw-r--r--bin/sh/tests/builtins/for1.0 (renamed from tools/regression/bin/sh/builtins/for1.0)0
-rw-r--r--bin/sh/tests/builtins/for2.0 (renamed from tools/regression/bin/sh/builtins/for2.0)0
-rw-r--r--bin/sh/tests/builtins/for3.0 (renamed from tools/regression/bin/sh/builtins/for3.0)0
-rw-r--r--bin/sh/tests/builtins/getopts1.0 (renamed from tools/regression/bin/sh/builtins/getopts1.0)0
-rw-r--r--bin/sh/tests/builtins/getopts1.0.stdout (renamed from tools/regression/bin/sh/builtins/getopts1.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/getopts2.0 (renamed from tools/regression/bin/sh/builtins/getopts2.0)0
-rw-r--r--bin/sh/tests/builtins/getopts2.0.stdout (renamed from tools/regression/bin/sh/builtins/getopts2.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/hash1.0 (renamed from tools/regression/bin/sh/builtins/hash1.0)0
-rw-r--r--bin/sh/tests/builtins/hash1.0.stdout (renamed from tools/regression/bin/sh/builtins/hash1.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/hash2.0 (renamed from tools/regression/bin/sh/builtins/hash2.0)0
-rw-r--r--bin/sh/tests/builtins/hash2.0.stdout (renamed from tools/regression/bin/sh/builtins/hash2.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/hash3.0 (renamed from tools/regression/bin/sh/builtins/hash3.0)0
-rw-r--r--bin/sh/tests/builtins/hash3.0.stdout (renamed from tools/regression/bin/sh/builtins/hash3.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/hash4.0 (renamed from tools/regression/bin/sh/builtins/hash4.0)0
-rw-r--r--bin/sh/tests/builtins/jobid1.0 (renamed from tools/regression/bin/sh/builtins/jobid1.0)0
-rw-r--r--bin/sh/tests/builtins/jobid2.0 (renamed from tools/regression/bin/sh/builtins/jobid2.0)0
-rw-r--r--bin/sh/tests/builtins/lineno.0 (renamed from tools/regression/bin/sh/builtins/lineno.0)0
-rw-r--r--bin/sh/tests/builtins/lineno.0.stdout (renamed from tools/regression/bin/sh/builtins/lineno.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/lineno2.010
-rw-r--r--bin/sh/tests/builtins/local1.0 (renamed from tools/regression/bin/sh/builtins/local1.0)0
-rw-r--r--bin/sh/tests/builtins/local2.0 (renamed from tools/regression/bin/sh/builtins/local2.0)0
-rw-r--r--bin/sh/tests/builtins/local3.0 (renamed from tools/regression/bin/sh/builtins/local3.0)0
-rw-r--r--bin/sh/tests/builtins/local4.0 (renamed from tools/regression/bin/sh/builtins/local4.0)0
-rw-r--r--bin/sh/tests/builtins/locale1.0 (renamed from tools/regression/bin/sh/builtins/locale1.0)0
-rw-r--r--bin/sh/tests/builtins/printf1.0 (renamed from tools/regression/bin/sh/builtins/printf1.0)0
-rw-r--r--bin/sh/tests/builtins/printf2.0 (renamed from tools/regression/bin/sh/builtins/printf2.0)0
-rw-r--r--bin/sh/tests/builtins/printf3.0 (renamed from tools/regression/bin/sh/builtins/printf3.0)0
-rw-r--r--bin/sh/tests/builtins/printf4.0 (renamed from tools/regression/bin/sh/builtins/printf4.0)0
-rw-r--r--bin/sh/tests/builtins/read1.0 (renamed from tools/regression/bin/sh/builtins/read1.0)0
-rw-r--r--bin/sh/tests/builtins/read1.0.stdout (renamed from tools/regression/bin/sh/builtins/read1.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/read2.0 (renamed from tools/regression/bin/sh/builtins/read2.0)0
-rw-r--r--bin/sh/tests/builtins/read3.0 (renamed from tools/regression/bin/sh/builtins/read3.0)0
-rw-r--r--bin/sh/tests/builtins/read3.0.stdout (renamed from tools/regression/bin/sh/builtins/read3.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/read4.0 (renamed from tools/regression/bin/sh/builtins/read4.0)0
-rw-r--r--bin/sh/tests/builtins/read4.0.stdout (renamed from tools/regression/bin/sh/builtins/read4.0.stdout)0
-rw-r--r--bin/sh/tests/builtins/read5.0 (renamed from tools/regression/bin/sh/builtins/read5.0)0
-rw-r--r--bin/sh/tests/builtins/read6.0 (renamed from tools/regression/bin/sh/builtins/read6.0)0
-rw-r--r--bin/sh/tests/builtins/read7.0 (renamed from tools/regression/bin/sh/builtins/read7.0)0
-rw-r--r--bin/sh/tests/builtins/return1.0 (renamed from tools/regression/bin/sh/builtins/return1.0)0
-rw-r--r--bin/sh/tests/builtins/return2.1 (renamed from tools/regression/bin/sh/builtins/return2.1)0
-rw-r--r--bin/sh/tests/builtins/return3.1 (renamed from tools/regression/bin/sh/builtins/return3.1)0
-rw-r--r--bin/sh/tests/builtins/return4.0 (renamed from tools/regression/bin/sh/builtins/return4.0)0
-rw-r--r--bin/sh/tests/builtins/return5.0 (renamed from tools/regression/bin/sh/builtins/return5.0)0
-rw-r--r--bin/sh/tests/builtins/return6.4 (renamed from tools/regression/bin/sh/builtins/return6.4)0
-rw-r--r--bin/sh/tests/builtins/return7.4 (renamed from tools/regression/bin/sh/builtins/return7.4)0
-rw-r--r--bin/sh/tests/builtins/return8.0 (renamed from tools/regression/bin/sh/builtins/return8.0)0
-rw-r--r--bin/sh/tests/builtins/set1.0 (renamed from tools/regression/bin/sh/builtins/set1.0)0
-rw-r--r--bin/sh/tests/builtins/set2.0 (renamed from tools/regression/bin/sh/builtins/set2.0)0
-rw-r--r--bin/sh/tests/builtins/trap1.0 (renamed from tools/regression/bin/sh/builtins/trap1.0)0
-rw-r--r--bin/sh/tests/builtins/trap10.0 (renamed from tools/regression/bin/sh/builtins/trap10.0)0
-rw-r--r--bin/sh/tests/builtins/trap11.0 (renamed from tools/regression/bin/sh/builtins/trap11.0)0
-rw-r--r--bin/sh/tests/builtins/trap12.0 (renamed from tools/regression/bin/sh/builtins/trap12.0)0
-rw-r--r--bin/sh/tests/builtins/trap13.08
-rw-r--r--bin/sh/tests/builtins/trap14.010
-rw-r--r--bin/sh/tests/builtins/trap2.0 (renamed from tools/regression/bin/sh/builtins/trap2.0)0
-rw-r--r--bin/sh/tests/builtins/trap3.0 (renamed from tools/regression/bin/sh/builtins/trap3.0)0
-rw-r--r--bin/sh/tests/builtins/trap4.0 (renamed from tools/regression/bin/sh/builtins/trap4.0)0
-rw-r--r--bin/sh/tests/builtins/trap5.0 (renamed from tools/regression/bin/sh/builtins/trap5.0)0
-rw-r--r--bin/sh/tests/builtins/trap6.0 (renamed from tools/regression/bin/sh/builtins/trap6.0)0
-rw-r--r--bin/sh/tests/builtins/trap7.0 (renamed from tools/regression/bin/sh/builtins/trap7.0)0
-rw-r--r--bin/sh/tests/builtins/trap8.0 (renamed from tools/regression/bin/sh/builtins/trap8.0)0
-rw-r--r--bin/sh/tests/builtins/trap9.0 (renamed from tools/regression/bin/sh/builtins/trap9.0)0
-rw-r--r--bin/sh/tests/builtins/type1.0 (renamed from tools/regression/bin/sh/builtins/type1.0)0
-rw-r--r--bin/sh/tests/builtins/type1.0.stderr (renamed from tools/regression/bin/sh/builtins/type1.0.stderr)0
-rw-r--r--bin/sh/tests/builtins/type2.0 (renamed from tools/regression/bin/sh/builtins/type2.0)0
-rw-r--r--bin/sh/tests/builtins/type3.0 (renamed from tools/regression/bin/sh/builtins/type3.0)0
-rw-r--r--bin/sh/tests/builtins/unalias.0 (renamed from tools/regression/bin/sh/builtins/unalias.0)0
-rw-r--r--bin/sh/tests/builtins/var-assign.0 (renamed from tools/regression/bin/sh/builtins/var-assign.0)0
-rw-r--r--bin/sh/tests/builtins/var-assign2.0 (renamed from tools/regression/bin/sh/builtins/var-assign2.0)0
-rw-r--r--bin/sh/tests/builtins/wait1.0 (renamed from tools/regression/bin/sh/builtins/wait1.0)0
-rw-r--r--bin/sh/tests/builtins/wait10.0 (renamed from tools/regression/bin/sh/builtins/wait10.0)0
-rw-r--r--bin/sh/tests/builtins/wait2.0 (renamed from tools/regression/bin/sh/builtins/wait2.0)0
-rw-r--r--bin/sh/tests/builtins/wait3.0 (renamed from tools/regression/bin/sh/builtins/wait3.0)0
-rw-r--r--bin/sh/tests/builtins/wait4.0 (renamed from tools/regression/bin/sh/builtins/wait4.0)0
-rw-r--r--bin/sh/tests/builtins/wait5.0 (renamed from tools/regression/bin/sh/builtins/wait5.0)0
-rw-r--r--bin/sh/tests/builtins/wait6.0 (renamed from tools/regression/bin/sh/builtins/wait6.0)0
-rw-r--r--bin/sh/tests/builtins/wait7.0 (renamed from tools/regression/bin/sh/builtins/wait7.0)0
-rw-r--r--bin/sh/tests/builtins/wait8.0 (renamed from tools/regression/bin/sh/builtins/wait8.0)0
-rw-r--r--bin/sh/tests/builtins/wait9.127 (renamed from tools/regression/bin/sh/builtins/wait9.127)0
-rw-r--r--bin/sh/tests/errors/Makefile30
-rw-r--r--bin/sh/tests/errors/assignment-error1.0 (renamed from tools/regression/bin/sh/errors/assignment-error1.0)0
-rw-r--r--bin/sh/tests/errors/assignment-error2.0 (renamed from tools/regression/bin/sh/errors/assignment-error2.0)0
-rw-r--r--bin/sh/tests/errors/backquote-error1.0 (renamed from tools/regression/bin/sh/errors/backquote-error1.0)0
-rw-r--r--bin/sh/tests/errors/backquote-error2.0 (renamed from tools/regression/bin/sh/errors/backquote-error2.0)0
-rw-r--r--bin/sh/tests/errors/bad-binary1.126 (renamed from tools/regression/bin/sh/errors/bad-binary1.126)0
-rw-r--r--bin/sh/tests/errors/bad-keyword1.0 (renamed from tools/regression/bin/sh/errors/bad-keyword1.0)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp1.0 (renamed from tools/regression/bin/sh/errors/bad-parm-exp1.0)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp2.2 (renamed from tools/regression/bin/sh/errors/bad-parm-exp2.2)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp2.2.stderr (renamed from tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp3.2 (renamed from tools/regression/bin/sh/errors/bad-parm-exp3.2)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp3.2.stderr (renamed from tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp4.2 (renamed from tools/regression/bin/sh/errors/bad-parm-exp4.2)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp4.2.stderr (renamed from tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp5.2 (renamed from tools/regression/bin/sh/errors/bad-parm-exp5.2)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp5.2.stderr (renamed from tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp6.2 (renamed from tools/regression/bin/sh/errors/bad-parm-exp6.2)0
-rw-r--r--bin/sh/tests/errors/bad-parm-exp6.2.stderr (renamed from tools/regression/bin/sh/errors/bad-parm-exp6.2.stderr)0
-rw-r--r--bin/sh/tests/errors/option-error.0 (renamed from tools/regression/bin/sh/errors/option-error.0)0
-rw-r--r--bin/sh/tests/errors/redirection-error.0 (renamed from tools/regression/bin/sh/errors/redirection-error.0)0
-rw-r--r--bin/sh/tests/errors/redirection-error2.2 (renamed from tools/regression/bin/sh/errors/redirection-error2.2)0
-rw-r--r--bin/sh/tests/errors/redirection-error3.0 (renamed from tools/regression/bin/sh/errors/redirection-error3.0)0
-rw-r--r--bin/sh/tests/errors/redirection-error4.0 (renamed from tools/regression/bin/sh/errors/redirection-error4.0)0
-rw-r--r--bin/sh/tests/errors/redirection-error5.0 (renamed from tools/regression/bin/sh/errors/redirection-error5.0)0
-rw-r--r--bin/sh/tests/errors/redirection-error6.0 (renamed from tools/regression/bin/sh/errors/redirection-error6.0)0
-rw-r--r--bin/sh/tests/errors/redirection-error7.0 (renamed from tools/regression/bin/sh/errors/redirection-error7.0)0
-rw-r--r--bin/sh/tests/errors/write-error1.0 (renamed from tools/regression/bin/sh/errors/write-error1.0)0
-rw-r--r--bin/sh/tests/execution/Makefile53
-rw-r--r--bin/sh/tests/execution/bg1.0 (renamed from tools/regression/bin/sh/execution/bg1.0)0
-rw-r--r--bin/sh/tests/execution/bg10.04
-rw-r--r--bin/sh/tests/execution/bg10.0.stdout1
-rw-r--r--bin/sh/tests/execution/bg2.0 (renamed from tools/regression/bin/sh/execution/bg2.0)0
-rw-r--r--bin/sh/tests/execution/bg3.0 (renamed from tools/regression/bin/sh/execution/bg3.0)0
-rw-r--r--bin/sh/tests/execution/bg4.0 (renamed from tools/regression/bin/sh/execution/bg4.0)0
-rw-r--r--bin/sh/tests/execution/bg5.04
-rw-r--r--bin/sh/tests/execution/bg6.04
-rw-r--r--bin/sh/tests/execution/bg6.0.stdout1
-rw-r--r--bin/sh/tests/execution/bg7.05
-rw-r--r--bin/sh/tests/execution/bg8.05
-rw-r--r--bin/sh/tests/execution/bg9.05
-rw-r--r--bin/sh/tests/execution/fork1.0 (renamed from tools/regression/bin/sh/execution/fork1.0)0
-rw-r--r--bin/sh/tests/execution/fork2.0 (renamed from tools/regression/bin/sh/execution/fork2.0)0
-rw-r--r--bin/sh/tests/execution/fork3.0 (renamed from tools/regression/bin/sh/execution/fork3.0)0
-rw-r--r--bin/sh/tests/execution/func1.0 (renamed from tools/regression/bin/sh/execution/func1.0)0
-rw-r--r--bin/sh/tests/execution/func2.0 (renamed from tools/regression/bin/sh/execution/func2.0)0
-rw-r--r--bin/sh/tests/execution/func3.0 (renamed from tools/regression/bin/sh/execution/func3.0)0
-rw-r--r--bin/sh/tests/execution/hash1.0 (renamed from tools/regression/bin/sh/execution/hash1.0)0
-rw-r--r--bin/sh/tests/execution/int-cmd1.0 (renamed from tools/regression/bin/sh/execution/int-cmd1.0)0
-rw-r--r--bin/sh/tests/execution/killed1.0 (renamed from tools/regression/bin/sh/execution/killed1.0)0
-rw-r--r--bin/sh/tests/execution/killed2.0 (renamed from tools/regression/bin/sh/execution/killed2.0)0
-rw-r--r--bin/sh/tests/execution/not1.0 (renamed from tools/regression/bin/sh/execution/not1.0)0
-rw-r--r--bin/sh/tests/execution/not2.0 (renamed from tools/regression/bin/sh/execution/not2.0)0
-rw-r--r--bin/sh/tests/execution/path1.0 (renamed from tools/regression/bin/sh/execution/path1.0)0
-rw-r--r--bin/sh/tests/execution/redir1.0 (renamed from tools/regression/bin/sh/execution/redir1.0)0
-rw-r--r--bin/sh/tests/execution/redir2.0 (renamed from tools/regression/bin/sh/execution/redir2.0)0
-rw-r--r--bin/sh/tests/execution/redir3.0 (renamed from tools/regression/bin/sh/execution/redir3.0)0
-rw-r--r--bin/sh/tests/execution/redir4.0 (renamed from tools/regression/bin/sh/execution/redir4.0)0
-rw-r--r--bin/sh/tests/execution/redir5.0 (renamed from tools/regression/bin/sh/execution/redir5.0)0
-rw-r--r--bin/sh/tests/execution/redir6.0 (renamed from tools/regression/bin/sh/execution/redir6.0)0
-rw-r--r--bin/sh/tests/execution/redir7.0 (renamed from tools/regression/bin/sh/execution/redir7.0)0
-rw-r--r--bin/sh/tests/execution/set-n1.0 (renamed from tools/regression/bin/sh/execution/set-n1.0)0
-rw-r--r--bin/sh/tests/execution/set-n2.0 (renamed from tools/regression/bin/sh/execution/set-n2.0)0
-rw-r--r--bin/sh/tests/execution/set-n3.0 (renamed from tools/regression/bin/sh/execution/set-n3.0)0
-rw-r--r--bin/sh/tests/execution/set-n4.0 (renamed from tools/regression/bin/sh/execution/set-n4.0)0
-rw-r--r--bin/sh/tests/execution/set-x1.0 (renamed from tools/regression/bin/sh/execution/set-x1.0)0
-rw-r--r--bin/sh/tests/execution/set-x2.0 (renamed from tools/regression/bin/sh/execution/set-x2.0)0
-rw-r--r--bin/sh/tests/execution/set-x3.0 (renamed from tools/regression/bin/sh/execution/set-x3.0)0
-rw-r--r--bin/sh/tests/execution/shellproc1.0 (renamed from tools/regression/bin/sh/execution/shellproc1.0)0
-rw-r--r--bin/sh/tests/execution/subshell1.0 (renamed from tools/regression/bin/sh/execution/subshell1.0)0
-rw-r--r--bin/sh/tests/execution/subshell1.0.stdout (renamed from tools/regression/bin/sh/execution/subshell1.0.stdout)0
-rw-r--r--bin/sh/tests/execution/subshell2.0 (renamed from tools/regression/bin/sh/execution/subshell2.0)0
-rw-r--r--bin/sh/tests/execution/subshell3.0 (renamed from tools/regression/bin/sh/execution/subshell3.0)0
-rw-r--r--bin/sh/tests/execution/subshell4.0 (renamed from tools/regression/bin/sh/execution/subshell4.0)0
-rw-r--r--bin/sh/tests/execution/unknown1.0 (renamed from tools/regression/bin/sh/execution/unknown1.0)0
-rw-r--r--bin/sh/tests/execution/var-assign1.0 (renamed from tools/regression/bin/sh/execution/var-assign1.0)0
-rw-r--r--bin/sh/tests/expansion/Makefile86
-rw-r--r--bin/sh/tests/expansion/arith1.0 (renamed from tools/regression/bin/sh/expansion/arith1.0)0
-rw-r--r--bin/sh/tests/expansion/arith10.0 (renamed from tools/regression/bin/sh/expansion/arith10.0)0
-rw-r--r--bin/sh/tests/expansion/arith11.0 (renamed from tools/regression/bin/sh/expansion/arith11.0)0
-rw-r--r--bin/sh/tests/expansion/arith12.0 (renamed from tools/regression/bin/sh/expansion/arith12.0)0
-rw-r--r--bin/sh/tests/expansion/arith13.0 (renamed from tools/regression/bin/sh/expansion/arith13.0)0
-rw-r--r--bin/sh/tests/expansion/arith2.0 (renamed from tools/regression/bin/sh/expansion/arith2.0)0
-rw-r--r--bin/sh/tests/expansion/arith3.0 (renamed from tools/regression/bin/sh/expansion/arith3.0)0
-rw-r--r--bin/sh/tests/expansion/arith4.0 (renamed from tools/regression/bin/sh/expansion/arith4.0)0
-rw-r--r--bin/sh/tests/expansion/arith5.0 (renamed from tools/regression/bin/sh/expansion/arith5.0)0
-rw-r--r--bin/sh/tests/expansion/arith6.0 (renamed from tools/regression/bin/sh/expansion/arith6.0)0
-rw-r--r--bin/sh/tests/expansion/arith7.0 (renamed from tools/regression/bin/sh/expansion/arith7.0)0
-rw-r--r--bin/sh/tests/expansion/arith8.0 (renamed from tools/regression/bin/sh/expansion/arith8.0)0
-rw-r--r--bin/sh/tests/expansion/arith9.0 (renamed from tools/regression/bin/sh/expansion/arith9.0)0
-rw-r--r--bin/sh/tests/expansion/assign1.0 (renamed from tools/regression/bin/sh/expansion/assign1.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst1.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst1.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst10.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst10.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst11.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst11.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst12.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst12.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst13.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst13.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst14.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst14.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst15.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst15.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst16.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst16.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst17.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst17.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst2.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst2.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst3.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst3.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst4.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst4.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst5.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst5.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst6.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst6.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst7.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst7.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst8.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst8.0)0
-rw-r--r--bin/sh/tests/expansion/cmdsubst9.0 (renamed from tools/regression/bin/sh/expansion/cmdsubst9.0)0
-rw-r--r--bin/sh/tests/expansion/export1.0 (renamed from tools/regression/bin/sh/expansion/export1.0)0
-rw-r--r--bin/sh/tests/expansion/export2.0 (renamed from tools/regression/bin/sh/expansion/export2.0)0
-rw-r--r--bin/sh/tests/expansion/export3.0 (renamed from tools/regression/bin/sh/expansion/export3.0)0
-rw-r--r--bin/sh/tests/expansion/heredoc1.0 (renamed from tools/regression/bin/sh/expansion/heredoc1.0)0
-rw-r--r--bin/sh/tests/expansion/heredoc2.0 (renamed from tools/regression/bin/sh/expansion/heredoc2.0)0
-rw-r--r--bin/sh/tests/expansion/ifs1.0 (renamed from tools/regression/bin/sh/expansion/ifs1.0)0
-rw-r--r--bin/sh/tests/expansion/ifs2.0 (renamed from tools/regression/bin/sh/expansion/ifs2.0)0
-rw-r--r--bin/sh/tests/expansion/ifs3.0 (renamed from tools/regression/bin/sh/expansion/ifs3.0)0
-rw-r--r--bin/sh/tests/expansion/ifs4.0 (renamed from tools/regression/bin/sh/expansion/ifs4.0)0
-rw-r--r--bin/sh/tests/expansion/length1.0 (renamed from tools/regression/bin/sh/expansion/length1.0)0
-rw-r--r--bin/sh/tests/expansion/length2.0 (renamed from tools/regression/bin/sh/expansion/length2.0)0
-rw-r--r--bin/sh/tests/expansion/length3.0 (renamed from tools/regression/bin/sh/expansion/length3.0)0
-rw-r--r--bin/sh/tests/expansion/length4.0 (renamed from tools/regression/bin/sh/expansion/length4.0)0
-rw-r--r--bin/sh/tests/expansion/length5.0 (renamed from tools/regression/bin/sh/expansion/length5.0)0
-rw-r--r--bin/sh/tests/expansion/length6.0 (renamed from tools/regression/bin/sh/expansion/length6.0)0
-rw-r--r--bin/sh/tests/expansion/length7.0 (renamed from tools/regression/bin/sh/expansion/length7.0)0
-rw-r--r--bin/sh/tests/expansion/length8.0 (renamed from tools/regression/bin/sh/expansion/length8.0)0
-rw-r--r--bin/sh/tests/expansion/local1.0 (renamed from tools/regression/bin/sh/expansion/local1.0)0
-rw-r--r--bin/sh/tests/expansion/local2.0 (renamed from tools/regression/bin/sh/expansion/local2.0)0
-rw-r--r--bin/sh/tests/expansion/pathname1.0 (renamed from tools/regression/bin/sh/expansion/pathname1.0)0
-rw-r--r--bin/sh/tests/expansion/pathname2.0 (renamed from tools/regression/bin/sh/expansion/pathname2.0)0
-rw-r--r--bin/sh/tests/expansion/pathname3.0 (renamed from tools/regression/bin/sh/expansion/pathname3.0)0
-rw-r--r--bin/sh/tests/expansion/pathname4.0 (renamed from tools/regression/bin/sh/expansion/pathname4.0)0
-rw-r--r--bin/sh/tests/expansion/plus-minus1.0 (renamed from tools/regression/bin/sh/expansion/plus-minus1.0)0
-rw-r--r--bin/sh/tests/expansion/plus-minus2.0 (renamed from tools/regression/bin/sh/expansion/plus-minus2.0)0
-rw-r--r--bin/sh/tests/expansion/plus-minus3.0 (renamed from tools/regression/bin/sh/expansion/plus-minus3.0)0
-rw-r--r--bin/sh/tests/expansion/plus-minus4.0 (renamed from tools/regression/bin/sh/expansion/plus-minus4.0)0
-rw-r--r--bin/sh/tests/expansion/plus-minus5.0 (renamed from tools/regression/bin/sh/expansion/plus-minus5.0)0
-rw-r--r--bin/sh/tests/expansion/plus-minus6.0 (renamed from tools/regression/bin/sh/expansion/plus-minus6.0)0
-rw-r--r--bin/sh/tests/expansion/plus-minus7.0 (renamed from tools/regression/bin/sh/expansion/plus-minus7.0)0
-rw-r--r--bin/sh/tests/expansion/plus-minus8.0 (renamed from tools/regression/bin/sh/expansion/plus-minus8.0)0
-rw-r--r--bin/sh/tests/expansion/question1.0 (renamed from tools/regression/bin/sh/expansion/question1.0)0
-rw-r--r--bin/sh/tests/expansion/readonly1.0 (renamed from tools/regression/bin/sh/expansion/readonly1.0)0
-rw-r--r--bin/sh/tests/expansion/set-u1.0 (renamed from tools/regression/bin/sh/expansion/set-u1.0)0
-rw-r--r--bin/sh/tests/expansion/set-u2.0 (renamed from tools/regression/bin/sh/expansion/set-u2.0)0
-rw-r--r--bin/sh/tests/expansion/set-u3.0 (renamed from tools/regression/bin/sh/expansion/set-u3.0)0
-rw-r--r--bin/sh/tests/expansion/tilde1.0 (renamed from tools/regression/bin/sh/expansion/tilde1.0)0
-rw-r--r--bin/sh/tests/expansion/tilde2.0 (renamed from tools/regression/bin/sh/expansion/tilde2.0)0
-rw-r--r--bin/sh/tests/expansion/trim1.0 (renamed from tools/regression/bin/sh/expansion/trim1.0)0
-rw-r--r--bin/sh/tests/expansion/trim2.0 (renamed from tools/regression/bin/sh/expansion/trim2.0)0
-rw-r--r--bin/sh/tests/expansion/trim3.0 (renamed from tools/regression/bin/sh/expansion/trim3.0)0
-rw-r--r--bin/sh/tests/expansion/trim4.0 (renamed from tools/regression/bin/sh/expansion/trim4.0)0
-rw-r--r--bin/sh/tests/expansion/trim5.0 (renamed from tools/regression/bin/sh/expansion/trim5.0)0
-rw-r--r--bin/sh/tests/expansion/trim6.0 (renamed from tools/regression/bin/sh/expansion/trim6.0)0
-rw-r--r--bin/sh/tests/expansion/trim7.0 (renamed from tools/regression/bin/sh/expansion/trim7.0)0
-rw-r--r--bin/sh/tests/expansion/trim8.0 (renamed from tools/regression/bin/sh/expansion/trim8.0)0
-rw-r--r--bin/sh/tests/legacy_test.sh (renamed from tools/regression/bin/sh/regress.sh)16
-rw-r--r--bin/sh/tests/parameters/Makefile19
-rw-r--r--bin/sh/tests/parameters/env1.0 (renamed from tools/regression/bin/sh/parameters/env1.0)0
-rw-r--r--bin/sh/tests/parameters/exitstatus1.0 (renamed from tools/regression/bin/sh/parameters/exitstatus1.0)0
-rw-r--r--bin/sh/tests/parameters/mail1.0 (renamed from tools/regression/bin/sh/parameters/mail1.0)0
-rw-r--r--bin/sh/tests/parameters/mail2.0 (renamed from tools/regression/bin/sh/parameters/mail2.0)0
-rw-r--r--bin/sh/tests/parameters/optind1.0 (renamed from tools/regression/bin/sh/parameters/optind1.0)0
-rw-r--r--bin/sh/tests/parameters/optind2.03
-rw-r--r--bin/sh/tests/parameters/positional1.0 (renamed from tools/regression/bin/sh/parameters/positional1.0)0
-rw-r--r--bin/sh/tests/parameters/positional2.0 (renamed from tools/regression/bin/sh/parameters/positional2.0)0
-rw-r--r--bin/sh/tests/parameters/pwd1.0 (renamed from tools/regression/bin/sh/parameters/pwd1.0)0
-rw-r--r--bin/sh/tests/parameters/pwd2.0 (renamed from tools/regression/bin/sh/parameters/pwd2.0)0
-rw-r--r--bin/sh/tests/parser/Makefile64
-rw-r--r--bin/sh/tests/parser/alias1.0 (renamed from tools/regression/bin/sh/parser/alias1.0)0
-rw-r--r--bin/sh/tests/parser/alias10.0 (renamed from tools/regression/bin/sh/parser/alias10.0)0
-rw-r--r--bin/sh/tests/parser/alias11.06
-rw-r--r--bin/sh/tests/parser/alias12.06
-rw-r--r--bin/sh/tests/parser/alias13.06
-rw-r--r--bin/sh/tests/parser/alias14.06
-rw-r--r--bin/sh/tests/parser/alias15.012
-rw-r--r--bin/sh/tests/parser/alias15.0.stdout4
-rw-r--r--bin/sh/tests/parser/alias2.0 (renamed from tools/regression/bin/sh/parser/alias2.0)0
-rw-r--r--bin/sh/tests/parser/alias3.0 (renamed from tools/regression/bin/sh/parser/alias3.0)0
-rw-r--r--bin/sh/tests/parser/alias4.0 (renamed from tools/regression/bin/sh/parser/alias4.0)0
-rw-r--r--bin/sh/tests/parser/alias5.0 (renamed from tools/regression/bin/sh/parser/alias5.0)0
-rw-r--r--bin/sh/tests/parser/alias6.0 (renamed from tools/regression/bin/sh/parser/alias6.0)0
-rw-r--r--bin/sh/tests/parser/alias7.0 (renamed from tools/regression/bin/sh/parser/alias7.0)0
-rw-r--r--bin/sh/tests/parser/alias8.0 (renamed from tools/regression/bin/sh/parser/alias8.0)0
-rw-r--r--bin/sh/tests/parser/alias9.0 (renamed from tools/regression/bin/sh/parser/alias9.0)0
-rw-r--r--bin/sh/tests/parser/and-pipe-not.0 (renamed from tools/regression/bin/sh/parser/and-pipe-not.0)0
-rw-r--r--bin/sh/tests/parser/case1.0 (renamed from tools/regression/bin/sh/parser/case1.0)0
-rw-r--r--bin/sh/tests/parser/case2.0 (renamed from tools/regression/bin/sh/parser/case2.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote1.0 (renamed from tools/regression/bin/sh/parser/dollar-quote1.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote10.0 (renamed from tools/regression/bin/sh/parser/dollar-quote10.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote11.0 (renamed from tools/regression/bin/sh/parser/dollar-quote11.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote2.0 (renamed from tools/regression/bin/sh/parser/dollar-quote2.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote3.0 (renamed from tools/regression/bin/sh/parser/dollar-quote3.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote4.0 (renamed from tools/regression/bin/sh/parser/dollar-quote4.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote5.0 (renamed from tools/regression/bin/sh/parser/dollar-quote5.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote6.0 (renamed from tools/regression/bin/sh/parser/dollar-quote6.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote7.0 (renamed from tools/regression/bin/sh/parser/dollar-quote7.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote8.0 (renamed from tools/regression/bin/sh/parser/dollar-quote8.0)0
-rw-r--r--bin/sh/tests/parser/dollar-quote9.0 (renamed from tools/regression/bin/sh/parser/dollar-quote9.0)0
-rw-r--r--bin/sh/tests/parser/empty-braces1.0 (renamed from tools/regression/bin/sh/parser/empty-braces1.0)0
-rw-r--r--bin/sh/tests/parser/empty-cmd1.0 (renamed from tools/regression/bin/sh/parser/empty-cmd1.0)0
-rw-r--r--bin/sh/tests/parser/for1.0 (renamed from tools/regression/bin/sh/parser/for1.0)0
-rw-r--r--bin/sh/tests/parser/for2.0 (renamed from tools/regression/bin/sh/parser/for2.0)0
-rw-r--r--bin/sh/tests/parser/func1.0 (renamed from tools/regression/bin/sh/parser/func1.0)0
-rw-r--r--bin/sh/tests/parser/func2.0 (renamed from tools/regression/bin/sh/parser/func2.0)0
-rw-r--r--bin/sh/tests/parser/func3.0 (renamed from tools/regression/bin/sh/parser/func3.0)0
-rw-r--r--bin/sh/tests/parser/heredoc1.0 (renamed from tools/regression/bin/sh/parser/heredoc1.0)0
-rw-r--r--bin/sh/tests/parser/heredoc10.0 (renamed from tools/regression/bin/sh/parser/heredoc10.0)0
-rw-r--r--bin/sh/tests/parser/heredoc11.0 (renamed from tools/regression/bin/sh/parser/heredoc11.0)0
-rw-r--r--bin/sh/tests/parser/heredoc2.0 (renamed from tools/regression/bin/sh/parser/heredoc2.0)0
-rw-r--r--bin/sh/tests/parser/heredoc3.0 (renamed from tools/regression/bin/sh/parser/heredoc3.0)0
-rw-r--r--bin/sh/tests/parser/heredoc4.0 (renamed from tools/regression/bin/sh/parser/heredoc4.0)0
-rw-r--r--bin/sh/tests/parser/heredoc5.0 (renamed from tools/regression/bin/sh/parser/heredoc5.0)0
-rw-r--r--bin/sh/tests/parser/heredoc6.0 (renamed from tools/regression/bin/sh/parser/heredoc6.0)0
-rw-r--r--bin/sh/tests/parser/heredoc7.0 (renamed from tools/regression/bin/sh/parser/heredoc7.0)0
-rw-r--r--bin/sh/tests/parser/heredoc8.0 (renamed from tools/regression/bin/sh/parser/heredoc8.0)0
-rw-r--r--bin/sh/tests/parser/heredoc9.0 (renamed from tools/regression/bin/sh/parser/heredoc9.0)0
-rw-r--r--bin/sh/tests/parser/no-space1.0 (renamed from tools/regression/bin/sh/parser/no-space1.0)0
-rw-r--r--bin/sh/tests/parser/no-space2.0 (renamed from tools/regression/bin/sh/parser/no-space2.0)0
-rw-r--r--bin/sh/tests/parser/only-redir1.0 (renamed from tools/regression/bin/sh/parser/only-redir1.0)0
-rw-r--r--bin/sh/tests/parser/only-redir2.0 (renamed from tools/regression/bin/sh/parser/only-redir2.0)0
-rw-r--r--bin/sh/tests/parser/only-redir3.0 (renamed from tools/regression/bin/sh/parser/only-redir3.0)0
-rw-r--r--bin/sh/tests/parser/only-redir4.0 (renamed from tools/regression/bin/sh/parser/only-redir4.0)0
-rw-r--r--bin/sh/tests/parser/pipe-not1.0 (renamed from tools/regression/bin/sh/parser/pipe-not1.0)0
-rw-r--r--bin/sh/tests/parser/var-assign1.019
-rw-r--r--bin/sh/tests/set-e/Makefile44
-rw-r--r--bin/sh/tests/set-e/and1.0 (renamed from tools/regression/bin/sh/set-e/and1.0)0
-rw-r--r--bin/sh/tests/set-e/and2.1 (renamed from tools/regression/bin/sh/set-e/and2.1)0
-rw-r--r--bin/sh/tests/set-e/and3.0 (renamed from tools/regression/bin/sh/set-e/and3.0)0
-rw-r--r--bin/sh/tests/set-e/and4.0 (renamed from tools/regression/bin/sh/set-e/and4.0)0
-rw-r--r--bin/sh/tests/set-e/background1.0 (renamed from tools/regression/bin/sh/set-e/background1.0)0
-rw-r--r--bin/sh/tests/set-e/cmd1.0 (renamed from tools/regression/bin/sh/set-e/cmd1.0)0
-rw-r--r--bin/sh/tests/set-e/cmd2.1 (renamed from tools/regression/bin/sh/set-e/cmd2.1)0
-rw-r--r--bin/sh/tests/set-e/elif1.0 (renamed from tools/regression/bin/sh/set-e/elif1.0)0
-rw-r--r--bin/sh/tests/set-e/elif2.0 (renamed from tools/regression/bin/sh/set-e/elif2.0)0
-rw-r--r--bin/sh/tests/set-e/eval1.0 (renamed from tools/regression/bin/sh/set-e/eval1.0)0
-rw-r--r--bin/sh/tests/set-e/eval2.1 (renamed from tools/regression/bin/sh/set-e/eval2.1)0
-rw-r--r--bin/sh/tests/set-e/for1.0 (renamed from tools/regression/bin/sh/set-e/for1.0)0
-rw-r--r--bin/sh/tests/set-e/func1.0 (renamed from tools/regression/bin/sh/set-e/func1.0)0
-rw-r--r--bin/sh/tests/set-e/func2.1 (renamed from tools/regression/bin/sh/set-e/func2.1)0
-rw-r--r--bin/sh/tests/set-e/if1.0 (renamed from tools/regression/bin/sh/set-e/if1.0)0
-rw-r--r--bin/sh/tests/set-e/if2.0 (renamed from tools/regression/bin/sh/set-e/if2.0)0
-rw-r--r--bin/sh/tests/set-e/if3.0 (renamed from tools/regression/bin/sh/set-e/if3.0)0
-rw-r--r--bin/sh/tests/set-e/not1.0 (renamed from tools/regression/bin/sh/set-e/not1.0)0
-rw-r--r--bin/sh/tests/set-e/not2.0 (renamed from tools/regression/bin/sh/set-e/not2.0)0
-rw-r--r--bin/sh/tests/set-e/or1.0 (renamed from tools/regression/bin/sh/set-e/or1.0)0
-rw-r--r--bin/sh/tests/set-e/or2.0 (renamed from tools/regression/bin/sh/set-e/or2.0)0
-rw-r--r--bin/sh/tests/set-e/or3.1 (renamed from tools/regression/bin/sh/set-e/or3.1)0
-rw-r--r--bin/sh/tests/set-e/pipe1.1 (renamed from tools/regression/bin/sh/set-e/pipe1.1)0
-rw-r--r--bin/sh/tests/set-e/pipe2.0 (renamed from tools/regression/bin/sh/set-e/pipe2.0)0
-rw-r--r--bin/sh/tests/set-e/return1.0 (renamed from tools/regression/bin/sh/set-e/return1.0)0
-rw-r--r--bin/sh/tests/set-e/semi1.1 (renamed from tools/regression/bin/sh/set-e/semi1.1)0
-rw-r--r--bin/sh/tests/set-e/semi2.1 (renamed from tools/regression/bin/sh/set-e/semi2.1)0
-rw-r--r--bin/sh/tests/set-e/subshell1.0 (renamed from tools/regression/bin/sh/set-e/subshell1.0)0
-rw-r--r--bin/sh/tests/set-e/subshell2.1 (renamed from tools/regression/bin/sh/set-e/subshell2.1)0
-rw-r--r--bin/sh/tests/set-e/until1.0 (renamed from tools/regression/bin/sh/set-e/until1.0)0
-rw-r--r--bin/sh/tests/set-e/until2.0 (renamed from tools/regression/bin/sh/set-e/until2.0)0
-rw-r--r--bin/sh/tests/set-e/until3.0 (renamed from tools/regression/bin/sh/set-e/until3.0)0
-rw-r--r--bin/sh/tests/set-e/while1.0 (renamed from tools/regression/bin/sh/set-e/while1.0)0
-rw-r--r--bin/sh/tests/set-e/while2.0 (renamed from tools/regression/bin/sh/set-e/while2.0)0
-rw-r--r--bin/sh/tests/set-e/while3.0 (renamed from tools/regression/bin/sh/set-e/while3.0)0
-rw-r--r--bin/sh/trap.c19
-rw-r--r--bin/sh/trap.h1
-rw-r--r--bin/sh/var.c24
-rw-r--r--bin/sh/var.h1
-rw-r--r--bin/test/Makefile6
-rw-r--r--bin/test/tests/Makefile15
-rw-r--r--bin/test/tests/legacy_test.sh (renamed from tools/regression/bin/test/regress.sh)0
-rw-r--r--bin/tests/Makefile10
-rw-r--r--etc/mtree/BSD.tests.dist26
-rw-r--r--tools/regression/bin/Makefile5
-rw-r--r--tools/regression/bin/date/Makefile4
-rw-r--r--tools/regression/bin/date/regress.t6
-rw-r--r--tools/regression/bin/mv/Makefile4
-rw-r--r--tools/regression/bin/mv/regress.t6
-rw-r--r--tools/regression/bin/pax/Makefile8
-rw-r--r--tools/regression/bin/sh/Makefile7
-rw-r--r--tools/regression/bin/sh/regress.t8
-rw-r--r--tools/regression/bin/test/Makefile4
-rw-r--r--tools/regression/bin/test/regress.t6
460 files changed, 907 insertions, 288 deletions
diff --git a/bin/Makefile b/bin/Makefile
index 7b6a4ab..e4bc281 100644
--- a/bin/Makefile
+++ b/bin/Makefile
@@ -52,6 +52,10 @@ SUBDIR+= rmail
SUBDIR+= csh
.endif
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.arch.inc.mk>
SUBDIR:= ${SUBDIR:O}
diff --git a/bin/date/Makefile b/bin/date/Makefile
index 4f5c3fe..6da5848 100644
--- a/bin/date/Makefile
+++ b/bin/date/Makefile
@@ -1,7 +1,13 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
# $FreeBSD$
+.include <bsd.own.mk>
+
PROG= date
SRCS= date.c netdate.c vary.c
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/bin/date/tests/Makefile b/bin/date/tests/Makefile
new file mode 100644
index 0000000..540008b
--- /dev/null
+++ b/bin/date/tests/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/bin/date
+
+TAP_TESTS_SH= legacy_test
+
+.include <tap.test.mk>
diff --git a/tools/regression/bin/date/regress.sh b/bin/date/tests/legacy_test.sh
index 981bdd0..981bdd0 100644
--- a/tools/regression/bin/date/regress.sh
+++ b/bin/date/tests/legacy_test.sh
diff --git a/bin/mv/Makefile b/bin/mv/Makefile
index 8405782..ad8cc4f 100644
--- a/bin/mv/Makefile
+++ b/bin/mv/Makefile
@@ -1,6 +1,12 @@
# @(#)Makefile 8.2 (Berkeley) 4/2/94
# $FreeBSD$
+.include <bsd.own.mk>
+
PROG= mv
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/bin/mv/tests/Makefile b/bin/mv/tests/Makefile
new file mode 100644
index 0000000..051a3b6
--- /dev/null
+++ b/bin/mv/tests/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/bin/mv
+
+TAP_TESTS_SH= legacy_test
+
+.include <tap.test.mk>
diff --git a/tools/regression/bin/mv/regress.sh b/bin/mv/tests/legacy_test.sh
index d0a5e83..d0a5e83 100644
--- a/tools/regression/bin/mv/regress.sh
+++ b/bin/mv/tests/legacy_test.sh
diff --git a/bin/pax/Makefile b/bin/pax/Makefile
index 9e8d4e1..95f18bb 100644
--- a/bin/pax/Makefile
+++ b/bin/pax/Makefile
@@ -1,6 +1,8 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
# $FreeBSD$
+.include <bsd.own.mk>
+
# To install on versions prior to BSD 4.4 the following may have to be
# defined with CFLAGS +=
#
@@ -30,4 +32,8 @@ SRCS= ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file_subs.c ftree.c \
gen_subs.c getoldopt.c options.c pat_rep.c pax.c sel_subs.c \
tables.c tar.c tty_subs.c
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/bin/pax/tests/Makefile b/bin/pax/tests/Makefile
new file mode 100644
index 0000000..f4f81ee
--- /dev/null
+++ b/bin/pax/tests/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/bin/pax
+
+TAP_TESTS_PERL= legacy_test
+
+.include <tap.test.mk>
diff --git a/tools/regression/bin/pax/regress.t b/bin/pax/tests/legacy_test.pl
index 7c392cb..dabba42 100755..100644
--- a/tools/regression/bin/pax/regress.t
+++ b/bin/pax/tests/legacy_test.pl
@@ -1,5 +1,3 @@
-#! /usr/bin/perl
-#
# $FreeBSD$
use strict;
diff --git a/bin/sh/Makefile b/bin/sh/Makefile
index 00d34fa..e1ce5fe 100644
--- a/bin/sh/Makefile
+++ b/bin/sh/Makefile
@@ -1,6 +1,8 @@
# @(#)Makefile 8.4 (Berkeley) 5/5/95
# $FreeBSD$
+.include <bsd.own.mk>
+
PROG= sh
INSTALLFLAGS= -S
SHSRCS= alias.c arith_yacc.c arith_yylex.c cd.c echo.c error.c eval.c \
@@ -59,7 +61,8 @@ syntax.c syntax.h: mksyntax
token.h: mktokens
sh ${.CURDIR}/mktokens
-regress:
- cd ${.CURDIR}/../../tools/regression/bin/sh && ${MAKE} SH=${.OBJDIR}/sh
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
.include <bsd.prog.mk>
diff --git a/bin/sh/alias.c b/bin/sh/alias.c
index 044c869..9ebdcb5 100644
--- a/bin/sh/alias.c
+++ b/bin/sh/alias.c
@@ -68,18 +68,7 @@ setalias(const char *name, const char *val)
if (equal(name, ap->name)) {
INTOFF;
ckfree(ap->val);
- /* See HACK below. */
-#ifdef notyet
ap->val = savestr(val);
-#else
- {
- size_t len = strlen(val);
- ap->val = ckmalloc(len + 2);
- memcpy(ap->val, val, len);
- ap->val[len] = ' ';
- ap->val[len+1] = '\0';
- }
-#endif
INTON;
return;
}
@@ -88,34 +77,7 @@ setalias(const char *name, const char *val)
INTOFF;
ap = ckmalloc(sizeof (struct alias));
ap->name = savestr(name);
- /*
- * XXX - HACK: in order that the parser will not finish reading the
- * alias value off the input before processing the next alias, we
- * dummy up an extra space at the end of the alias. This is a crock
- * and should be re-thought. The idea (if you feel inclined to help)
- * is to avoid alias recursions. The mechanism used is: when
- * expanding an alias, the value of the alias is pushed back on the
- * input as a string and a pointer to the alias is stored with the
- * string. The alias is marked as being in use. When the input
- * routine finishes reading the string, it marks the alias not
- * in use. The problem is synchronization with the parser. Since
- * it reads ahead, the alias is marked not in use before the
- * resulting token(s) is next checked for further alias sub. The
- * H A C K is that we add a little fluff after the alias value
- * so that the string will not be exhausted. This is a good
- * idea ------- ***NOT***
- */
-#ifdef notyet
ap->val = savestr(val);
-#else /* hack */
- {
- size_t len = strlen(val);
- ap->val = ckmalloc(len + 2);
- memcpy(ap->val, val, len);
- ap->val[len] = ' '; /* fluff */
- ap->val[len+1] = '\0';
- }
-#endif
ap->flag = 0;
ap->next = *app;
*app = ap;
@@ -207,14 +169,8 @@ comparealiases(const void *p1, const void *p2)
static void
printalias(const struct alias *a)
{
- char *p;
-
out1fmt("%s=", a->name);
- /* Don't print the space added above. */
- p = a->val + strlen(a->val) - 1;
- *p = '\0';
out1qstr(a->val);
- *p = ' ';
out1c('\n');
}
diff --git a/bin/sh/cd.c b/bin/sh/cd.c
index fa6f492..7720fad 100644
--- a/bin/sh/cd.c
+++ b/bin/sh/cd.c
@@ -182,6 +182,7 @@ cdlogical(char *dest)
struct stat statb;
int first;
int badstat;
+ size_t len;
/*
* Check each component of the path. If we find a symlink or
@@ -189,8 +190,9 @@ cdlogical(char *dest)
* next time we get the value of the current directory.
*/
badstat = 0;
- cdcomppath = stalloc(strlen(dest) + 1);
- scopy(dest, cdcomppath);
+ len = strlen(dest);
+ cdcomppath = stalloc(len + 1);
+ memcpy(cdcomppath, dest, len + 1);
STARTSTACKSTR(p);
if (*dest == '/') {
STPUTC('/', p);
@@ -275,6 +277,7 @@ findcwd(char *dir)
{
char *new;
char *p;
+ size_t len;
/*
* If our argument is NULL, we don't know the current directory
@@ -283,8 +286,9 @@ findcwd(char *dir)
*/
if (dir == NULL || curdir == NULL)
return getpwd2();
- cdcomppath = stalloc(strlen(dir) + 1);
- scopy(dir, cdcomppath);
+ len = strlen(dir);
+ cdcomppath = stalloc(len + 1);
+ memcpy(cdcomppath, dir, len + 1);
STARTSTACKSTR(new);
if (*dir != '/') {
STPUTS(curdir, new);
diff --git a/bin/sh/eval.c b/bin/sh/eval.c
index b8f76d5..4f7559e 100644
--- a/bin/sh/eval.c
+++ b/bin/sh/eval.c
@@ -750,6 +750,45 @@ isdeclarationcmd(struct narg *arg)
(have_command || !isfunc("local"))));
}
+static void
+xtracecommand(struct arglist *varlist, struct arglist *arglist)
+{
+ struct strlist *sp;
+ char sep = 0;
+ const char *p, *ps4;
+
+ ps4 = expandstr(ps4val());
+ out2str(ps4 != NULL ? ps4 : ps4val());
+ for (sp = varlist->list ; sp ; sp = sp->next) {
+ if (sep != 0)
+ out2c(' ');
+ p = strchr(sp->text, '=');
+ if (p != NULL) {
+ p++;
+ outbin(sp->text, p - sp->text, out2);
+ out2qstr(p);
+ } else
+ out2qstr(sp->text);
+ sep = ' ';
+ }
+ for (sp = arglist->list ; sp ; sp = sp->next) {
+ if (sep != 0)
+ out2c(' ');
+ /* Disambiguate command looking like assignment. */
+ if (sp == arglist->list &&
+ strchr(sp->text, '=') != NULL &&
+ strchr(sp->text, '\'') == NULL) {
+ out2c('\'');
+ out2str(sp->text);
+ out2c('\'');
+ } else
+ out2qstr(sp->text);
+ sep = ' ';
+ }
+ out2c('\n');
+ flushout(&errout);
+}
+
/*
* Check if a builtin can safely be executed in the same process,
* even though it should be in a subshell (command substitution).
@@ -847,40 +886,8 @@ evalcommand(union node *cmd, int flags, struct backcmd *backcmd)
argv -= argc;
/* Print the command if xflag is set. */
- if (xflag) {
- char sep = 0;
- const char *p, *ps4;
- ps4 = expandstr(ps4val());
- out2str(ps4 != NULL ? ps4 : ps4val());
- for (sp = varlist.list ; sp ; sp = sp->next) {
- if (sep != 0)
- out2c(' ');
- p = strchr(sp->text, '=');
- if (p != NULL) {
- p++;
- outbin(sp->text, p - sp->text, out2);
- out2qstr(p);
- } else
- out2qstr(sp->text);
- sep = ' ';
- }
- for (sp = arglist.list ; sp ; sp = sp->next) {
- if (sep != 0)
- out2c(' ');
- /* Disambiguate command looking like assignment. */
- if (sp == arglist.list &&
- strchr(sp->text, '=') != NULL &&
- strchr(sp->text, '\'') == NULL) {
- out2c('\'');
- out2str(sp->text);
- out2c('\'');
- } else
- out2qstr(sp->text);
- sep = ' ';
- }
- out2c('\n');
- flushout(&errout);
- }
+ if (xflag)
+ xtracecommand(&varlist, &arglist);
/* Now locate the command. */
if (argc == 0) {
diff --git a/bin/sh/exec.c b/bin/sh/exec.c
index 9f8e029..5f30ec6 100644
--- a/bin/sh/exec.c
+++ b/bin/sh/exec.c
@@ -187,14 +187,15 @@ padvance(const char **path, const char *name)
{
const char *p, *start;
char *q;
- size_t len;
+ size_t len, namelen;
if (*path == NULL)
return NULL;
start = *path;
for (p = start; *p && *p != ':' && *p != '%'; p++)
; /* nothing */
- len = p - start + strlen(name) + 2; /* "2" is for '/' and '\0' */
+ namelen = strlen(name);
+ len = p - start + namelen + 2; /* "2" is for '/' and '\0' */
STARTSTACKSTR(q);
CHECKSTRSPACE(len, q);
if (p != start) {
@@ -202,7 +203,7 @@ padvance(const char **path, const char *name)
q += p - start;
*q++ = '/';
}
- strcpy(q, name);
+ memcpy(q, name, namelen + 1);
pathopt = NULL;
if (*p == '%') {
pathopt = ++p;
@@ -527,6 +528,7 @@ cmdlookup(const char *name, int add)
const char *p;
struct tblentry *cmdp;
struct tblentry **pp;
+ size_t len;
p = name;
hashval = *p << 4;
@@ -541,11 +543,11 @@ cmdlookup(const char *name, int add)
}
if (add && cmdp == NULL) {
INTOFF;
- cmdp = *pp = ckmalloc(sizeof (struct tblentry)
- + strlen(name) + 1);
+ len = strlen(name);
+ cmdp = *pp = ckmalloc(sizeof (struct tblentry) + len + 1);
cmdp->next = NULL;
cmdp->cmdtype = CMDUNKNOWN;
- strcpy(cmdp->cmdname, name);
+ memcpy(cmdp->cmdname, name, len + 1);
INTON;
}
lastcmdentry = pp;
@@ -672,9 +674,11 @@ typecmd_impl(int argc, char **argv, int cmd, const char *path)
/* Then look at the aliases */
if ((ap = lookupalias(argv[i], 1)) != NULL) {
- if (cmd == TYPECMD_SMALLV)
- out1fmt("alias %s='%s'\n", argv[i], ap->val);
- else
+ if (cmd == TYPECMD_SMALLV) {
+ out1fmt("alias %s=", argv[i]);
+ out1qstr(ap->val);
+ outcslow('\n', out1);
+ } else
out1fmt("%s is an alias for %s\n", argv[i],
ap->val);
continue;
diff --git a/bin/sh/expand.c b/bin/sh/expand.c
index 414bfa7..cad0116 100644
--- a/bin/sh/expand.c
+++ b/bin/sh/expand.c
@@ -100,6 +100,7 @@ static struct arglist exparg; /* holds expanded arg list */
static void argstr(char *, int);
static char *exptilde(char *, int);
+static char *expari(char *);
static void expbackq(union node *, int, int);
static int subevalvar(char *, char *, int, int, int, int, int);
static char *evalvar(char *, int);
@@ -206,7 +207,7 @@ expandarg(union node *arg, struct arglist *arglist, int flag)
/*
* Perform parameter expansion, command substitution and arithmetic
* expansion, and tilde expansion if requested via EXP_TILDE/EXP_VARTILDE.
- * Processing ends at a CTLENDVAR character as well as '\0'.
+ * Processing ends at a CTLENDVAR or CTLENDARI character as well as '\0'.
* This is used to expand word in ${var+word} etc.
* If EXP_FULL, EXP_CASE or EXP_REDIR are set, keep and/or generate CTLESC
* characters to allow for further processing.
@@ -231,6 +232,7 @@ argstr(char *p, int flag)
switch (c = *p++) {
case '\0':
case CTLENDVAR:
+ case CTLENDARI:
goto breakloop;
case CTLQUOTEMARK:
lit_quoted = 1;
@@ -261,8 +263,8 @@ argstr(char *p, int flag)
expbackq(argbackq->n, c & CTLQUOTE, flag);
argbackq = argbackq->next;
break;
- case CTLENDARI:
- expari(flag);
+ case CTLARI:
+ p = expari(p);
break;
case ':':
case '=':
@@ -387,59 +389,56 @@ removerecordregions(int endoff)
}
/*
- * Expand arithmetic expression. Backup to start of expression,
- * evaluate, place result in (backed up) result, adjust string position.
+ * Expand arithmetic expression.
+ * Note that flag is not required as digits never require CTLESC characters.
*/
-void
-expari(int flag)
+static char *
+expari(char *p)
{
- char *p, *q, *start;
+ char *q, *start;
arith_t result;
int begoff;
- int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
int quoted;
+ int c;
+ int nesting;
+ int adj;
- /*
- * This routine is slightly over-complicated for
- * efficiency. First we make sure there is
- * enough space for the result, which may be bigger
- * than the expression. Next we
- * scan backwards looking for the start of arithmetic. If the
- * next previous character is a CTLESC character, then we
- * have to rescan starting from the beginning since CTLESC
- * characters have to be processed left to right.
- */
- CHECKSTRSPACE(DIGITS(result) - 2, expdest);
- USTPUTC('\0', expdest);
- start = stackblock();
- p = expdest - 2;
- while (p >= start && *p != CTLARI)
- --p;
- if (p < start || *p != CTLARI)
- error("missing CTLARI (shouldn't happen)");
- if (p > start && *(p - 1) == CTLESC)
- for (p = start; *p != CTLARI; p++)
- if (*p == CTLESC)
- p++;
-
- if (p[1] == '"')
- quoted=1;
- else
- quoted=0;
- begoff = p - start;
+ quoted = *p++ == '"';
+ begoff = expdest - stackblock();
+ argstr(p, 0);
removerecordregions(begoff);
- if (quotes)
- rmescapes(p+2);
+ STPUTC('\0', expdest);
+ start = stackblock() + begoff;
+
q = grabstackstr(expdest);
- result = arith(p+2);
+ result = arith(start);
ungrabstackstr(q, expdest);
- fmtstr(p, DIGITS(result), ARITH_FORMAT_STR, result);
- while (*p++)
- ;
- if (quoted == 0)
- recordregion(begoff, p - 1 - start, 0);
- result = expdest - p + 1;
- STADJUST(-result, expdest);
+
+ start = stackblock() + begoff;
+ adj = start - expdest;
+ STADJUST(adj, expdest);
+
+ CHECKSTRSPACE((int)(DIGITS(result) + 1), expdest);
+ fmtstr(expdest, DIGITS(result), ARITH_FORMAT_STR, result);
+ adj = strlen(expdest);
+ STADJUST(adj, expdest);
+ if (!quoted)
+ recordregion(begoff, expdest - stackblock(), 0);
+ nesting = 1;
+ while (nesting > 0) {
+ c = *p++;
+ if (c == CTLESC)
+ p++;
+ else if (c == CTLARI)
+ nesting++;
+ else if (c == CTLENDARI)
+ nesting--;
+ else if (c == CTLVAR)
+ p++; /* ignore variable substitution byte */
+ else if (c == '\0')
+ return p - 1;
+ }
+ return p;
}
@@ -671,10 +670,8 @@ evalvar(char *p, int flag)
again: /* jump here after setting a variable with ${var=text} */
if (varflags & VSLINENO) {
set = 1;
- special = 0;
- val = var;
- p[-1] = '\0'; /* temporarily overwrite '=' to have \0
- terminated string */
+ special = 1;
+ val = NULL;
} else if (special) {
set = varisset(var, varflags & VSNUL);
val = NULL;
@@ -703,7 +700,10 @@ again: /* jump here after setting a variable with ${var=text} */
if (set && subtype != VSPLUS) {
/* insert the value of the variable */
if (special) {
- varvalue(var, varflags & VSQUOTE, subtype, flag);
+ if (varflags & VSLINENO)
+ STPUTBIN(var, p - var - 1, expdest);
+ else
+ varvalue(var, varflags & VSQUOTE, subtype, flag);
if (subtype == VSLENGTH) {
varlenb = expdest - stackblock() - startloc;
varlen = varlenb;
@@ -815,7 +815,6 @@ record:
default:
abort();
}
- p[-1] = '='; /* recover overwritten '=' */
if (subtype != VSNORMAL) { /* skip to end of alternative */
int nesting = 1;
@@ -1307,9 +1306,11 @@ addfname(char *name)
{
char *p;
struct strlist *sp;
+ size_t len;
- p = stalloc(strlen(name) + 1);
- scopy(name, p);
+ len = strlen(name);
+ p = stalloc(len + 1);
+ memcpy(p, name, len + 1);
sp = (struct strlist *)stalloc(sizeof *sp);
sp->text = p;
*exparg.lastp = sp;
diff --git a/bin/sh/expand.h b/bin/sh/expand.h
index 8d44321..7495a63 100644
--- a/bin/sh/expand.h
+++ b/bin/sh/expand.h
@@ -58,6 +58,5 @@ struct arglist {
union node;
void expandarg(union node *, struct arglist *, int);
-void expari(int);
void rmescapes(char *);
int casematch(union node *, const char *);
diff --git a/bin/sh/input.c b/bin/sh/input.c
index e46095d..05cc1eb 100644
--- a/bin/sh/input.c
+++ b/bin/sh/input.c
@@ -162,20 +162,16 @@ preadfd(void)
int nr;
parsenextc = parsefile->buf;
-#ifndef NO_HISTORY
- if (el != NULL && gotwinch) {
- gotwinch = 0;
- el_resize(el);
- }
-#endif
retry:
#ifndef NO_HISTORY
if (parsefile->fd == 0 && el) {
static const char *rl_cp;
static int el_len;
- if (rl_cp == NULL)
+ if (rl_cp == NULL) {
+ el_resize(el);
rl_cp = el_gets(el, &el_len);
+ }
if (rl_cp == NULL)
nr = el_len == 0 ? 0 : -1;
else {
@@ -228,10 +224,16 @@ preadbuffer(void)
{
char *p, *q;
int more;
- int something;
char savec;
- if (parsefile->strpush) {
+ while (parsefile->strpush) {
+ /*
+ * Add a space to the end of an alias to ensure that the
+ * alias remains in use while parsing its last word.
+ * This avoids alias recursions.
+ */
+ if (parsenleft == -1 && parsefile->strpush->ap != NULL)
+ return ' ';
popstring();
if (--parsenleft >= 0)
return (*parsenextc++);
@@ -252,24 +254,18 @@ again:
q = p = parsefile->buf + (parsenextc - parsefile->buf);
/* delete nul characters */
- something = 0;
for (more = 1; more;) {
switch (*p) {
case '\0':
p++; /* Skip nul */
goto check;
- case '\t':
- case ' ':
- break;
-
case '\n':
parsenleft = q - parsenextc;
more = 0; /* Stop processing here */
break;
default:
- something = 1;
break;
}
@@ -288,7 +284,8 @@ check:
*q = '\0';
#ifndef NO_HISTORY
- if (parsefile->fd == 0 && hist && something) {
+ if (parsefile->fd == 0 && hist &&
+ parsenextc[strspn(parsenextc, " \t\n")] != '\0') {
HistEvent he;
INTOFF;
history(hist, &he, whichprompt == 1 ? H_ENTER : H_ADD,
@@ -370,12 +367,16 @@ popstring(void)
struct strpush *sp = parsefile->strpush;
INTOFF;
+ if (sp->ap) {
+ if (parsenextc != sp->ap->val &&
+ (parsenextc[-1] == ' ' || parsenextc[-1] == '\t'))
+ forcealias();
+ sp->ap->flag &= ~ALIASINUSE;
+ }
parsenextc = sp->prevstring;
parsenleft = sp->prevnleft;
parselleft = sp->prevlleft;
/*out2fmt_flush("*** calling popstring: restoring to '%s'\n", parsenextc);*/
- if (sp->ap)
- sp->ap->flag &= ~ALIASINUSE;
parsefile->strpush = sp->prev;
if (sp != &(parsefile->basestrpush))
ckfree(sp);
diff --git a/bin/sh/jobs.c b/bin/sh/jobs.c
index bbb954a..1c0c6bd 100644
--- a/bin/sh/jobs.c
+++ b/bin/sh/jobs.c
@@ -978,7 +978,6 @@ int
waitforjob(struct job *jp, int *origstatus)
{
#if JOBS
- pid_t mypgrp = getpgrp();
int propagate_int = jp->jobctl && jp->foreground;
#endif
int status;
@@ -992,7 +991,7 @@ waitforjob(struct job *jp, int *origstatus)
dotrap();
#if JOBS
if (jp->jobctl) {
- if (tcsetpgrp(ttyfd, mypgrp) < 0)
+ if (tcsetpgrp(ttyfd, rootpid) < 0)
error("tcsetpgrp failed, errno=%d\n", errno);
}
if (jp->state == JOBSTOPPED)
diff --git a/bin/sh/memalloc.c b/bin/sh/memalloc.c
index cb330d0..119f12e 100644
--- a/bin/sh/memalloc.c
+++ b/bin/sh/memalloc.c
@@ -98,9 +98,11 @@ char *
savestr(const char *s)
{
char *p;
+ size_t len;
- p = ckmalloc(strlen(s) + 1);
- scopy(s, p);
+ len = strlen(s);
+ p = ckmalloc(len + 1);
+ memcpy(p, s, len + 1);
return p;
}
diff --git a/bin/sh/mystring.c b/bin/sh/mystring.c
index 67617ec..de7e9b6 100644
--- a/bin/sh/mystring.c
+++ b/bin/sh/mystring.c
@@ -42,7 +42,6 @@ __FBSDID("$FreeBSD$");
* String functions.
*
* equal(s1, s2) Return true if strings are equal.
- * scopy(from, to) Copy a string.
* number(s) Convert a string of digits to an integer.
* is_number(s) Return true if s is a string of digits.
*/
@@ -60,10 +59,6 @@ char nullstr[1]; /* zero length string */
* equal - #defined in mystring.h
*/
-/*
- * scopy - #defined in mystring.h
- */
-
/*
* prefix -- see if pfx is a prefix of string.
diff --git a/bin/sh/mystring.h b/bin/sh/mystring.h
index 5a6e3d8..87b76c8 100644
--- a/bin/sh/mystring.h
+++ b/bin/sh/mystring.h
@@ -40,4 +40,3 @@ int number(const char *);
int is_number(const char *);
#define equal(s1, s2) (strcmp(s1, s2) == 0)
-#define scopy(s1, s2) ((void)strcpy(s2, s1))
diff --git a/bin/sh/nodetypes b/bin/sh/nodetypes
index 5e70c64..603c777 100644
--- a/bin/sh/nodetypes
+++ b/bin/sh/nodetypes
@@ -118,16 +118,16 @@ NFROMTO nfile # fd<> fname
NAPPEND nfile # fd>> fname
NCLOBBER nfile # fd>| fname
type int
- next nodeptr # next redirection in list
fd int # file descriptor being redirected
+ next nodeptr # next redirection in list
fname nodeptr # file name, in a NARG node
expfname temp char *expfname # actual file name
NTOFD ndup # fd<&dupfd
NFROMFD ndup # fd>&dupfd
type int
- next nodeptr # next redirection in list
fd int # file descriptor being redirected
+ next nodeptr # next redirection in list
dupfd int # file descriptor to duplicate
vname nodeptr # file name if fd>&$var
@@ -135,8 +135,8 @@ NFROMFD ndup # fd>&dupfd
NHERE nhere # fd<<\!
NXHERE nhere # fd<<!
type int
- next nodeptr # next redirection in list
fd int # file descriptor being redirected
+ next nodeptr # next redirection in list
doc nodeptr # input to command (NARG node)
expdoc temp char *expdoc # actual document (for NXHERE)
diff --git a/bin/sh/parser.c b/bin/sh/parser.c
index a0def64..e6e9f82 100644
--- a/bin/sh/parser.c
+++ b/bin/sh/parser.c
@@ -683,6 +683,12 @@ makebinary(int type, union node *n1, union node *n2)
}
void
+forcealias(void)
+{
+ checkkwd |= CHKALIAS;
+}
+
+void
fixredir(union node *n, const char *text, int err)
{
TRACE(("Fix redir %s %d\n", text, err));
diff --git a/bin/sh/parser.h b/bin/sh/parser.h
index d500d2f..5982594 100644
--- a/bin/sh/parser.h
+++ b/bin/sh/parser.h
@@ -76,6 +76,7 @@ extern const char *const parsekwd[];
union node *parsecmd(int);
+void forcealias(void);
void fixredir(union node *, const char *, int);
int goodname(const char *);
int isassignment(const char *);
diff --git a/bin/sh/redir.c b/bin/sh/redir.c
index 9325545..79728a0 100644
--- a/bin/sh/redir.c
+++ b/bin/sh/redir.c
@@ -69,6 +69,7 @@ __FBSDID("$FreeBSD$");
struct redirtab {
struct redirtab *next;
int renamed[10];
+ int fd0_redirected;
};
@@ -109,11 +110,14 @@ redirect(union node *redir, int flags)
sv = ckmalloc(sizeof (struct redirtab));
for (i = 0 ; i < 10 ; i++)
sv->renamed[i] = EMPTY;
+ sv->fd0_redirected = fd0_redirected;
sv->next = redirlist;
redirlist = sv;
}
for (n = redir ; n ; n = n->nfile.next) {
fd = n->nfile.fd;
+ if (fd == 0)
+ fd0_redirected = 1;
if ((n->nfile.type == NTOFD || n->nfile.type == NFROMFD) &&
n->ndup.dupfd == fd)
continue; /* redirect from/to same file descriptor */
@@ -134,8 +138,6 @@ redirect(union node *redir, int flags)
sv->renamed[fd] = i;
INTON;
}
- if (fd == 0)
- fd0_redirected++;
openredirect(n, memory);
}
if (memory[1])
@@ -303,8 +305,6 @@ popredir(void)
for (i = 0 ; i < 10 ; i++) {
if (rp->renamed[i] != EMPTY) {
- if (i == 0)
- fd0_redirected--;
if (rp->renamed[i] >= 0) {
dup2(rp->renamed[i], i);
close(rp->renamed[i]);
@@ -314,6 +314,7 @@ popredir(void)
}
}
INTOFF;
+ fd0_redirected = rp->fd0_redirected;
redirlist = rp->next;
ckfree(rp);
INTON;
diff --git a/bin/sh/sh.1 b/bin/sh/sh.1
index ff29be6..b5916a8 100644
--- a/bin/sh/sh.1
+++ b/bin/sh/sh.1
@@ -32,7 +32,7 @@
.\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95
.\" $FreeBSD$
.\"
-.Dd June 14, 2013
+.Dd January 26, 2014
.Dt SH 1
.Os
.Sh NAME
@@ -235,10 +235,16 @@ or
.Dq Li ||
operator; or if the command is a pipeline preceded by the
.Ic !\&
-operator.
+keyword.
If a shell function is executed and its exit status is explicitly
tested, all commands of the function are considered to be tested as
well.
+.Pp
+It is recommended to check for failures explicitly
+instead of relying on
+.Fl e
+because it tends to behave in unexpected ways,
+particularly in larger scripts.
.It Fl f Li noglob
Disable pathname expansion.
.It Fl h Li trackall
@@ -527,6 +533,20 @@ would become
.Pp
.Dl "ls -F foobar"
.Pp
+Aliases are also recognized after an alias
+whose value ends with a space or tab.
+For example, if there is also an alias called
+.Dq Li nohup
+with the value
+.Dq Li "nohup " ,
+then the input
+.Pp
+.Dl "nohup lf foobar"
+.Pp
+would become
+.Pp
+.Dl "nohup ls -F foobar"
+.Pp
Aliases provide a convenient way for naive users to
create shorthands for commands without having to learn how
to create functions with arguments.
diff --git a/bin/sh/show.c b/bin/sh/show.c
index 7cb3547..db18ae9 100644
--- a/bin/sh/show.c
+++ b/bin/sh/show.c
@@ -390,11 +390,11 @@ opentrace(void)
else
p = "/tmp";
}
- scopy(p, s);
+ strcpy(s, p);
strcat(s, "/trace");
}
#else
- scopy("./trace", s);
+ strcpy(s, "./trace");
#endif /* not_this_way */
if ((tracefile = fopen(s, "a")) == NULL) {
fprintf(stderr, "Can't open %s: %s\n", s, strerror(errno));
diff --git a/bin/sh/tests/Makefile b/bin/sh/tests/Makefile
new file mode 100644
index 0000000..f6ddb8a
--- /dev/null
+++ b/bin/sh/tests/Makefile
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/bin/sh
+
+TAP_TESTS_SH= legacy_test
+TAP_TESTS_SH_SED_legacy_test= -e 's,__SH__,/bin/sh,g'
+# Some tests in here are silently not run when the tests are executed as
+# root. Explicitly tell Kyua to drop privileges.
+#
+# TODO(jmmv): Kyua needs to do this by default, not only when explicitly
+# requested. See https://code.google.com/p/kyua/issues/detail?id=6
+TEST_METADATA.legacy_test+= required_user="unprivileged"
+
+SUBDIR+= builtins errors execution expansion parameters parser set-e
+
+.include <tap.test.mk>
diff --git a/bin/sh/tests/builtins/Makefile b/bin/sh/tests/builtins/Makefile
new file mode 100644
index 0000000..6f60f84
--- /dev/null
+++ b/bin/sh/tests/builtins/Makefile
@@ -0,0 +1,148 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+FILESDIR= ${TESTSBASE}/bin/sh/builtins
+KYUAFILE= no
+
+FILES= alias.0 alias.0.stdout
+FILES+= alias.1 alias.1.stderr
+FILES+= alias3.0 alias3.0.stdout
+FILES+= alias4.0
+FILES+= break1.0
+FILES+= break2.0 break2.0.stdout
+FILES+= break3.0
+FILES+= break4.4
+FILES+= break5.4
+FILES+= builtin1.0
+FILES+= case1.0
+FILES+= case2.0
+FILES+= case3.0
+FILES+= case4.0
+FILES+= case5.0
+FILES+= case6.0
+FILES+= case7.0
+FILES+= case8.0
+FILES+= case9.0
+FILES+= case10.0
+FILES+= case11.0
+FILES+= case12.0
+FILES+= case13.0
+FILES+= case14.0
+FILES+= case15.0
+FILES+= case16.0
+FILES+= case17.0
+FILES+= case18.0
+FILES+= case19.0
+FILES+= cd1.0
+FILES+= cd2.0
+FILES+= cd3.0
+FILES+= cd4.0
+FILES+= cd5.0
+FILES+= cd6.0
+FILES+= cd7.0
+FILES+= cd8.0
+FILES+= command1.0
+FILES+= command2.0
+FILES+= command3.0
+FILES+= command3.0.stdout
+FILES+= command4.0
+FILES+= command5.0
+FILES+= command5.0.stdout
+FILES+= command6.0
+FILES+= command6.0.stdout
+FILES+= command7.0
+FILES+= command8.0
+FILES+= command9.0
+FILES+= command10.0
+FILES+= command11.0
+FILES+= command12.0
+FILES+= dot1.0
+FILES+= dot2.0
+FILES+= dot3.0
+FILES+= dot4.0
+FILES+= eval1.0
+FILES+= eval2.0
+FILES+= eval3.0
+FILES+= eval4.0
+FILES+= eval5.0
+FILES+= eval6.0
+FILES+= exec1.0
+FILES+= exec2.0
+FILES+= exit1.0
+FILES+= exit2.8
+FILES+= exit3.0
+FILES+= export1.0
+FILES+= fc1.0
+FILES+= fc2.0
+FILES+= for1.0
+FILES+= for2.0
+FILES+= for3.0
+FILES+= getopts1.0 getopts1.0.stdout
+FILES+= getopts2.0 getopts2.0.stdout
+FILES+= hash1.0 hash1.0.stdout
+FILES+= hash2.0 hash2.0.stdout
+FILES+= hash3.0 hash3.0.stdout
+FILES+= hash4.0
+FILES+= jobid1.0
+FILES+= jobid2.0
+FILES+= lineno.0 lineno.0.stdout
+FILES+= lineno2.0
+FILES+= local1.0
+FILES+= local2.0
+FILES+= local3.0
+FILES+= local4.0
+FILES+= locale1.0
+FILES+= printf1.0
+FILES+= printf2.0
+FILES+= printf3.0
+FILES+= printf4.0
+FILES+= read1.0 read1.0.stdout
+FILES+= read2.0
+FILES+= read3.0 read3.0.stdout
+FILES+= read4.0 read4.0.stdout
+FILES+= read5.0
+FILES+= read6.0
+FILES+= read7.0
+FILES+= return1.0
+FILES+= return2.1
+FILES+= return3.1
+FILES+= return4.0
+FILES+= return5.0
+FILES+= return6.4
+FILES+= return7.4
+FILES+= return8.0
+FILES+= set1.0
+FILES+= set2.0
+FILES+= trap1.0
+FILES+= trap10.0
+FILES+= trap11.0
+FILES+= trap12.0
+FILES+= trap13.0
+FILES+= trap14.0
+FILES+= trap2.0
+FILES+= trap3.0
+FILES+= trap4.0
+FILES+= trap5.0
+FILES+= trap6.0
+FILES+= trap7.0
+FILES+= trap8.0
+FILES+= trap9.0
+FILES+= type1.0 type1.0.stderr
+FILES+= type2.0
+FILES+= type3.0
+FILES+= unalias.0
+FILES+= var-assign.0
+FILES+= var-assign2.0
+FILES+= wait1.0
+FILES+= wait2.0
+FILES+= wait3.0
+FILES+= wait4.0
+FILES+= wait5.0
+FILES+= wait6.0
+FILES+= wait7.0
+FILES+= wait8.0
+FILES+= wait9.127
+FILES+= wait10.0
+
+.include <bsd.test.mk>
diff --git a/tools/regression/bin/sh/builtins/alias.0 b/bin/sh/tests/builtins/alias.0
index d9b2796..d9b2796 100644
--- a/tools/regression/bin/sh/builtins/alias.0
+++ b/bin/sh/tests/builtins/alias.0
diff --git a/tools/regression/bin/sh/builtins/alias.0.stdout b/bin/sh/tests/builtins/alias.0.stdout
index 52efaf0..52efaf0 100644
--- a/tools/regression/bin/sh/builtins/alias.0.stdout
+++ b/bin/sh/tests/builtins/alias.0.stdout
diff --git a/tools/regression/bin/sh/builtins/alias.1 b/bin/sh/tests/builtins/alias.1
index 31403dc..31403dc 100644
--- a/tools/regression/bin/sh/builtins/alias.1
+++ b/bin/sh/tests/builtins/alias.1
diff --git a/tools/regression/bin/sh/builtins/alias.1.stderr b/bin/sh/tests/builtins/alias.1.stderr
index c9f4011..c9f4011 100644
--- a/tools/regression/bin/sh/builtins/alias.1.stderr
+++ b/bin/sh/tests/builtins/alias.1.stderr
diff --git a/tools/regression/bin/sh/builtins/alias3.0 b/bin/sh/tests/builtins/alias3.0
index fe65e31f..fe65e31f 100644
--- a/tools/regression/bin/sh/builtins/alias3.0
+++ b/bin/sh/tests/builtins/alias3.0
diff --git a/tools/regression/bin/sh/builtins/alias3.0.stdout b/bin/sh/tests/builtins/alias3.0.stdout
index 52efaf0..52efaf0 100644
--- a/tools/regression/bin/sh/builtins/alias3.0.stdout
+++ b/bin/sh/tests/builtins/alias3.0.stdout
diff --git a/tools/regression/bin/sh/builtins/alias4.0 b/bin/sh/tests/builtins/alias4.0
index 3d5efec..3d5efec 100644
--- a/tools/regression/bin/sh/builtins/alias4.0
+++ b/bin/sh/tests/builtins/alias4.0
diff --git a/tools/regression/bin/sh/builtins/break1.0 b/bin/sh/tests/builtins/break1.0
index ba0cbb4..ba0cbb4 100644
--- a/tools/regression/bin/sh/builtins/break1.0
+++ b/bin/sh/tests/builtins/break1.0
diff --git a/tools/regression/bin/sh/builtins/break2.0 b/bin/sh/tests/builtins/break2.0
index ff52dd3..ff52dd3 100644
--- a/tools/regression/bin/sh/builtins/break2.0
+++ b/bin/sh/tests/builtins/break2.0
diff --git a/tools/regression/bin/sh/builtins/break2.0.stdout b/bin/sh/tests/builtins/break2.0.stdout
index 12799cc..12799cc 100644
--- a/tools/regression/bin/sh/builtins/break2.0.stdout
+++ b/bin/sh/tests/builtins/break2.0.stdout
diff --git a/tools/regression/bin/sh/builtins/break3.0 b/bin/sh/tests/builtins/break3.0
index 10a5ca8..10a5ca8 100644
--- a/tools/regression/bin/sh/builtins/break3.0
+++ b/bin/sh/tests/builtins/break3.0
diff --git a/tools/regression/bin/sh/builtins/break4.4 b/bin/sh/tests/builtins/break4.4
index d52ff52..d52ff52 100644
--- a/tools/regression/bin/sh/builtins/break4.4
+++ b/bin/sh/tests/builtins/break4.4
diff --git a/tools/regression/bin/sh/builtins/break5.4 b/bin/sh/tests/builtins/break5.4
index 7df8e18..7df8e18 100644
--- a/tools/regression/bin/sh/builtins/break5.4
+++ b/bin/sh/tests/builtins/break5.4
diff --git a/tools/regression/bin/sh/builtins/builtin1.0 b/bin/sh/tests/builtins/builtin1.0
index b608385..b608385 100644
--- a/tools/regression/bin/sh/builtins/builtin1.0
+++ b/bin/sh/tests/builtins/builtin1.0
diff --git a/tools/regression/bin/sh/builtins/case1.0 b/bin/sh/tests/builtins/case1.0
index 860fc67..860fc67 100644
--- a/tools/regression/bin/sh/builtins/case1.0
+++ b/bin/sh/tests/builtins/case1.0
diff --git a/tools/regression/bin/sh/builtins/case10.0 b/bin/sh/tests/builtins/case10.0
index a627b5c..a627b5c 100644
--- a/tools/regression/bin/sh/builtins/case10.0
+++ b/bin/sh/tests/builtins/case10.0
diff --git a/tools/regression/bin/sh/builtins/case11.0 b/bin/sh/tests/builtins/case11.0
index 0e66e11..0e66e11 100644
--- a/tools/regression/bin/sh/builtins/case11.0
+++ b/bin/sh/tests/builtins/case11.0
diff --git a/tools/regression/bin/sh/builtins/case12.0 b/bin/sh/tests/builtins/case12.0
index 2a442ba..2a442ba 100644
--- a/tools/regression/bin/sh/builtins/case12.0
+++ b/bin/sh/tests/builtins/case12.0
diff --git a/tools/regression/bin/sh/builtins/case13.0 b/bin/sh/tests/builtins/case13.0
index 78f4e9b..78f4e9b 100644
--- a/tools/regression/bin/sh/builtins/case13.0
+++ b/bin/sh/tests/builtins/case13.0
diff --git a/tools/regression/bin/sh/builtins/case14.0 b/bin/sh/tests/builtins/case14.0
index 0338e8a..0338e8a 100644
--- a/tools/regression/bin/sh/builtins/case14.0
+++ b/bin/sh/tests/builtins/case14.0
diff --git a/tools/regression/bin/sh/builtins/case15.0 b/bin/sh/tests/builtins/case15.0
index 09b0e11..09b0e11 100644
--- a/tools/regression/bin/sh/builtins/case15.0
+++ b/bin/sh/tests/builtins/case15.0
diff --git a/tools/regression/bin/sh/builtins/case16.0 b/bin/sh/tests/builtins/case16.0
index 2430302..2430302 100644
--- a/tools/regression/bin/sh/builtins/case16.0
+++ b/bin/sh/tests/builtins/case16.0
diff --git a/tools/regression/bin/sh/builtins/case17.0 b/bin/sh/tests/builtins/case17.0
index ed1d25f..ed1d25f 100644
--- a/tools/regression/bin/sh/builtins/case17.0
+++ b/bin/sh/tests/builtins/case17.0
diff --git a/tools/regression/bin/sh/builtins/case18.0 b/bin/sh/tests/builtins/case18.0
index 470253f..470253f 100644
--- a/tools/regression/bin/sh/builtins/case18.0
+++ b/bin/sh/tests/builtins/case18.0
diff --git a/tools/regression/bin/sh/builtins/case19.0 b/bin/sh/tests/builtins/case19.0
index 215066a..215066a 100644
--- a/tools/regression/bin/sh/builtins/case19.0
+++ b/bin/sh/tests/builtins/case19.0
diff --git a/tools/regression/bin/sh/builtins/case2.0 b/bin/sh/tests/builtins/case2.0
index e319148..e319148 100644
--- a/tools/regression/bin/sh/builtins/case2.0
+++ b/bin/sh/tests/builtins/case2.0
diff --git a/tools/regression/bin/sh/builtins/case3.0 b/bin/sh/tests/builtins/case3.0
index 42e53d6..42e53d6 100644
--- a/tools/regression/bin/sh/builtins/case3.0
+++ b/bin/sh/tests/builtins/case3.0
diff --git a/tools/regression/bin/sh/builtins/case4.0 b/bin/sh/tests/builtins/case4.0
index 18219f5..18219f5 100644
--- a/tools/regression/bin/sh/builtins/case4.0
+++ b/bin/sh/tests/builtins/case4.0
diff --git a/tools/regression/bin/sh/builtins/case5.0 b/bin/sh/tests/builtins/case5.0
index 8c6db5a..8c6db5a 100644
--- a/tools/regression/bin/sh/builtins/case5.0
+++ b/bin/sh/tests/builtins/case5.0
diff --git a/tools/regression/bin/sh/builtins/case6.0 b/bin/sh/tests/builtins/case6.0
index 8d79183..8d79183 100644
--- a/tools/regression/bin/sh/builtins/case6.0
+++ b/bin/sh/tests/builtins/case6.0
diff --git a/tools/regression/bin/sh/builtins/case7.0 b/bin/sh/tests/builtins/case7.0
index 96b9de6..96b9de6 100644
--- a/tools/regression/bin/sh/builtins/case7.0
+++ b/bin/sh/tests/builtins/case7.0
diff --git a/tools/regression/bin/sh/builtins/case8.0 b/bin/sh/tests/builtins/case8.0
index 8d9f8b6..8d9f8b6 100644
--- a/tools/regression/bin/sh/builtins/case8.0
+++ b/bin/sh/tests/builtins/case8.0
diff --git a/tools/regression/bin/sh/builtins/case9.0 b/bin/sh/tests/builtins/case9.0
index 476caec..476caec 100644
--- a/tools/regression/bin/sh/builtins/case9.0
+++ b/bin/sh/tests/builtins/case9.0
diff --git a/tools/regression/bin/sh/builtins/cd1.0 b/bin/sh/tests/builtins/cd1.0
index bc5108e..bc5108e 100644
--- a/tools/regression/bin/sh/builtins/cd1.0
+++ b/bin/sh/tests/builtins/cd1.0
diff --git a/tools/regression/bin/sh/builtins/cd2.0 b/bin/sh/tests/builtins/cd2.0
index f2b6416..f2b6416 100644
--- a/tools/regression/bin/sh/builtins/cd2.0
+++ b/bin/sh/tests/builtins/cd2.0
diff --git a/tools/regression/bin/sh/builtins/cd3.0 b/bin/sh/tests/builtins/cd3.0
index 7729c54..7729c54 100644
--- a/tools/regression/bin/sh/builtins/cd3.0
+++ b/bin/sh/tests/builtins/cd3.0
diff --git a/tools/regression/bin/sh/builtins/cd4.0 b/bin/sh/tests/builtins/cd4.0
index df3a9a4..df3a9a4 100644
--- a/tools/regression/bin/sh/builtins/cd4.0
+++ b/bin/sh/tests/builtins/cd4.0
diff --git a/tools/regression/bin/sh/builtins/cd5.0 b/bin/sh/tests/builtins/cd5.0
index 3dff604..3dff604 100644
--- a/tools/regression/bin/sh/builtins/cd5.0
+++ b/bin/sh/tests/builtins/cd5.0
diff --git a/tools/regression/bin/sh/builtins/cd6.0 b/bin/sh/tests/builtins/cd6.0
index 083a061..083a061 100644
--- a/tools/regression/bin/sh/builtins/cd6.0
+++ b/bin/sh/tests/builtins/cd6.0
diff --git a/tools/regression/bin/sh/builtins/cd7.0 b/bin/sh/tests/builtins/cd7.0
index 9adda86..9adda86 100644
--- a/tools/regression/bin/sh/builtins/cd7.0
+++ b/bin/sh/tests/builtins/cd7.0
diff --git a/tools/regression/bin/sh/builtins/cd8.0 b/bin/sh/tests/builtins/cd8.0
index a68f77f..a68f77f 100644
--- a/tools/regression/bin/sh/builtins/cd8.0
+++ b/bin/sh/tests/builtins/cd8.0
diff --git a/tools/regression/bin/sh/builtins/command1.0 b/bin/sh/tests/builtins/command1.0
index fd0afdf..fd0afdf 100644
--- a/tools/regression/bin/sh/builtins/command1.0
+++ b/bin/sh/tests/builtins/command1.0
diff --git a/tools/regression/bin/sh/builtins/command10.0 b/bin/sh/tests/builtins/command10.0
index 2c1adf1..2c1adf1 100644
--- a/tools/regression/bin/sh/builtins/command10.0
+++ b/bin/sh/tests/builtins/command10.0
diff --git a/tools/regression/bin/sh/builtins/command11.0 b/bin/sh/tests/builtins/command11.0
index 10c8647..10c8647 100644
--- a/tools/regression/bin/sh/builtins/command11.0
+++ b/bin/sh/tests/builtins/command11.0
diff --git a/bin/sh/tests/builtins/command12.0 b/bin/sh/tests/builtins/command12.0
new file mode 100644
index 0000000..f981db3
--- /dev/null
+++ b/bin/sh/tests/builtins/command12.0
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+alias aa=echo\ \'\"\'
+cmd=$(command -v aa)
+alias aa=echo\ bad
+eval "$cmd"
+[ "$(eval aa)" = \" ]
diff --git a/tools/regression/bin/sh/builtins/command2.0 b/bin/sh/tests/builtins/command2.0
index ff7b5f2..ff7b5f2 100644
--- a/tools/regression/bin/sh/builtins/command2.0
+++ b/bin/sh/tests/builtins/command2.0
diff --git a/tools/regression/bin/sh/builtins/command3.0 b/bin/sh/tests/builtins/command3.0
index 9d4ae89..9d4ae89 100644
--- a/tools/regression/bin/sh/builtins/command3.0
+++ b/bin/sh/tests/builtins/command3.0
diff --git a/tools/regression/bin/sh/builtins/command3.0.stdout b/bin/sh/tests/builtins/command3.0.stdout
index 239c53f..67b8691 100644
--- a/tools/regression/bin/sh/builtins/command3.0.stdout
+++ b/bin/sh/tests/builtins/command3.0.stdout
@@ -4,4 +4,4 @@ true
fun
break
if
-alias foo='bar '
+alias foo=bar
diff --git a/tools/regression/bin/sh/builtins/command4.0 b/bin/sh/tests/builtins/command4.0
index 3e49613..3e49613 100644
--- a/tools/regression/bin/sh/builtins/command4.0
+++ b/bin/sh/tests/builtins/command4.0
diff --git a/tools/regression/bin/sh/builtins/command5.0 b/bin/sh/tests/builtins/command5.0
index 13b3fe1..13b3fe1 100644
--- a/tools/regression/bin/sh/builtins/command5.0
+++ b/bin/sh/tests/builtins/command5.0
diff --git a/tools/regression/bin/sh/builtins/command5.0.stdout b/bin/sh/tests/builtins/command5.0.stdout
index 4cb2b11..523f7b2 100644
--- a/tools/regression/bin/sh/builtins/command5.0.stdout
+++ b/bin/sh/tests/builtins/command5.0.stdout
@@ -5,4 +5,4 @@ fun is a shell function
break is a special shell builtin
if is a shell keyword
{ is a shell keyword
-foo is an alias for bar
+foo is an alias for bar
diff --git a/tools/regression/bin/sh/builtins/command6.0 b/bin/sh/tests/builtins/command6.0
index 5b63bfe..5b63bfe 100644
--- a/tools/regression/bin/sh/builtins/command6.0
+++ b/bin/sh/tests/builtins/command6.0
diff --git a/tools/regression/bin/sh/builtins/command6.0.stdout b/bin/sh/tests/builtins/command6.0.stdout
index df4d647..3180207 100644
--- a/tools/regression/bin/sh/builtins/command6.0.stdout
+++ b/bin/sh/tests/builtins/command6.0.stdout
@@ -4,4 +4,4 @@ fun is a shell function
break is a special shell builtin
if is a shell keyword
{ is a shell keyword
-foo is an alias for bar
+foo is an alias for bar
diff --git a/tools/regression/bin/sh/builtins/command7.0 b/bin/sh/tests/builtins/command7.0
index fc652f2..fc652f2 100644
--- a/tools/regression/bin/sh/builtins/command7.0
+++ b/bin/sh/tests/builtins/command7.0
diff --git a/tools/regression/bin/sh/builtins/command8.0 b/bin/sh/tests/builtins/command8.0
index 9e3a2b6..9e3a2b6 100644
--- a/tools/regression/bin/sh/builtins/command8.0
+++ b/bin/sh/tests/builtins/command8.0
diff --git a/tools/regression/bin/sh/builtins/command9.0 b/bin/sh/tests/builtins/command9.0
index 212e52a..212e52a 100644
--- a/tools/regression/bin/sh/builtins/command9.0
+++ b/bin/sh/tests/builtins/command9.0
diff --git a/tools/regression/bin/sh/builtins/dot1.0 b/bin/sh/tests/builtins/dot1.0
index 43eab0d..43eab0d 100644
--- a/tools/regression/bin/sh/builtins/dot1.0
+++ b/bin/sh/tests/builtins/dot1.0
diff --git a/tools/regression/bin/sh/builtins/dot2.0 b/bin/sh/tests/builtins/dot2.0
index ed6379b..ed6379b 100644
--- a/tools/regression/bin/sh/builtins/dot2.0
+++ b/bin/sh/tests/builtins/dot2.0
diff --git a/tools/regression/bin/sh/builtins/dot3.0 b/bin/sh/tests/builtins/dot3.0
index b337f0f..b337f0f 100644
--- a/tools/regression/bin/sh/builtins/dot3.0
+++ b/bin/sh/tests/builtins/dot3.0
diff --git a/tools/regression/bin/sh/builtins/dot4.0 b/bin/sh/tests/builtins/dot4.0
index b898131..b898131 100644
--- a/tools/regression/bin/sh/builtins/dot4.0
+++ b/bin/sh/tests/builtins/dot4.0
diff --git a/tools/regression/bin/sh/builtins/eval1.0 b/bin/sh/tests/builtins/eval1.0
index 04606a4..04606a4 100644
--- a/tools/regression/bin/sh/builtins/eval1.0
+++ b/bin/sh/tests/builtins/eval1.0
diff --git a/tools/regression/bin/sh/builtins/eval2.0 b/bin/sh/tests/builtins/eval2.0
index bf06b6e..bf06b6e 100644
--- a/tools/regression/bin/sh/builtins/eval2.0
+++ b/bin/sh/tests/builtins/eval2.0
diff --git a/tools/regression/bin/sh/builtins/eval3.0 b/bin/sh/tests/builtins/eval3.0
index dfb8357..dfb8357 100644
--- a/tools/regression/bin/sh/builtins/eval3.0
+++ b/bin/sh/tests/builtins/eval3.0
diff --git a/tools/regression/bin/sh/builtins/eval4.0 b/bin/sh/tests/builtins/eval4.0
index 67da2f5..67da2f5 100644
--- a/tools/regression/bin/sh/builtins/eval4.0
+++ b/bin/sh/tests/builtins/eval4.0
diff --git a/tools/regression/bin/sh/builtins/eval5.0 b/bin/sh/tests/builtins/eval5.0
index 3e86de9..3e86de9 100644
--- a/tools/regression/bin/sh/builtins/eval5.0
+++ b/bin/sh/tests/builtins/eval5.0
diff --git a/tools/regression/bin/sh/builtins/eval6.0 b/bin/sh/tests/builtins/eval6.0
index 6752bb6..6752bb6 100644
--- a/tools/regression/bin/sh/builtins/eval6.0
+++ b/bin/sh/tests/builtins/eval6.0
diff --git a/tools/regression/bin/sh/builtins/exec1.0 b/bin/sh/tests/builtins/exec1.0
index dd30a4c..dd30a4c 100644
--- a/tools/regression/bin/sh/builtins/exec1.0
+++ b/bin/sh/tests/builtins/exec1.0
diff --git a/tools/regression/bin/sh/builtins/exec2.0 b/bin/sh/tests/builtins/exec2.0
index 3dcb6c4..3dcb6c4 100644
--- a/tools/regression/bin/sh/builtins/exec2.0
+++ b/bin/sh/tests/builtins/exec2.0
diff --git a/tools/regression/bin/sh/builtins/exit1.0 b/bin/sh/tests/builtins/exit1.0
index 496d448..496d448 100644
--- a/tools/regression/bin/sh/builtins/exit1.0
+++ b/bin/sh/tests/builtins/exit1.0
diff --git a/tools/regression/bin/sh/builtins/exit2.8 b/bin/sh/tests/builtins/exit2.8
index 124c32e..124c32e 100644
--- a/tools/regression/bin/sh/builtins/exit2.8
+++ b/bin/sh/tests/builtins/exit2.8
diff --git a/tools/regression/bin/sh/builtins/exit3.0 b/bin/sh/tests/builtins/exit3.0
index 80655ac..80655ac 100644
--- a/tools/regression/bin/sh/builtins/exit3.0
+++ b/bin/sh/tests/builtins/exit3.0
diff --git a/tools/regression/bin/sh/builtins/export1.0 b/bin/sh/tests/builtins/export1.0
index 7b08c9d..7b08c9d 100644
--- a/tools/regression/bin/sh/builtins/export1.0
+++ b/bin/sh/tests/builtins/export1.0
diff --git a/tools/regression/bin/sh/builtins/fc1.0 b/bin/sh/tests/builtins/fc1.0
index ab7a387..ab7a387 100644
--- a/tools/regression/bin/sh/builtins/fc1.0
+++ b/bin/sh/tests/builtins/fc1.0
diff --git a/tools/regression/bin/sh/builtins/fc2.0 b/bin/sh/tests/builtins/fc2.0
index 7eb92ac..7eb92ac 100644
--- a/tools/regression/bin/sh/builtins/fc2.0
+++ b/bin/sh/tests/builtins/fc2.0
diff --git a/tools/regression/bin/sh/builtins/for1.0 b/bin/sh/tests/builtins/for1.0
index cd55e2c..cd55e2c 100644
--- a/tools/regression/bin/sh/builtins/for1.0
+++ b/bin/sh/tests/builtins/for1.0
diff --git a/tools/regression/bin/sh/builtins/for2.0 b/bin/sh/tests/builtins/for2.0
index 48c22ce..48c22ce 100644
--- a/tools/regression/bin/sh/builtins/for2.0
+++ b/bin/sh/tests/builtins/for2.0
diff --git a/tools/regression/bin/sh/builtins/for3.0 b/bin/sh/tests/builtins/for3.0
index cc37238..cc37238 100644
--- a/tools/regression/bin/sh/builtins/for3.0
+++ b/bin/sh/tests/builtins/for3.0
diff --git a/tools/regression/bin/sh/builtins/getopts1.0 b/bin/sh/tests/builtins/getopts1.0
index af31d55..af31d55 100644
--- a/tools/regression/bin/sh/builtins/getopts1.0
+++ b/bin/sh/tests/builtins/getopts1.0
diff --git a/tools/regression/bin/sh/builtins/getopts1.0.stdout b/bin/sh/tests/builtins/getopts1.0.stdout
index a0a347e..a0a347e 100644
--- a/tools/regression/bin/sh/builtins/getopts1.0.stdout
+++ b/bin/sh/tests/builtins/getopts1.0.stdout
diff --git a/tools/regression/bin/sh/builtins/getopts2.0 b/bin/sh/tests/builtins/getopts2.0
index 5a5dbe2..5a5dbe2 100644
--- a/tools/regression/bin/sh/builtins/getopts2.0
+++ b/bin/sh/tests/builtins/getopts2.0
diff --git a/tools/regression/bin/sh/builtins/getopts2.0.stdout b/bin/sh/tests/builtins/getopts2.0.stdout
index 587be6b..587be6b 100644
--- a/tools/regression/bin/sh/builtins/getopts2.0.stdout
+++ b/bin/sh/tests/builtins/getopts2.0.stdout
diff --git a/tools/regression/bin/sh/builtins/hash1.0 b/bin/sh/tests/builtins/hash1.0
index 45cc300..45cc300 100644
--- a/tools/regression/bin/sh/builtins/hash1.0
+++ b/bin/sh/tests/builtins/hash1.0
diff --git a/tools/regression/bin/sh/builtins/hash1.0.stdout b/bin/sh/tests/builtins/hash1.0.stdout
index 3afc3e7..3afc3e7 100644
--- a/tools/regression/bin/sh/builtins/hash1.0.stdout
+++ b/bin/sh/tests/builtins/hash1.0.stdout
diff --git a/tools/regression/bin/sh/builtins/hash2.0 b/bin/sh/tests/builtins/hash2.0
index e5cd21b..e5cd21b 100644
--- a/tools/regression/bin/sh/builtins/hash2.0
+++ b/bin/sh/tests/builtins/hash2.0
diff --git a/tools/regression/bin/sh/builtins/hash2.0.stdout b/bin/sh/tests/builtins/hash2.0.stdout
index 3afc3e7..3afc3e7 100644
--- a/tools/regression/bin/sh/builtins/hash2.0.stdout
+++ b/bin/sh/tests/builtins/hash2.0.stdout
diff --git a/tools/regression/bin/sh/builtins/hash3.0 b/bin/sh/tests/builtins/hash3.0
index eade0b3..eade0b3 100644
--- a/tools/regression/bin/sh/builtins/hash3.0
+++ b/bin/sh/tests/builtins/hash3.0
diff --git a/tools/regression/bin/sh/builtins/hash3.0.stdout b/bin/sh/tests/builtins/hash3.0.stdout
index a34864c..a34864c 100644
--- a/tools/regression/bin/sh/builtins/hash3.0.stdout
+++ b/bin/sh/tests/builtins/hash3.0.stdout
diff --git a/tools/regression/bin/sh/builtins/hash4.0 b/bin/sh/tests/builtins/hash4.0
index dec584c..dec584c 100644
--- a/tools/regression/bin/sh/builtins/hash4.0
+++ b/bin/sh/tests/builtins/hash4.0
diff --git a/tools/regression/bin/sh/builtins/jobid1.0 b/bin/sh/tests/builtins/jobid1.0
index 483fda2..483fda2 100644
--- a/tools/regression/bin/sh/builtins/jobid1.0
+++ b/bin/sh/tests/builtins/jobid1.0
diff --git a/tools/regression/bin/sh/builtins/jobid2.0 b/bin/sh/tests/builtins/jobid2.0
index 101831a..101831a 100644
--- a/tools/regression/bin/sh/builtins/jobid2.0
+++ b/bin/sh/tests/builtins/jobid2.0
diff --git a/tools/regression/bin/sh/builtins/lineno.0 b/bin/sh/tests/builtins/lineno.0
index c9311f8..c9311f8 100644
--- a/tools/regression/bin/sh/builtins/lineno.0
+++ b/bin/sh/tests/builtins/lineno.0
diff --git a/tools/regression/bin/sh/builtins/lineno.0.stdout b/bin/sh/tests/builtins/lineno.0.stdout
index 82583a9..82583a9 100644
--- a/tools/regression/bin/sh/builtins/lineno.0.stdout
+++ b/bin/sh/tests/builtins/lineno.0.stdout
diff --git a/bin/sh/tests/builtins/lineno2.0 b/bin/sh/tests/builtins/lineno2.0
new file mode 100644
index 0000000..ddbd104
--- /dev/null
+++ b/bin/sh/tests/builtins/lineno2.0
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+f() {
+ : ${LINENO+${x?}}
+}
+
+unset -v x
+command eval f 2>/dev/null && exit 3
+x=1
+f
diff --git a/tools/regression/bin/sh/builtins/local1.0 b/bin/sh/tests/builtins/local1.0
index b28837ec..b28837ec 100644
--- a/tools/regression/bin/sh/builtins/local1.0
+++ b/bin/sh/tests/builtins/local1.0
diff --git a/tools/regression/bin/sh/builtins/local2.0 b/bin/sh/tests/builtins/local2.0
index cc8c10f..cc8c10f 100644
--- a/tools/regression/bin/sh/builtins/local2.0
+++ b/bin/sh/tests/builtins/local2.0
diff --git a/tools/regression/bin/sh/builtins/local3.0 b/bin/sh/tests/builtins/local3.0
index 39ee370..39ee370 100644
--- a/tools/regression/bin/sh/builtins/local3.0
+++ b/bin/sh/tests/builtins/local3.0
diff --git a/tools/regression/bin/sh/builtins/local4.0 b/bin/sh/tests/builtins/local4.0
index 3955aaa..3955aaa 100644
--- a/tools/regression/bin/sh/builtins/local4.0
+++ b/bin/sh/tests/builtins/local4.0
diff --git a/tools/regression/bin/sh/builtins/locale1.0 b/bin/sh/tests/builtins/locale1.0
index 90b1094..90b1094 100644
--- a/tools/regression/bin/sh/builtins/locale1.0
+++ b/bin/sh/tests/builtins/locale1.0
diff --git a/tools/regression/bin/sh/builtins/printf1.0 b/bin/sh/tests/builtins/printf1.0
index 99a82d0..99a82d0 100644
--- a/tools/regression/bin/sh/builtins/printf1.0
+++ b/bin/sh/tests/builtins/printf1.0
diff --git a/tools/regression/bin/sh/builtins/printf2.0 b/bin/sh/tests/builtins/printf2.0
index 7763d6f..7763d6f 100644
--- a/tools/regression/bin/sh/builtins/printf2.0
+++ b/bin/sh/tests/builtins/printf2.0
diff --git a/tools/regression/bin/sh/builtins/printf3.0 b/bin/sh/tests/builtins/printf3.0
index 0e7ea85..0e7ea85 100644
--- a/tools/regression/bin/sh/builtins/printf3.0
+++ b/bin/sh/tests/builtins/printf3.0
diff --git a/tools/regression/bin/sh/builtins/printf4.0 b/bin/sh/tests/builtins/printf4.0
index 2dd3e72..2dd3e72 100644
--- a/tools/regression/bin/sh/builtins/printf4.0
+++ b/bin/sh/tests/builtins/printf4.0
diff --git a/tools/regression/bin/sh/builtins/read1.0 b/bin/sh/tests/builtins/read1.0
index 06a68fa..06a68fa 100644
--- a/tools/regression/bin/sh/builtins/read1.0
+++ b/bin/sh/tests/builtins/read1.0
diff --git a/tools/regression/bin/sh/builtins/read1.0.stdout b/bin/sh/tests/builtins/read1.0.stdout
index dbcb1af..dbcb1af 100644
--- a/tools/regression/bin/sh/builtins/read1.0.stdout
+++ b/bin/sh/tests/builtins/read1.0.stdout
diff --git a/tools/regression/bin/sh/builtins/read2.0 b/bin/sh/tests/builtins/read2.0
index fc74511..fc74511 100644
--- a/tools/regression/bin/sh/builtins/read2.0
+++ b/bin/sh/tests/builtins/read2.0
diff --git a/tools/regression/bin/sh/builtins/read3.0 b/bin/sh/tests/builtins/read3.0
index c6ae9c1..c6ae9c1 100644
--- a/tools/regression/bin/sh/builtins/read3.0
+++ b/bin/sh/tests/builtins/read3.0
diff --git a/tools/regression/bin/sh/builtins/read3.0.stdout b/bin/sh/tests/builtins/read3.0.stdout
index 8ed98ca..8ed98ca 100644
--- a/tools/regression/bin/sh/builtins/read3.0.stdout
+++ b/bin/sh/tests/builtins/read3.0.stdout
diff --git a/tools/regression/bin/sh/builtins/read4.0 b/bin/sh/tests/builtins/read4.0
index 7204a35..7204a35 100644
--- a/tools/regression/bin/sh/builtins/read4.0
+++ b/bin/sh/tests/builtins/read4.0
diff --git a/tools/regression/bin/sh/builtins/read4.0.stdout b/bin/sh/tests/builtins/read4.0.stdout
index a8747a4..a8747a4 100644
--- a/tools/regression/bin/sh/builtins/read4.0.stdout
+++ b/bin/sh/tests/builtins/read4.0.stdout
diff --git a/tools/regression/bin/sh/builtins/read5.0 b/bin/sh/tests/builtins/read5.0
index 7d83391..7d83391 100644
--- a/tools/regression/bin/sh/builtins/read5.0
+++ b/bin/sh/tests/builtins/read5.0
diff --git a/tools/regression/bin/sh/builtins/read6.0 b/bin/sh/tests/builtins/read6.0
index 2168e10..2168e10 100644
--- a/tools/regression/bin/sh/builtins/read6.0
+++ b/bin/sh/tests/builtins/read6.0
diff --git a/tools/regression/bin/sh/builtins/read7.0 b/bin/sh/tests/builtins/read7.0
index e78f887..e78f887 100644
--- a/tools/regression/bin/sh/builtins/read7.0
+++ b/bin/sh/tests/builtins/read7.0
diff --git a/tools/regression/bin/sh/builtins/return1.0 b/bin/sh/tests/builtins/return1.0
index 787e892..787e892 100644
--- a/tools/regression/bin/sh/builtins/return1.0
+++ b/bin/sh/tests/builtins/return1.0
diff --git a/tools/regression/bin/sh/builtins/return2.1 b/bin/sh/tests/builtins/return2.1
index 0ef8171..0ef8171 100644
--- a/tools/regression/bin/sh/builtins/return2.1
+++ b/bin/sh/tests/builtins/return2.1
diff --git a/tools/regression/bin/sh/builtins/return3.1 b/bin/sh/tests/builtins/return3.1
index 605ec68..605ec68 100644
--- a/tools/regression/bin/sh/builtins/return3.1
+++ b/bin/sh/tests/builtins/return3.1
diff --git a/tools/regression/bin/sh/builtins/return4.0 b/bin/sh/tests/builtins/return4.0
index be5582b..be5582b 100644
--- a/tools/regression/bin/sh/builtins/return4.0
+++ b/bin/sh/tests/builtins/return4.0
diff --git a/tools/regression/bin/sh/builtins/return5.0 b/bin/sh/tests/builtins/return5.0
index 6e4b7bd..6e4b7bd 100644
--- a/tools/regression/bin/sh/builtins/return5.0
+++ b/bin/sh/tests/builtins/return5.0
diff --git a/tools/regression/bin/sh/builtins/return6.4 b/bin/sh/tests/builtins/return6.4
index e4d8e0d..e4d8e0d 100644
--- a/tools/regression/bin/sh/builtins/return6.4
+++ b/bin/sh/tests/builtins/return6.4
diff --git a/tools/regression/bin/sh/builtins/return7.4 b/bin/sh/tests/builtins/return7.4
index 2047373..2047373 100644
--- a/tools/regression/bin/sh/builtins/return7.4
+++ b/bin/sh/tests/builtins/return7.4
diff --git a/tools/regression/bin/sh/builtins/return8.0 b/bin/sh/tests/builtins/return8.0
index f00e859..f00e859 100644
--- a/tools/regression/bin/sh/builtins/return8.0
+++ b/bin/sh/tests/builtins/return8.0
diff --git a/tools/regression/bin/sh/builtins/set1.0 b/bin/sh/tests/builtins/set1.0
index fc39fad..fc39fad 100644
--- a/tools/regression/bin/sh/builtins/set1.0
+++ b/bin/sh/tests/builtins/set1.0
diff --git a/tools/regression/bin/sh/builtins/set2.0 b/bin/sh/tests/builtins/set2.0
index ad13eab..ad13eab 100644
--- a/tools/regression/bin/sh/builtins/set2.0
+++ b/bin/sh/tests/builtins/set2.0
diff --git a/tools/regression/bin/sh/builtins/trap1.0 b/bin/sh/tests/builtins/trap1.0
index 313f6a3..313f6a3 100644
--- a/tools/regression/bin/sh/builtins/trap1.0
+++ b/bin/sh/tests/builtins/trap1.0
diff --git a/tools/regression/bin/sh/builtins/trap10.0 b/bin/sh/tests/builtins/trap10.0
index fa0e35d..fa0e35d 100644
--- a/tools/regression/bin/sh/builtins/trap10.0
+++ b/bin/sh/tests/builtins/trap10.0
diff --git a/tools/regression/bin/sh/builtins/trap11.0 b/bin/sh/tests/builtins/trap11.0
index cfeea9e..cfeea9e 100644
--- a/tools/regression/bin/sh/builtins/trap11.0
+++ b/bin/sh/tests/builtins/trap11.0
diff --git a/tools/regression/bin/sh/builtins/trap12.0 b/bin/sh/tests/builtins/trap12.0
index 8c62ffd..8c62ffd 100644
--- a/tools/regression/bin/sh/builtins/trap12.0
+++ b/bin/sh/tests/builtins/trap12.0
diff --git a/bin/sh/tests/builtins/trap13.0 b/bin/sh/tests/builtins/trap13.0
new file mode 100644
index 0000000..d90eb08
--- /dev/null
+++ b/bin/sh/tests/builtins/trap13.0
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+{
+ trap 'exit 0' INT
+ ${SH} -c 'kill -INT $PPID'
+ exit 3
+} &
+wait $!
diff --git a/bin/sh/tests/builtins/trap14.0 b/bin/sh/tests/builtins/trap14.0
new file mode 100644
index 0000000..97cce8d
--- /dev/null
+++ b/bin/sh/tests/builtins/trap14.0
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+{
+ trap - INT
+ ${SH} -c 'kill -INT $PPID' &
+ wait
+} &
+wait $!
+r=$?
+[ "$r" -gt 128 ] && [ "$(kill -l "$r")" = INT ]
diff --git a/tools/regression/bin/sh/builtins/trap2.0 b/bin/sh/tests/builtins/trap2.0
index a05287a..a05287a 100644
--- a/tools/regression/bin/sh/builtins/trap2.0
+++ b/bin/sh/tests/builtins/trap2.0
diff --git a/tools/regression/bin/sh/builtins/trap3.0 b/bin/sh/tests/builtins/trap3.0
index 8160729..8160729 100644
--- a/tools/regression/bin/sh/builtins/trap3.0
+++ b/bin/sh/tests/builtins/trap3.0
diff --git a/tools/regression/bin/sh/builtins/trap4.0 b/bin/sh/tests/builtins/trap4.0
index 7f2080e..7f2080e 100644
--- a/tools/regression/bin/sh/builtins/trap4.0
+++ b/bin/sh/tests/builtins/trap4.0
diff --git a/tools/regression/bin/sh/builtins/trap5.0 b/bin/sh/tests/builtins/trap5.0
index 56e0fb1..56e0fb1 100644
--- a/tools/regression/bin/sh/builtins/trap5.0
+++ b/bin/sh/tests/builtins/trap5.0
diff --git a/tools/regression/bin/sh/builtins/trap6.0 b/bin/sh/tests/builtins/trap6.0
index bd2bf7e..bd2bf7e 100644
--- a/tools/regression/bin/sh/builtins/trap6.0
+++ b/bin/sh/tests/builtins/trap6.0
diff --git a/tools/regression/bin/sh/builtins/trap7.0 b/bin/sh/tests/builtins/trap7.0
index 35529b8..35529b8 100644
--- a/tools/regression/bin/sh/builtins/trap7.0
+++ b/bin/sh/tests/builtins/trap7.0
diff --git a/tools/regression/bin/sh/builtins/trap8.0 b/bin/sh/tests/builtins/trap8.0
index cdce976..cdce976 100644
--- a/tools/regression/bin/sh/builtins/trap8.0
+++ b/bin/sh/tests/builtins/trap8.0
diff --git a/tools/regression/bin/sh/builtins/trap9.0 b/bin/sh/tests/builtins/trap9.0
index 0f584ec..0f584ec 100644
--- a/tools/regression/bin/sh/builtins/trap9.0
+++ b/bin/sh/tests/builtins/trap9.0
diff --git a/tools/regression/bin/sh/builtins/type1.0 b/bin/sh/tests/builtins/type1.0
index c5e4564..c5e4564 100644
--- a/tools/regression/bin/sh/builtins/type1.0
+++ b/bin/sh/tests/builtins/type1.0
diff --git a/tools/regression/bin/sh/builtins/type1.0.stderr b/bin/sh/tests/builtins/type1.0.stderr
index 7853418..7853418 100644
--- a/tools/regression/bin/sh/builtins/type1.0.stderr
+++ b/bin/sh/tests/builtins/type1.0.stderr
diff --git a/tools/regression/bin/sh/builtins/type2.0 b/bin/sh/tests/builtins/type2.0
index fe44d95..fe44d95 100644
--- a/tools/regression/bin/sh/builtins/type2.0
+++ b/bin/sh/tests/builtins/type2.0
diff --git a/tools/regression/bin/sh/builtins/type3.0 b/bin/sh/tests/builtins/type3.0
index 87cccdd..87cccdd 100644
--- a/tools/regression/bin/sh/builtins/type3.0
+++ b/bin/sh/tests/builtins/type3.0
diff --git a/tools/regression/bin/sh/builtins/unalias.0 b/bin/sh/tests/builtins/unalias.0
index 34d8d6e..34d8d6e 100644
--- a/tools/regression/bin/sh/builtins/unalias.0
+++ b/bin/sh/tests/builtins/unalias.0
diff --git a/tools/regression/bin/sh/builtins/var-assign.0 b/bin/sh/tests/builtins/var-assign.0
index ace39c0..ace39c0 100644
--- a/tools/regression/bin/sh/builtins/var-assign.0
+++ b/bin/sh/tests/builtins/var-assign.0
diff --git a/tools/regression/bin/sh/builtins/var-assign2.0 b/bin/sh/tests/builtins/var-assign2.0
index eafec89..eafec89 100644
--- a/tools/regression/bin/sh/builtins/var-assign2.0
+++ b/bin/sh/tests/builtins/var-assign2.0
diff --git a/tools/regression/bin/sh/builtins/wait1.0 b/bin/sh/tests/builtins/wait1.0
index 1ca8530..1ca8530 100644
--- a/tools/regression/bin/sh/builtins/wait1.0
+++ b/bin/sh/tests/builtins/wait1.0
diff --git a/tools/regression/bin/sh/builtins/wait10.0 b/bin/sh/tests/builtins/wait10.0
index 864fc78..864fc78 100644
--- a/tools/regression/bin/sh/builtins/wait10.0
+++ b/bin/sh/tests/builtins/wait10.0
diff --git a/tools/regression/bin/sh/builtins/wait2.0 b/bin/sh/tests/builtins/wait2.0
index e61455c..e61455c 100644
--- a/tools/regression/bin/sh/builtins/wait2.0
+++ b/bin/sh/tests/builtins/wait2.0
diff --git a/tools/regression/bin/sh/builtins/wait3.0 b/bin/sh/tests/builtins/wait3.0
index 1ed5299..1ed5299 100644
--- a/tools/regression/bin/sh/builtins/wait3.0
+++ b/bin/sh/tests/builtins/wait3.0
diff --git a/tools/regression/bin/sh/builtins/wait4.0 b/bin/sh/tests/builtins/wait4.0
index 7935131..7935131 100644
--- a/tools/regression/bin/sh/builtins/wait4.0
+++ b/bin/sh/tests/builtins/wait4.0
diff --git a/tools/regression/bin/sh/builtins/wait5.0 b/bin/sh/tests/builtins/wait5.0
index 6874bf6..6874bf6 100644
--- a/tools/regression/bin/sh/builtins/wait5.0
+++ b/bin/sh/tests/builtins/wait5.0
diff --git a/tools/regression/bin/sh/builtins/wait6.0 b/bin/sh/tests/builtins/wait6.0
index 20e3c68..20e3c68 100644
--- a/tools/regression/bin/sh/builtins/wait6.0
+++ b/bin/sh/tests/builtins/wait6.0
diff --git a/tools/regression/bin/sh/builtins/wait7.0 b/bin/sh/tests/builtins/wait7.0
index 0fb092f..0fb092f 100644
--- a/tools/regression/bin/sh/builtins/wait7.0
+++ b/bin/sh/tests/builtins/wait7.0
diff --git a/tools/regression/bin/sh/builtins/wait8.0 b/bin/sh/tests/builtins/wait8.0
index b59ff59..b59ff59 100644
--- a/tools/regression/bin/sh/builtins/wait8.0
+++ b/bin/sh/tests/builtins/wait8.0
diff --git a/tools/regression/bin/sh/builtins/wait9.127 b/bin/sh/tests/builtins/wait9.127
index 661f275..661f275 100644
--- a/tools/regression/bin/sh/builtins/wait9.127
+++ b/bin/sh/tests/builtins/wait9.127
diff --git a/bin/sh/tests/errors/Makefile b/bin/sh/tests/errors/Makefile
new file mode 100644
index 0000000..9f8b0f2
--- /dev/null
+++ b/bin/sh/tests/errors/Makefile
@@ -0,0 +1,30 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+FILESDIR= ${TESTSBASE}/bin/sh/errors
+KYUAFILE= no
+
+FILES= assignment-error1.0
+FILES+= assignment-error2.0
+FILES+= backquote-error1.0
+FILES+= backquote-error2.0
+FILES+= bad-binary1.126
+FILES+= bad-keyword1.0
+FILES+= bad-parm-exp1.0
+FILES+= bad-parm-exp2.2 bad-parm-exp2.2.stderr
+FILES+= bad-parm-exp3.2 bad-parm-exp3.2.stderr
+FILES+= bad-parm-exp4.2 bad-parm-exp4.2.stderr
+FILES+= bad-parm-exp5.2 bad-parm-exp5.2.stderr
+FILES+= bad-parm-exp6.2 bad-parm-exp6.2.stderr
+FILES+= option-error.0
+FILES+= redirection-error.0
+FILES+= redirection-error2.2
+FILES+= redirection-error3.0
+FILES+= redirection-error4.0
+FILES+= redirection-error5.0
+FILES+= redirection-error6.0
+FILES+= redirection-error7.0
+FILES+= write-error1.0
+
+.include <bsd.test.mk>
diff --git a/tools/regression/bin/sh/errors/assignment-error1.0 b/bin/sh/tests/errors/assignment-error1.0
index 00eaed9..00eaed9 100644
--- a/tools/regression/bin/sh/errors/assignment-error1.0
+++ b/bin/sh/tests/errors/assignment-error1.0
diff --git a/tools/regression/bin/sh/errors/assignment-error2.0 b/bin/sh/tests/errors/assignment-error2.0
index ff4e629..ff4e629 100644
--- a/tools/regression/bin/sh/errors/assignment-error2.0
+++ b/bin/sh/tests/errors/assignment-error2.0
diff --git a/tools/regression/bin/sh/errors/backquote-error1.0 b/bin/sh/tests/errors/backquote-error1.0
index 43e3303..43e3303 100644
--- a/tools/regression/bin/sh/errors/backquote-error1.0
+++ b/bin/sh/tests/errors/backquote-error1.0
diff --git a/tools/regression/bin/sh/errors/backquote-error2.0 b/bin/sh/tests/errors/backquote-error2.0
index 5b49e2b..5b49e2b 100644
--- a/tools/regression/bin/sh/errors/backquote-error2.0
+++ b/bin/sh/tests/errors/backquote-error2.0
diff --git a/tools/regression/bin/sh/errors/bad-binary1.126 b/bin/sh/tests/errors/bad-binary1.126
index d92e9de..d92e9de 100644
--- a/tools/regression/bin/sh/errors/bad-binary1.126
+++ b/bin/sh/tests/errors/bad-binary1.126
diff --git a/tools/regression/bin/sh/errors/bad-keyword1.0 b/bin/sh/tests/errors/bad-keyword1.0
index ac01536..ac01536 100644
--- a/tools/regression/bin/sh/errors/bad-keyword1.0
+++ b/bin/sh/tests/errors/bad-keyword1.0
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp1.0 b/bin/sh/tests/errors/bad-parm-exp1.0
index 6e94994..6e94994 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp1.0
+++ b/bin/sh/tests/errors/bad-parm-exp1.0
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp2.2 b/bin/sh/tests/errors/bad-parm-exp2.2
index 7e13d2b..7e13d2b 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp2.2
+++ b/bin/sh/tests/errors/bad-parm-exp2.2
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr b/bin/sh/tests/errors/bad-parm-exp2.2.stderr
index d027a5a..d027a5a 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr
+++ b/bin/sh/tests/errors/bad-parm-exp2.2.stderr
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp3.2 b/bin/sh/tests/errors/bad-parm-exp3.2
index a5ecba5..a5ecba5 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp3.2
+++ b/bin/sh/tests/errors/bad-parm-exp3.2
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr b/bin/sh/tests/errors/bad-parm-exp3.2.stderr
index ef40251..ef40251 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr
+++ b/bin/sh/tests/errors/bad-parm-exp3.2.stderr
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp4.2 b/bin/sh/tests/errors/bad-parm-exp4.2
index 9eec8d0..9eec8d0 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp4.2
+++ b/bin/sh/tests/errors/bad-parm-exp4.2
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr b/bin/sh/tests/errors/bad-parm-exp4.2.stderr
index 89bd80f..89bd80f 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr
+++ b/bin/sh/tests/errors/bad-parm-exp4.2.stderr
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp5.2 b/bin/sh/tests/errors/bad-parm-exp5.2
index 459281f..459281f 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp5.2
+++ b/bin/sh/tests/errors/bad-parm-exp5.2
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr b/bin/sh/tests/errors/bad-parm-exp5.2.stderr
index 89b1997..89b1997 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr
+++ b/bin/sh/tests/errors/bad-parm-exp5.2.stderr
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp6.2 b/bin/sh/tests/errors/bad-parm-exp6.2
index ba51442..ba51442 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp6.2
+++ b/bin/sh/tests/errors/bad-parm-exp6.2
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp6.2.stderr b/bin/sh/tests/errors/bad-parm-exp6.2.stderr
index dbf14b5..dbf14b5 100644
--- a/tools/regression/bin/sh/errors/bad-parm-exp6.2.stderr
+++ b/bin/sh/tests/errors/bad-parm-exp6.2.stderr
diff --git a/tools/regression/bin/sh/errors/option-error.0 b/bin/sh/tests/errors/option-error.0
index b4b44c4..b4b44c4 100644
--- a/tools/regression/bin/sh/errors/option-error.0
+++ b/bin/sh/tests/errors/option-error.0
diff --git a/tools/regression/bin/sh/errors/redirection-error.0 b/bin/sh/tests/errors/redirection-error.0
index cb8c0b1..cb8c0b1 100644
--- a/tools/regression/bin/sh/errors/redirection-error.0
+++ b/bin/sh/tests/errors/redirection-error.0
diff --git a/tools/regression/bin/sh/errors/redirection-error2.2 b/bin/sh/tests/errors/redirection-error2.2
index 32bccd8..32bccd8 100644
--- a/tools/regression/bin/sh/errors/redirection-error2.2
+++ b/bin/sh/tests/errors/redirection-error2.2
diff --git a/tools/regression/bin/sh/errors/redirection-error3.0 b/bin/sh/tests/errors/redirection-error3.0
index 8a07d03..8a07d03 100644
--- a/tools/regression/bin/sh/errors/redirection-error3.0
+++ b/bin/sh/tests/errors/redirection-error3.0
diff --git a/tools/regression/bin/sh/errors/redirection-error4.0 b/bin/sh/tests/errors/redirection-error4.0
index 2060974..2060974 100644
--- a/tools/regression/bin/sh/errors/redirection-error4.0
+++ b/bin/sh/tests/errors/redirection-error4.0
diff --git a/tools/regression/bin/sh/errors/redirection-error5.0 b/bin/sh/tests/errors/redirection-error5.0
index 1fcd47e..1fcd47e 100644
--- a/tools/regression/bin/sh/errors/redirection-error5.0
+++ b/bin/sh/tests/errors/redirection-error5.0
diff --git a/tools/regression/bin/sh/errors/redirection-error6.0 b/bin/sh/tests/errors/redirection-error6.0
index 17d1109..17d1109 100644
--- a/tools/regression/bin/sh/errors/redirection-error6.0
+++ b/bin/sh/tests/errors/redirection-error6.0
diff --git a/tools/regression/bin/sh/errors/redirection-error7.0 b/bin/sh/tests/errors/redirection-error7.0
index 5b20f04..5b20f04 100644
--- a/tools/regression/bin/sh/errors/redirection-error7.0
+++ b/bin/sh/tests/errors/redirection-error7.0
diff --git a/tools/regression/bin/sh/errors/write-error1.0 b/bin/sh/tests/errors/write-error1.0
index fcb52e7..fcb52e7 100644
--- a/tools/regression/bin/sh/errors/write-error1.0
+++ b/bin/sh/tests/errors/write-error1.0
diff --git a/bin/sh/tests/execution/Makefile b/bin/sh/tests/execution/Makefile
new file mode 100644
index 0000000..302d0d8
--- /dev/null
+++ b/bin/sh/tests/execution/Makefile
@@ -0,0 +1,53 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+FILESDIR= ${TESTSBASE}/bin/sh/execution
+KYUAFILE= no
+
+FILES= bg1.0
+FILES+= bg2.0
+FILES+= bg3.0
+FILES+= bg4.0
+FILES+= bg5.0
+FILES+= bg6.0 bg6.0.stdout
+FILES+= bg7.0
+FILES+= bg8.0
+FILES+= bg9.0
+FILES+= bg10.0 bg10.0.stdout
+FILES+= fork1.0
+FILES+= fork2.0
+FILES+= fork3.0
+FILES+= func1.0
+FILES+= func2.0
+FILES+= func3.0
+FILES+= hash1.0
+FILES+= int-cmd1.0
+FILES+= killed1.0
+FILES+= killed2.0
+FILES+= not1.0
+FILES+= not2.0
+FILES+= path1.0
+FILES+= redir1.0
+FILES+= redir2.0
+FILES+= redir3.0
+FILES+= redir4.0
+FILES+= redir5.0
+FILES+= redir6.0
+FILES+= redir7.0
+FILES+= set-n1.0
+FILES+= set-n2.0
+FILES+= set-n3.0
+FILES+= set-n4.0
+FILES+= set-x1.0
+FILES+= set-x2.0
+FILES+= set-x3.0
+FILES+= shellproc1.0
+FILES+= subshell1.0 subshell1.0.stdout
+FILES+= subshell2.0
+FILES+= subshell3.0
+FILES+= subshell4.0
+FILES+= unknown1.0
+FILES+= var-assign1.0
+
+.include <bsd.test.mk>
diff --git a/tools/regression/bin/sh/execution/bg1.0 b/bin/sh/tests/execution/bg1.0
index edb92ae..edb92ae 100644
--- a/tools/regression/bin/sh/execution/bg1.0
+++ b/bin/sh/tests/execution/bg1.0
diff --git a/bin/sh/tests/execution/bg10.0 b/bin/sh/tests/execution/bg10.0
new file mode 100644
index 0000000..44a25dc
--- /dev/null
+++ b/bin/sh/tests/execution/bg10.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+# The redirection overrides the </dev/null implicit in a background command.
+
+echo yes | ${SH} -c '{ cat & wait; } <&0'
diff --git a/bin/sh/tests/execution/bg10.0.stdout b/bin/sh/tests/execution/bg10.0.stdout
new file mode 100644
index 0000000..7cfab5b
--- /dev/null
+++ b/bin/sh/tests/execution/bg10.0.stdout
@@ -0,0 +1 @@
+yes
diff --git a/tools/regression/bin/sh/execution/bg2.0 b/bin/sh/tests/execution/bg2.0
index 2e2fbc5..2e2fbc5 100644
--- a/tools/regression/bin/sh/execution/bg2.0
+++ b/bin/sh/tests/execution/bg2.0
diff --git a/tools/regression/bin/sh/execution/bg3.0 b/bin/sh/tests/execution/bg3.0
index 359fc6f..359fc6f 100644
--- a/tools/regression/bin/sh/execution/bg3.0
+++ b/bin/sh/tests/execution/bg3.0
diff --git a/tools/regression/bin/sh/execution/bg4.0 b/bin/sh/tests/execution/bg4.0
index 25e4f4e..25e4f4e 100644
--- a/tools/regression/bin/sh/execution/bg4.0
+++ b/bin/sh/tests/execution/bg4.0
diff --git a/bin/sh/tests/execution/bg5.0 b/bin/sh/tests/execution/bg5.0
new file mode 100644
index 0000000..cc9ceaa
--- /dev/null
+++ b/bin/sh/tests/execution/bg5.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+# A background command has an implicit </dev/null redirection.
+
+echo bad | ${SH} -c '{ cat & wait; }'
diff --git a/bin/sh/tests/execution/bg6.0 b/bin/sh/tests/execution/bg6.0
new file mode 100644
index 0000000..b0faf9e
--- /dev/null
+++ b/bin/sh/tests/execution/bg6.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+# The redirection overrides the </dev/null implicit in a background command.
+
+echo yes | ${SH} -c '{ cat & wait; } </dev/stdin'
diff --git a/bin/sh/tests/execution/bg6.0.stdout b/bin/sh/tests/execution/bg6.0.stdout
new file mode 100644
index 0000000..7cfab5b
--- /dev/null
+++ b/bin/sh/tests/execution/bg6.0.stdout
@@ -0,0 +1 @@
+yes
diff --git a/bin/sh/tests/execution/bg7.0 b/bin/sh/tests/execution/bg7.0
new file mode 100644
index 0000000..f771edc
--- /dev/null
+++ b/bin/sh/tests/execution/bg7.0
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# The redirection does not apply to the background command, and therefore
+# does not override the implicit </dev/null.
+
+echo bad | ${SH} -c '</dev/null; { cat & wait; }'
diff --git a/bin/sh/tests/execution/bg8.0 b/bin/sh/tests/execution/bg8.0
new file mode 100644
index 0000000..33667cb
--- /dev/null
+++ b/bin/sh/tests/execution/bg8.0
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# The redirection does not apply to the background command, and therefore
+# does not override the implicit </dev/null.
+
+echo bad | ${SH} -c 'command eval \) </dev/null 2>/dev/null; { cat & wait; }'
diff --git a/bin/sh/tests/execution/bg9.0 b/bin/sh/tests/execution/bg9.0
new file mode 100644
index 0000000..64fde3e
--- /dev/null
+++ b/bin/sh/tests/execution/bg9.0
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# The redirection does not apply to the background command, and therefore
+# does not override the implicit </dev/null.
+
+echo bad | ${SH} -c 'command eval eval \\\) \</dev/null 2>/dev/null; { cat & wait; }'
diff --git a/tools/regression/bin/sh/execution/fork1.0 b/bin/sh/tests/execution/fork1.0
index 2eeac79..2eeac79 100644
--- a/tools/regression/bin/sh/execution/fork1.0
+++ b/bin/sh/tests/execution/fork1.0
diff --git a/tools/regression/bin/sh/execution/fork2.0 b/bin/sh/tests/execution/fork2.0
index 62a2537..62a2537 100644
--- a/tools/regression/bin/sh/execution/fork2.0
+++ b/bin/sh/tests/execution/fork2.0
diff --git a/tools/regression/bin/sh/execution/fork3.0 b/bin/sh/tests/execution/fork3.0
index 3cb678c..3cb678c 100644
--- a/tools/regression/bin/sh/execution/fork3.0
+++ b/bin/sh/tests/execution/fork3.0
diff --git a/tools/regression/bin/sh/execution/func1.0 b/bin/sh/tests/execution/func1.0
index 29fcc07..29fcc07 100644
--- a/tools/regression/bin/sh/execution/func1.0
+++ b/bin/sh/tests/execution/func1.0
diff --git a/tools/regression/bin/sh/execution/func2.0 b/bin/sh/tests/execution/func2.0
index 9830b5e..9830b5e 100644
--- a/tools/regression/bin/sh/execution/func2.0
+++ b/bin/sh/tests/execution/func2.0
diff --git a/tools/regression/bin/sh/execution/func3.0 b/bin/sh/tests/execution/func3.0
index e0ed581..e0ed581 100644
--- a/tools/regression/bin/sh/execution/func3.0
+++ b/bin/sh/tests/execution/func3.0
diff --git a/tools/regression/bin/sh/execution/hash1.0 b/bin/sh/tests/execution/hash1.0
index a645c2a..a645c2a 100644
--- a/tools/regression/bin/sh/execution/hash1.0
+++ b/bin/sh/tests/execution/hash1.0
diff --git a/tools/regression/bin/sh/execution/int-cmd1.0 b/bin/sh/tests/execution/int-cmd1.0
index a1f097b..a1f097b 100644
--- a/tools/regression/bin/sh/execution/int-cmd1.0
+++ b/bin/sh/tests/execution/int-cmd1.0
diff --git a/tools/regression/bin/sh/execution/killed1.0 b/bin/sh/tests/execution/killed1.0
index 41d3e05..41d3e05 100644
--- a/tools/regression/bin/sh/execution/killed1.0
+++ b/bin/sh/tests/execution/killed1.0
diff --git a/tools/regression/bin/sh/execution/killed2.0 b/bin/sh/tests/execution/killed2.0
index 7ff3fe2..7ff3fe2 100644
--- a/tools/regression/bin/sh/execution/killed2.0
+++ b/bin/sh/tests/execution/killed2.0
diff --git a/tools/regression/bin/sh/execution/not1.0 b/bin/sh/tests/execution/not1.0
index 12c6265..12c6265 100644
--- a/tools/regression/bin/sh/execution/not1.0
+++ b/bin/sh/tests/execution/not1.0
diff --git a/tools/regression/bin/sh/execution/not2.0 b/bin/sh/tests/execution/not2.0
index 1b128d0..1b128d0 100644
--- a/tools/regression/bin/sh/execution/not2.0
+++ b/bin/sh/tests/execution/not2.0
diff --git a/tools/regression/bin/sh/execution/path1.0 b/bin/sh/tests/execution/path1.0
index 50829d6..50829d6 100644
--- a/tools/regression/bin/sh/execution/path1.0
+++ b/bin/sh/tests/execution/path1.0
diff --git a/tools/regression/bin/sh/execution/redir1.0 b/bin/sh/tests/execution/redir1.0
index dd0011f..dd0011f 100644
--- a/tools/regression/bin/sh/execution/redir1.0
+++ b/bin/sh/tests/execution/redir1.0
diff --git a/tools/regression/bin/sh/execution/redir2.0 b/bin/sh/tests/execution/redir2.0
index 1588105..1588105 100644
--- a/tools/regression/bin/sh/execution/redir2.0
+++ b/bin/sh/tests/execution/redir2.0
diff --git a/tools/regression/bin/sh/execution/redir3.0 b/bin/sh/tests/execution/redir3.0
index d68e450..d68e450 100644
--- a/tools/regression/bin/sh/execution/redir3.0
+++ b/bin/sh/tests/execution/redir3.0
diff --git a/tools/regression/bin/sh/execution/redir4.0 b/bin/sh/tests/execution/redir4.0
index 57054c1..57054c1 100644
--- a/tools/regression/bin/sh/execution/redir4.0
+++ b/bin/sh/tests/execution/redir4.0
diff --git a/tools/regression/bin/sh/execution/redir5.0 b/bin/sh/tests/execution/redir5.0
index 707ca68..707ca68 100644
--- a/tools/regression/bin/sh/execution/redir5.0
+++ b/bin/sh/tests/execution/redir5.0
diff --git a/tools/regression/bin/sh/execution/redir6.0 b/bin/sh/tests/execution/redir6.0
index 4e3ac0c..4e3ac0c 100644
--- a/tools/regression/bin/sh/execution/redir6.0
+++ b/bin/sh/tests/execution/redir6.0
diff --git a/tools/regression/bin/sh/execution/redir7.0 b/bin/sh/tests/execution/redir7.0
index 2487bcf..2487bcf 100644
--- a/tools/regression/bin/sh/execution/redir7.0
+++ b/bin/sh/tests/execution/redir7.0
diff --git a/tools/regression/bin/sh/execution/set-n1.0 b/bin/sh/tests/execution/set-n1.0
index 14c9b93..14c9b93 100644
--- a/tools/regression/bin/sh/execution/set-n1.0
+++ b/bin/sh/tests/execution/set-n1.0
diff --git a/tools/regression/bin/sh/execution/set-n2.0 b/bin/sh/tests/execution/set-n2.0
index c7f3162..c7f3162 100644
--- a/tools/regression/bin/sh/execution/set-n2.0
+++ b/bin/sh/tests/execution/set-n2.0
diff --git a/tools/regression/bin/sh/execution/set-n3.0 b/bin/sh/tests/execution/set-n3.0
index 24a9159..24a9159 100644
--- a/tools/regression/bin/sh/execution/set-n3.0
+++ b/bin/sh/tests/execution/set-n3.0
diff --git a/tools/regression/bin/sh/execution/set-n4.0 b/bin/sh/tests/execution/set-n4.0
index 3698508..3698508 100644
--- a/tools/regression/bin/sh/execution/set-n4.0
+++ b/bin/sh/tests/execution/set-n4.0
diff --git a/tools/regression/bin/sh/execution/set-x1.0 b/bin/sh/tests/execution/set-x1.0
index 7fe1dbf..7fe1dbf 100644
--- a/tools/regression/bin/sh/execution/set-x1.0
+++ b/bin/sh/tests/execution/set-x1.0
diff --git a/tools/regression/bin/sh/execution/set-x2.0 b/bin/sh/tests/execution/set-x2.0
index 56d54e3..56d54e3 100644
--- a/tools/regression/bin/sh/execution/set-x2.0
+++ b/bin/sh/tests/execution/set-x2.0
diff --git a/tools/regression/bin/sh/execution/set-x3.0 b/bin/sh/tests/execution/set-x3.0
index 1ca57ac..1ca57ac 100644
--- a/tools/regression/bin/sh/execution/set-x3.0
+++ b/bin/sh/tests/execution/set-x3.0
diff --git a/tools/regression/bin/sh/execution/shellproc1.0 b/bin/sh/tests/execution/shellproc1.0
index 1326bc2..1326bc2 100644
--- a/tools/regression/bin/sh/execution/shellproc1.0
+++ b/bin/sh/tests/execution/shellproc1.0
diff --git a/tools/regression/bin/sh/execution/subshell1.0 b/bin/sh/tests/execution/subshell1.0
index 347806e..347806e 100644
--- a/tools/regression/bin/sh/execution/subshell1.0
+++ b/bin/sh/tests/execution/subshell1.0
diff --git a/tools/regression/bin/sh/execution/subshell1.0.stdout b/bin/sh/tests/execution/subshell1.0.stdout
index 8c71af3..8c71af3 100644
--- a/tools/regression/bin/sh/execution/subshell1.0.stdout
+++ b/bin/sh/tests/execution/subshell1.0.stdout
diff --git a/tools/regression/bin/sh/execution/subshell2.0 b/bin/sh/tests/execution/subshell2.0
index 3216449..3216449 100644
--- a/tools/regression/bin/sh/execution/subshell2.0
+++ b/bin/sh/tests/execution/subshell2.0
diff --git a/tools/regression/bin/sh/execution/subshell3.0 b/bin/sh/tests/execution/subshell3.0
index 9a87acb..9a87acb 100644
--- a/tools/regression/bin/sh/execution/subshell3.0
+++ b/bin/sh/tests/execution/subshell3.0
diff --git a/tools/regression/bin/sh/execution/subshell4.0 b/bin/sh/tests/execution/subshell4.0
index b39edb1..b39edb1 100644
--- a/tools/regression/bin/sh/execution/subshell4.0
+++ b/bin/sh/tests/execution/subshell4.0
diff --git a/tools/regression/bin/sh/execution/unknown1.0 b/bin/sh/tests/execution/unknown1.0
index 45f541e..45f541e 100644
--- a/tools/regression/bin/sh/execution/unknown1.0
+++ b/bin/sh/tests/execution/unknown1.0
diff --git a/tools/regression/bin/sh/execution/var-assign1.0 b/bin/sh/tests/execution/var-assign1.0
index 26e5424..26e5424 100644
--- a/tools/regression/bin/sh/execution/var-assign1.0
+++ b/bin/sh/tests/execution/var-assign1.0
diff --git a/bin/sh/tests/expansion/Makefile b/bin/sh/tests/expansion/Makefile
new file mode 100644
index 0000000..bd24319
--- /dev/null
+++ b/bin/sh/tests/expansion/Makefile
@@ -0,0 +1,86 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+FILESDIR= ${TESTSBASE}/bin/sh/expansion
+KYUAFILE= no
+
+FILES= arith1.0
+FILES+= arith2.0
+FILES+= arith3.0
+FILES+= arith4.0
+FILES+= arith5.0
+FILES+= arith6.0
+FILES+= arith7.0
+FILES+= arith8.0
+FILES+= arith9.0
+FILES+= arith10.0
+FILES+= arith11.0
+FILES+= arith12.0
+FILES+= arith13.0
+FILES+= assign1.0
+FILES+= cmdsubst1.0
+FILES+= cmdsubst2.0
+FILES+= cmdsubst3.0
+FILES+= cmdsubst4.0
+FILES+= cmdsubst5.0
+FILES+= cmdsubst6.0
+FILES+= cmdsubst7.0
+FILES+= cmdsubst8.0
+FILES+= cmdsubst9.0
+FILES+= cmdsubst10.0
+FILES+= cmdsubst11.0
+FILES+= cmdsubst12.0
+FILES+= cmdsubst13.0
+FILES+= cmdsubst14.0
+FILES+= cmdsubst15.0
+FILES+= cmdsubst16.0
+FILES+= cmdsubst17.0
+FILES+= export1.0
+FILES+= export2.0
+FILES+= export3.0
+FILES+= heredoc1.0
+FILES+= heredoc2.0
+FILES+= ifs1.0
+FILES+= ifs2.0
+FILES+= ifs3.0
+FILES+= ifs4.0
+FILES+= length1.0
+FILES+= length2.0
+FILES+= length3.0
+FILES+= length4.0
+FILES+= length5.0
+FILES+= length6.0
+FILES+= length7.0
+FILES+= length8.0
+FILES+= local1.0
+FILES+= local2.0
+FILES+= pathname1.0
+FILES+= pathname2.0
+FILES+= pathname3.0
+FILES+= pathname4.0
+FILES+= plus-minus1.0
+FILES+= plus-minus2.0
+FILES+= plus-minus3.0
+FILES+= plus-minus4.0
+FILES+= plus-minus5.0
+FILES+= plus-minus6.0
+FILES+= plus-minus7.0
+FILES+= plus-minus8.0
+FILES+= question1.0
+FILES+= readonly1.0
+FILES+= set-u1.0
+FILES+= set-u2.0
+FILES+= set-u3.0
+FILES+= tilde1.0
+FILES+= tilde2.0
+FILES+= trim1.0
+FILES+= trim2.0
+FILES+= trim3.0
+FILES+= trim4.0
+FILES+= trim5.0
+FILES+= trim6.0
+FILES+= trim7.0
+FILES+= trim8.0
+
+.include <bsd.test.mk>
diff --git a/tools/regression/bin/sh/expansion/arith1.0 b/bin/sh/tests/expansion/arith1.0
index 118ba22..118ba22 100644
--- a/tools/regression/bin/sh/expansion/arith1.0
+++ b/bin/sh/tests/expansion/arith1.0
diff --git a/tools/regression/bin/sh/expansion/arith10.0 b/bin/sh/tests/expansion/arith10.0
index 1aaf619..1aaf619 100644
--- a/tools/regression/bin/sh/expansion/arith10.0
+++ b/bin/sh/tests/expansion/arith10.0
diff --git a/tools/regression/bin/sh/expansion/arith11.0 b/bin/sh/tests/expansion/arith11.0
index 6bc7369..6bc7369 100644
--- a/tools/regression/bin/sh/expansion/arith11.0
+++ b/bin/sh/tests/expansion/arith11.0
diff --git a/tools/regression/bin/sh/expansion/arith12.0 b/bin/sh/tests/expansion/arith12.0
index cb7da3b..cb7da3b 100644
--- a/tools/regression/bin/sh/expansion/arith12.0
+++ b/bin/sh/tests/expansion/arith12.0
diff --git a/tools/regression/bin/sh/expansion/arith13.0 b/bin/sh/tests/expansion/arith13.0
index 207e488..207e488 100644
--- a/tools/regression/bin/sh/expansion/arith13.0
+++ b/bin/sh/tests/expansion/arith13.0
diff --git a/tools/regression/bin/sh/expansion/arith2.0 b/bin/sh/tests/expansion/arith2.0
index 95b48a0..95b48a0 100644
--- a/tools/regression/bin/sh/expansion/arith2.0
+++ b/bin/sh/tests/expansion/arith2.0
diff --git a/tools/regression/bin/sh/expansion/arith3.0 b/bin/sh/tests/expansion/arith3.0
index b69159d..b69159d 100644
--- a/tools/regression/bin/sh/expansion/arith3.0
+++ b/bin/sh/tests/expansion/arith3.0
diff --git a/tools/regression/bin/sh/expansion/arith4.0 b/bin/sh/tests/expansion/arith4.0
index 610dad8..610dad8 100644
--- a/tools/regression/bin/sh/expansion/arith4.0
+++ b/bin/sh/tests/expansion/arith4.0
diff --git a/tools/regression/bin/sh/expansion/arith5.0 b/bin/sh/tests/expansion/arith5.0
index d0f2331..d0f2331 100644
--- a/tools/regression/bin/sh/expansion/arith5.0
+++ b/bin/sh/tests/expansion/arith5.0
diff --git a/tools/regression/bin/sh/expansion/arith6.0 b/bin/sh/tests/expansion/arith6.0
index fc4589c..fc4589c 100644
--- a/tools/regression/bin/sh/expansion/arith6.0
+++ b/bin/sh/tests/expansion/arith6.0
diff --git a/tools/regression/bin/sh/expansion/arith7.0 b/bin/sh/tests/expansion/arith7.0
index 5aada2b..5aada2b 100644
--- a/tools/regression/bin/sh/expansion/arith7.0
+++ b/bin/sh/tests/expansion/arith7.0
diff --git a/tools/regression/bin/sh/expansion/arith8.0 b/bin/sh/tests/expansion/arith8.0
index 2d03e50..2d03e50 100644
--- a/tools/regression/bin/sh/expansion/arith8.0
+++ b/bin/sh/tests/expansion/arith8.0
diff --git a/tools/regression/bin/sh/expansion/arith9.0 b/bin/sh/tests/expansion/arith9.0
index cc8b597..cc8b597 100644
--- a/tools/regression/bin/sh/expansion/arith9.0
+++ b/bin/sh/tests/expansion/arith9.0
diff --git a/tools/regression/bin/sh/expansion/assign1.0 b/bin/sh/tests/expansion/assign1.0
index d4fa772..d4fa772 100644
--- a/tools/regression/bin/sh/expansion/assign1.0
+++ b/bin/sh/tests/expansion/assign1.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst1.0 b/bin/sh/tests/expansion/cmdsubst1.0
index 515c7da..515c7da 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst1.0
+++ b/bin/sh/tests/expansion/cmdsubst1.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst10.0 b/bin/sh/tests/expansion/cmdsubst10.0
index 7cf17a3..7cf17a3 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst10.0
+++ b/bin/sh/tests/expansion/cmdsubst10.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst11.0 b/bin/sh/tests/expansion/cmdsubst11.0
index f1af547..f1af547 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst11.0
+++ b/bin/sh/tests/expansion/cmdsubst11.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst12.0 b/bin/sh/tests/expansion/cmdsubst12.0
index 50394db..50394db 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst12.0
+++ b/bin/sh/tests/expansion/cmdsubst12.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst13.0 b/bin/sh/tests/expansion/cmdsubst13.0
index 7fdc5b2..7fdc5b2 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst13.0
+++ b/bin/sh/tests/expansion/cmdsubst13.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst14.0 b/bin/sh/tests/expansion/cmdsubst14.0
index bdbbb82..bdbbb82 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst14.0
+++ b/bin/sh/tests/expansion/cmdsubst14.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst15.0 b/bin/sh/tests/expansion/cmdsubst15.0
index 31d85d4..31d85d4 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst15.0
+++ b/bin/sh/tests/expansion/cmdsubst15.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst16.0 b/bin/sh/tests/expansion/cmdsubst16.0
index 71df562..71df562 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst16.0
+++ b/bin/sh/tests/expansion/cmdsubst16.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst17.0 b/bin/sh/tests/expansion/cmdsubst17.0
index 8c29e83..8c29e83 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst17.0
+++ b/bin/sh/tests/expansion/cmdsubst17.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst2.0 b/bin/sh/tests/expansion/cmdsubst2.0
index b86776e..b86776e 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst2.0
+++ b/bin/sh/tests/expansion/cmdsubst2.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst3.0 b/bin/sh/tests/expansion/cmdsubst3.0
index abb6b22..abb6b22 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst3.0
+++ b/bin/sh/tests/expansion/cmdsubst3.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst4.0 b/bin/sh/tests/expansion/cmdsubst4.0
index ee1ce73..ee1ce73 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst4.0
+++ b/bin/sh/tests/expansion/cmdsubst4.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst5.0 b/bin/sh/tests/expansion/cmdsubst5.0
index afca371..afca371 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst5.0
+++ b/bin/sh/tests/expansion/cmdsubst5.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst6.0 b/bin/sh/tests/expansion/cmdsubst6.0
index 6586f33..6586f33 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst6.0
+++ b/bin/sh/tests/expansion/cmdsubst6.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst7.0 b/bin/sh/tests/expansion/cmdsubst7.0
index dbd1aec..dbd1aec 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst7.0
+++ b/bin/sh/tests/expansion/cmdsubst7.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst8.0 b/bin/sh/tests/expansion/cmdsubst8.0
index 52adaea..52adaea 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst8.0
+++ b/bin/sh/tests/expansion/cmdsubst8.0
diff --git a/tools/regression/bin/sh/expansion/cmdsubst9.0 b/bin/sh/tests/expansion/cmdsubst9.0
index 0b1f81f..0b1f81f 100644
--- a/tools/regression/bin/sh/expansion/cmdsubst9.0
+++ b/bin/sh/tests/expansion/cmdsubst9.0
diff --git a/tools/regression/bin/sh/expansion/export1.0 b/bin/sh/tests/expansion/export1.0
index 4ee3ef4..4ee3ef4 100644
--- a/tools/regression/bin/sh/expansion/export1.0
+++ b/bin/sh/tests/expansion/export1.0
diff --git a/tools/regression/bin/sh/expansion/export2.0 b/bin/sh/tests/expansion/export2.0
index 57f64e7..57f64e7 100644
--- a/tools/regression/bin/sh/expansion/export2.0
+++ b/bin/sh/tests/expansion/export2.0
diff --git a/tools/regression/bin/sh/expansion/export3.0 b/bin/sh/tests/expansion/export3.0
index a1a0e66..a1a0e66 100644
--- a/tools/regression/bin/sh/expansion/export3.0
+++ b/bin/sh/tests/expansion/export3.0
diff --git a/tools/regression/bin/sh/expansion/heredoc1.0 b/bin/sh/tests/expansion/heredoc1.0
index a67b2da..a67b2da 100644
--- a/tools/regression/bin/sh/expansion/heredoc1.0
+++ b/bin/sh/tests/expansion/heredoc1.0
diff --git a/tools/regression/bin/sh/expansion/heredoc2.0 b/bin/sh/tests/expansion/heredoc2.0
index 2551432..2551432 100644
--- a/tools/regression/bin/sh/expansion/heredoc2.0
+++ b/bin/sh/tests/expansion/heredoc2.0
diff --git a/tools/regression/bin/sh/expansion/ifs1.0 b/bin/sh/tests/expansion/ifs1.0
index e7f53c7..e7f53c7 100644
--- a/tools/regression/bin/sh/expansion/ifs1.0
+++ b/bin/sh/tests/expansion/ifs1.0
diff --git a/tools/regression/bin/sh/expansion/ifs2.0 b/bin/sh/tests/expansion/ifs2.0
index e91b867..e91b867 100644
--- a/tools/regression/bin/sh/expansion/ifs2.0
+++ b/bin/sh/tests/expansion/ifs2.0
diff --git a/tools/regression/bin/sh/expansion/ifs3.0 b/bin/sh/tests/expansion/ifs3.0
index 0569b57..0569b57 100644
--- a/tools/regression/bin/sh/expansion/ifs3.0
+++ b/bin/sh/tests/expansion/ifs3.0
diff --git a/tools/regression/bin/sh/expansion/ifs4.0 b/bin/sh/tests/expansion/ifs4.0
index 5b896a2..5b896a2 100644
--- a/tools/regression/bin/sh/expansion/ifs4.0
+++ b/bin/sh/tests/expansion/ifs4.0
diff --git a/tools/regression/bin/sh/expansion/length1.0 b/bin/sh/tests/expansion/length1.0
index 2aaebf9..2aaebf9 100644
--- a/tools/regression/bin/sh/expansion/length1.0
+++ b/bin/sh/tests/expansion/length1.0
diff --git a/tools/regression/bin/sh/expansion/length2.0 b/bin/sh/tests/expansion/length2.0
index d749b51..d749b51 100644
--- a/tools/regression/bin/sh/expansion/length2.0
+++ b/bin/sh/tests/expansion/length2.0
diff --git a/tools/regression/bin/sh/expansion/length3.0 b/bin/sh/tests/expansion/length3.0
index 2093eed..2093eed 100644
--- a/tools/regression/bin/sh/expansion/length3.0
+++ b/bin/sh/tests/expansion/length3.0
diff --git a/tools/regression/bin/sh/expansion/length4.0 b/bin/sh/tests/expansion/length4.0
index 5348be5..5348be5 100644
--- a/tools/regression/bin/sh/expansion/length4.0
+++ b/bin/sh/tests/expansion/length4.0
diff --git a/tools/regression/bin/sh/expansion/length5.0 b/bin/sh/tests/expansion/length5.0
index 322ca16..322ca16 100644
--- a/tools/regression/bin/sh/expansion/length5.0
+++ b/bin/sh/tests/expansion/length5.0
diff --git a/tools/regression/bin/sh/expansion/length6.0 b/bin/sh/tests/expansion/length6.0
index 6b78309..6b78309 100644
--- a/tools/regression/bin/sh/expansion/length6.0
+++ b/bin/sh/tests/expansion/length6.0
diff --git a/tools/regression/bin/sh/expansion/length7.0 b/bin/sh/tests/expansion/length7.0
index b79b116..b79b116 100644
--- a/tools/regression/bin/sh/expansion/length7.0
+++ b/bin/sh/tests/expansion/length7.0
diff --git a/tools/regression/bin/sh/expansion/length8.0 b/bin/sh/tests/expansion/length8.0
index 3cc6c15..3cc6c15 100644
--- a/tools/regression/bin/sh/expansion/length8.0
+++ b/bin/sh/tests/expansion/length8.0
diff --git a/tools/regression/bin/sh/expansion/local1.0 b/bin/sh/tests/expansion/local1.0
index 3477835..3477835 100644
--- a/tools/regression/bin/sh/expansion/local1.0
+++ b/bin/sh/tests/expansion/local1.0
diff --git a/tools/regression/bin/sh/expansion/local2.0 b/bin/sh/tests/expansion/local2.0
index 1984290..1984290 100644
--- a/tools/regression/bin/sh/expansion/local2.0
+++ b/bin/sh/tests/expansion/local2.0
diff --git a/tools/regression/bin/sh/expansion/pathname1.0 b/bin/sh/tests/expansion/pathname1.0
index 8c6b01c..8c6b01c 100644
--- a/tools/regression/bin/sh/expansion/pathname1.0
+++ b/bin/sh/tests/expansion/pathname1.0
diff --git a/tools/regression/bin/sh/expansion/pathname2.0 b/bin/sh/tests/expansion/pathname2.0
index 8a884ff..8a884ff 100644
--- a/tools/regression/bin/sh/expansion/pathname2.0
+++ b/bin/sh/tests/expansion/pathname2.0
diff --git a/tools/regression/bin/sh/expansion/pathname3.0 b/bin/sh/tests/expansion/pathname3.0
index d1672e0..d1672e0 100644
--- a/tools/regression/bin/sh/expansion/pathname3.0
+++ b/bin/sh/tests/expansion/pathname3.0
diff --git a/tools/regression/bin/sh/expansion/pathname4.0 b/bin/sh/tests/expansion/pathname4.0
index 18269c4..18269c4 100644
--- a/tools/regression/bin/sh/expansion/pathname4.0
+++ b/bin/sh/tests/expansion/pathname4.0
diff --git a/tools/regression/bin/sh/expansion/plus-minus1.0 b/bin/sh/tests/expansion/plus-minus1.0
index 9a6a53a..9a6a53a 100644
--- a/tools/regression/bin/sh/expansion/plus-minus1.0
+++ b/bin/sh/tests/expansion/plus-minus1.0
diff --git a/tools/regression/bin/sh/expansion/plus-minus2.0 b/bin/sh/tests/expansion/plus-minus2.0
index f5a8752..f5a8752 100644
--- a/tools/regression/bin/sh/expansion/plus-minus2.0
+++ b/bin/sh/tests/expansion/plus-minus2.0
diff --git a/tools/regression/bin/sh/expansion/plus-minus3.0 b/bin/sh/tests/expansion/plus-minus3.0
index 49fcdc2..49fcdc2 100644
--- a/tools/regression/bin/sh/expansion/plus-minus3.0
+++ b/bin/sh/tests/expansion/plus-minus3.0
diff --git a/tools/regression/bin/sh/expansion/plus-minus4.0 b/bin/sh/tests/expansion/plus-minus4.0
index 66dea38..66dea38 100644
--- a/tools/regression/bin/sh/expansion/plus-minus4.0
+++ b/bin/sh/tests/expansion/plus-minus4.0
diff --git a/tools/regression/bin/sh/expansion/plus-minus5.0 b/bin/sh/tests/expansion/plus-minus5.0
index 0b25e53..0b25e53 100644
--- a/tools/regression/bin/sh/expansion/plus-minus5.0
+++ b/bin/sh/tests/expansion/plus-minus5.0
diff --git a/tools/regression/bin/sh/expansion/plus-minus6.0 b/bin/sh/tests/expansion/plus-minus6.0
index bc66805..bc66805 100644
--- a/tools/regression/bin/sh/expansion/plus-minus6.0
+++ b/bin/sh/tests/expansion/plus-minus6.0
diff --git a/tools/regression/bin/sh/expansion/plus-minus7.0 b/bin/sh/tests/expansion/plus-minus7.0
index 9e81f58..9e81f58 100644
--- a/tools/regression/bin/sh/expansion/plus-minus7.0
+++ b/bin/sh/tests/expansion/plus-minus7.0
diff --git a/tools/regression/bin/sh/expansion/plus-minus8.0 b/bin/sh/tests/expansion/plus-minus8.0
index beba009..beba009 100644
--- a/tools/regression/bin/sh/expansion/plus-minus8.0
+++ b/bin/sh/tests/expansion/plus-minus8.0
diff --git a/tools/regression/bin/sh/expansion/question1.0 b/bin/sh/tests/expansion/question1.0
index 663c68d..663c68d 100644
--- a/tools/regression/bin/sh/expansion/question1.0
+++ b/bin/sh/tests/expansion/question1.0
diff --git a/tools/regression/bin/sh/expansion/readonly1.0 b/bin/sh/tests/expansion/readonly1.0
index 5ad0e14..5ad0e14 100644
--- a/tools/regression/bin/sh/expansion/readonly1.0
+++ b/bin/sh/tests/expansion/readonly1.0
diff --git a/tools/regression/bin/sh/expansion/set-u1.0 b/bin/sh/tests/expansion/set-u1.0
index 763eb7d..763eb7d 100644
--- a/tools/regression/bin/sh/expansion/set-u1.0
+++ b/bin/sh/tests/expansion/set-u1.0
diff --git a/tools/regression/bin/sh/expansion/set-u2.0 b/bin/sh/tests/expansion/set-u2.0
index f81aa62..f81aa62 100644
--- a/tools/regression/bin/sh/expansion/set-u2.0
+++ b/bin/sh/tests/expansion/set-u2.0
diff --git a/tools/regression/bin/sh/expansion/set-u3.0 b/bin/sh/tests/expansion/set-u3.0
index 7f199b4..7f199b4 100644
--- a/tools/regression/bin/sh/expansion/set-u3.0
+++ b/bin/sh/tests/expansion/set-u3.0
diff --git a/tools/regression/bin/sh/expansion/tilde1.0 b/bin/sh/tests/expansion/tilde1.0
index 7d8581b..7d8581b 100644
--- a/tools/regression/bin/sh/expansion/tilde1.0
+++ b/bin/sh/tests/expansion/tilde1.0
diff --git a/tools/regression/bin/sh/expansion/tilde2.0 b/bin/sh/tests/expansion/tilde2.0
index 4f8ed9b..4f8ed9b 100644
--- a/tools/regression/bin/sh/expansion/tilde2.0
+++ b/bin/sh/tests/expansion/tilde2.0
diff --git a/tools/regression/bin/sh/expansion/trim1.0 b/bin/sh/tests/expansion/trim1.0
index b548e52..b548e52 100644
--- a/tools/regression/bin/sh/expansion/trim1.0
+++ b/bin/sh/tests/expansion/trim1.0
diff --git a/tools/regression/bin/sh/expansion/trim2.0 b/bin/sh/tests/expansion/trim2.0
index 619ef65..619ef65 100644
--- a/tools/regression/bin/sh/expansion/trim2.0
+++ b/bin/sh/tests/expansion/trim2.0
diff --git a/tools/regression/bin/sh/expansion/trim3.0 b/bin/sh/tests/expansion/trim3.0
index b89a041..b89a041 100644
--- a/tools/regression/bin/sh/expansion/trim3.0
+++ b/bin/sh/tests/expansion/trim3.0
diff --git a/tools/regression/bin/sh/expansion/trim4.0 b/bin/sh/tests/expansion/trim4.0
index 1000bd3..1000bd3 100644
--- a/tools/regression/bin/sh/expansion/trim4.0
+++ b/bin/sh/tests/expansion/trim4.0
diff --git a/tools/regression/bin/sh/expansion/trim5.0 b/bin/sh/tests/expansion/trim5.0
index 937ec9a..937ec9a 100644
--- a/tools/regression/bin/sh/expansion/trim5.0
+++ b/bin/sh/tests/expansion/trim5.0
diff --git a/tools/regression/bin/sh/expansion/trim6.0 b/bin/sh/tests/expansion/trim6.0
index 3f753c4..3f753c4 100644
--- a/tools/regression/bin/sh/expansion/trim6.0
+++ b/bin/sh/tests/expansion/trim6.0
diff --git a/tools/regression/bin/sh/expansion/trim7.0 b/bin/sh/tests/expansion/trim7.0
index 352bdea..352bdea 100644
--- a/tools/regression/bin/sh/expansion/trim7.0
+++ b/bin/sh/tests/expansion/trim7.0
diff --git a/tools/regression/bin/sh/expansion/trim8.0 b/bin/sh/tests/expansion/trim8.0
index f7272f3..f7272f3 100644
--- a/tools/regression/bin/sh/expansion/trim8.0
+++ b/bin/sh/tests/expansion/trim8.0
diff --git a/tools/regression/bin/sh/regress.sh b/bin/sh/tests/legacy_test.sh
index 60e5805..d43f5dd 100644
--- a/tools/regression/bin/sh/regress.sh
+++ b/bin/sh/tests/legacy_test.sh
@@ -1,10 +1,13 @@
# $FreeBSD$
-if [ -z "${SH}" ]; then
- echo '${SH} is not set, please correct and re-run.'
- exit 1
-fi
-export SH=${SH}
+: ${SH:="__SH__"}
+export SH
+
+# TODO(jmmv): The Kyua TAP interface should be passing us the value of
+# "srcdir" as an environment variable, just as it does with the ATF
+# interface in the form of a configuration variable. For now, just try
+# to guess this.
+: ${TESTS_DATA:=$(dirname ${0})}
COUNTER=1
@@ -17,6 +20,7 @@ do_test() {
rm tmp.stdout tmp.stderr
return
fi
+ sed -I '' -e "s|^${TESTS_DATA}|.|" tmp.stderr
for i in stdout stderr; do
if [ -f ${1}.${i} ]; then
if ! cmp -s tmp.${i} ${1}.${i}; then
@@ -34,7 +38,7 @@ do_test() {
rm tmp.stdout tmp.stderr
}
-TESTS=$(find -Es . -regex ".*\.[0-9]+")
+TESTS=$(find -Es ${TESTS_DATA} -regex ".*\.[0-9]+")
printf "1..%d\n" $(echo ${TESTS} | wc -w)
for i in ${TESTS} ; do
diff --git a/bin/sh/tests/parameters/Makefile b/bin/sh/tests/parameters/Makefile
new file mode 100644
index 0000000..fafc059
--- /dev/null
+++ b/bin/sh/tests/parameters/Makefile
@@ -0,0 +1,19 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+FILESDIR= ${TESTSBASE}/bin/sh/parameters
+KYUAFILE= no
+
+FILES= env1.0
+FILES+= exitstatus1.0
+FILES+= mail1.0
+FILES+= mail2.0
+FILES+= optind1.0
+FILES+= optind2.0
+FILES+= positional1.0
+FILES+= positional2.0
+FILES+= pwd1.0
+FILES+= pwd2.0
+
+.include <bsd.test.mk>
diff --git a/tools/regression/bin/sh/parameters/env1.0 b/bin/sh/tests/parameters/env1.0
index c0d4a2c..c0d4a2c 100644
--- a/tools/regression/bin/sh/parameters/env1.0
+++ b/bin/sh/tests/parameters/env1.0
diff --git a/tools/regression/bin/sh/parameters/exitstatus1.0 b/bin/sh/tests/parameters/exitstatus1.0
index 696823d..696823d 100644
--- a/tools/regression/bin/sh/parameters/exitstatus1.0
+++ b/bin/sh/tests/parameters/exitstatus1.0
diff --git a/tools/regression/bin/sh/parameters/mail1.0 b/bin/sh/tests/parameters/mail1.0
index 5791a5a..5791a5a 100644
--- a/tools/regression/bin/sh/parameters/mail1.0
+++ b/bin/sh/tests/parameters/mail1.0
diff --git a/tools/regression/bin/sh/parameters/mail2.0 b/bin/sh/tests/parameters/mail2.0
index 343c99d..343c99d 100644
--- a/tools/regression/bin/sh/parameters/mail2.0
+++ b/bin/sh/tests/parameters/mail2.0
diff --git a/tools/regression/bin/sh/parameters/optind1.0 b/bin/sh/tests/parameters/optind1.0
index 33e0288..33e0288 100644
--- a/tools/regression/bin/sh/parameters/optind1.0
+++ b/bin/sh/tests/parameters/optind1.0
diff --git a/bin/sh/tests/parameters/optind2.0 b/bin/sh/tests/parameters/optind2.0
new file mode 100644
index 0000000..a7689f6
--- /dev/null
+++ b/bin/sh/tests/parameters/optind2.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+[ "$(OPTIND=42 ${SH} -c 'printf %s "$OPTIND"')" = 1 ]
diff --git a/tools/regression/bin/sh/parameters/positional1.0 b/bin/sh/tests/parameters/positional1.0
index 67d1951..67d1951 100644
--- a/tools/regression/bin/sh/parameters/positional1.0
+++ b/bin/sh/tests/parameters/positional1.0
diff --git a/tools/regression/bin/sh/parameters/positional2.0 b/bin/sh/tests/parameters/positional2.0
index fcec2a4..fcec2a4 100644
--- a/tools/regression/bin/sh/parameters/positional2.0
+++ b/bin/sh/tests/parameters/positional2.0
diff --git a/tools/regression/bin/sh/parameters/pwd1.0 b/bin/sh/tests/parameters/pwd1.0
index 0099379..0099379 100644
--- a/tools/regression/bin/sh/parameters/pwd1.0
+++ b/bin/sh/tests/parameters/pwd1.0
diff --git a/tools/regression/bin/sh/parameters/pwd2.0 b/bin/sh/tests/parameters/pwd2.0
index 2297f8b..2297f8b 100644
--- a/tools/regression/bin/sh/parameters/pwd2.0
+++ b/bin/sh/tests/parameters/pwd2.0
diff --git a/bin/sh/tests/parser/Makefile b/bin/sh/tests/parser/Makefile
new file mode 100644
index 0000000..03650b1
--- /dev/null
+++ b/bin/sh/tests/parser/Makefile
@@ -0,0 +1,64 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+FILESDIR= ${TESTSBASE}/bin/sh/parser
+KYUAFILE= no
+
+FILES= alias1.0
+FILES+= alias2.0
+FILES+= alias3.0
+FILES+= alias4.0
+FILES+= alias5.0
+FILES+= alias6.0
+FILES+= alias7.0
+FILES+= alias8.0
+FILES+= alias9.0
+FILES+= alias10.0
+FILES+= alias11.0
+FILES+= alias12.0
+FILES+= alias13.0
+FILES+= alias14.0
+FILES+= alias15.0 alias15.0.stdout
+FILES+= and-pipe-not.0
+FILES+= case1.0
+FILES+= case2.0
+FILES+= dollar-quote1.0
+FILES+= dollar-quote2.0
+FILES+= dollar-quote3.0
+FILES+= dollar-quote4.0
+FILES+= dollar-quote5.0
+FILES+= dollar-quote6.0
+FILES+= dollar-quote7.0
+FILES+= dollar-quote8.0
+FILES+= dollar-quote9.0
+FILES+= dollar-quote10.0
+FILES+= dollar-quote11.0
+FILES+= empty-braces1.0
+FILES+= empty-cmd1.0
+FILES+= for1.0
+FILES+= for2.0
+FILES+= func1.0
+FILES+= func2.0
+FILES+= func3.0
+FILES+= heredoc1.0
+FILES+= heredoc2.0
+FILES+= heredoc3.0
+FILES+= heredoc4.0
+FILES+= heredoc5.0
+FILES+= heredoc6.0
+FILES+= heredoc7.0
+FILES+= heredoc8.0
+FILES+= heredoc9.0
+FILES+= heredoc10.0
+FILES+= heredoc11.0
+FILES+= no-space1.0
+FILES+= no-space2.0
+FILES+= only-redir1.0
+FILES+= only-redir2.0
+FILES+= only-redir3.0
+FILES+= only-redir4.0
+FILES+= pipe-not1.0
+FILES+= var-assign1.0
+
+.include <bsd.test.mk>
diff --git a/tools/regression/bin/sh/parser/alias1.0 b/bin/sh/tests/parser/alias1.0
index 75dd9ab..75dd9ab 100644
--- a/tools/regression/bin/sh/parser/alias1.0
+++ b/bin/sh/tests/parser/alias1.0
diff --git a/tools/regression/bin/sh/parser/alias10.0 b/bin/sh/tests/parser/alias10.0
index 30d99f4..30d99f4 100644
--- a/tools/regression/bin/sh/parser/alias10.0
+++ b/bin/sh/tests/parser/alias10.0
diff --git a/bin/sh/tests/parser/alias11.0 b/bin/sh/tests/parser/alias11.0
new file mode 100644
index 0000000..522264f
--- /dev/null
+++ b/bin/sh/tests/parser/alias11.0
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+alias alias0=alias1
+alias alias1=exit
+eval 'alias0 0'
+exit 3
diff --git a/bin/sh/tests/parser/alias12.0 b/bin/sh/tests/parser/alias12.0
new file mode 100644
index 0000000..2e43791
--- /dev/null
+++ b/bin/sh/tests/parser/alias12.0
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+unalias -a
+alias alias0=command
+alias true='echo bad'
+eval 'alias0 true'
diff --git a/bin/sh/tests/parser/alias13.0 b/bin/sh/tests/parser/alias13.0
new file mode 100644
index 0000000..53b949d
--- /dev/null
+++ b/bin/sh/tests/parser/alias13.0
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+unalias -a
+alias command=command
+alias true='echo bad'
+eval 'command true'
diff --git a/bin/sh/tests/parser/alias14.0 b/bin/sh/tests/parser/alias14.0
new file mode 100644
index 0000000..1b92fc0
--- /dev/null
+++ b/bin/sh/tests/parser/alias14.0
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+alias command='command '
+alias alias0=exit
+eval 'command alias0 0'
+exit 3
diff --git a/bin/sh/tests/parser/alias15.0 b/bin/sh/tests/parser/alias15.0
new file mode 100644
index 0000000..f0fbadb
--- /dev/null
+++ b/bin/sh/tests/parser/alias15.0
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+f_echoanddo() {
+ printf '%s\n' "$*"
+ "$@"
+}
+
+alias echoanddo='f_echoanddo '
+alias alias0='echo test2'
+eval 'echoanddo echo test1'
+eval 'echoanddo alias0'
+exit 0
diff --git a/bin/sh/tests/parser/alias15.0.stdout b/bin/sh/tests/parser/alias15.0.stdout
new file mode 100644
index 0000000..6dd179c
--- /dev/null
+++ b/bin/sh/tests/parser/alias15.0.stdout
@@ -0,0 +1,4 @@
+echo test1
+test1
+echo test2
+test2
diff --git a/tools/regression/bin/sh/parser/alias2.0 b/bin/sh/tests/parser/alias2.0
index ae99b8a..ae99b8a 100644
--- a/tools/regression/bin/sh/parser/alias2.0
+++ b/bin/sh/tests/parser/alias2.0
diff --git a/tools/regression/bin/sh/parser/alias3.0 b/bin/sh/tests/parser/alias3.0
index e0721e2..e0721e2 100644
--- a/tools/regression/bin/sh/parser/alias3.0
+++ b/bin/sh/tests/parser/alias3.0
diff --git a/tools/regression/bin/sh/parser/alias4.0 b/bin/sh/tests/parser/alias4.0
index 19332ed..19332ed 100644
--- a/tools/regression/bin/sh/parser/alias4.0
+++ b/bin/sh/tests/parser/alias4.0
diff --git a/tools/regression/bin/sh/parser/alias5.0 b/bin/sh/tests/parser/alias5.0
index 3d0205f..3d0205f 100644
--- a/tools/regression/bin/sh/parser/alias5.0
+++ b/bin/sh/tests/parser/alias5.0
diff --git a/tools/regression/bin/sh/parser/alias6.0 b/bin/sh/tests/parser/alias6.0
index c723d08..c723d08 100644
--- a/tools/regression/bin/sh/parser/alias6.0
+++ b/bin/sh/tests/parser/alias6.0
diff --git a/tools/regression/bin/sh/parser/alias7.0 b/bin/sh/tests/parser/alias7.0
index b26f0dd..b26f0dd 100644
--- a/tools/regression/bin/sh/parser/alias7.0
+++ b/bin/sh/tests/parser/alias7.0
diff --git a/tools/regression/bin/sh/parser/alias8.0 b/bin/sh/tests/parser/alias8.0
index 7fc2f15..7fc2f15 100644
--- a/tools/regression/bin/sh/parser/alias8.0
+++ b/bin/sh/tests/parser/alias8.0
diff --git a/tools/regression/bin/sh/parser/alias9.0 b/bin/sh/tests/parser/alias9.0
index 6bd8808..6bd8808 100644
--- a/tools/regression/bin/sh/parser/alias9.0
+++ b/bin/sh/tests/parser/alias9.0
diff --git a/tools/regression/bin/sh/parser/and-pipe-not.0 b/bin/sh/tests/parser/and-pipe-not.0
index 35b125c..35b125c 100644
--- a/tools/regression/bin/sh/parser/and-pipe-not.0
+++ b/bin/sh/tests/parser/and-pipe-not.0
diff --git a/tools/regression/bin/sh/parser/case1.0 b/bin/sh/tests/parser/case1.0
index 49b4c45..49b4c45 100644
--- a/tools/regression/bin/sh/parser/case1.0
+++ b/bin/sh/tests/parser/case1.0
diff --git a/tools/regression/bin/sh/parser/case2.0 b/bin/sh/tests/parser/case2.0
index 14610e4..14610e4 100644
--- a/tools/regression/bin/sh/parser/case2.0
+++ b/bin/sh/tests/parser/case2.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote1.0 b/bin/sh/tests/parser/dollar-quote1.0
index 1206141..1206141 100644
--- a/tools/regression/bin/sh/parser/dollar-quote1.0
+++ b/bin/sh/tests/parser/dollar-quote1.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote10.0 b/bin/sh/tests/parser/dollar-quote10.0
index ad166da..ad166da 100644
--- a/tools/regression/bin/sh/parser/dollar-quote10.0
+++ b/bin/sh/tests/parser/dollar-quote10.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote11.0 b/bin/sh/tests/parser/dollar-quote11.0
index 2e872ab..2e872ab 100644
--- a/tools/regression/bin/sh/parser/dollar-quote11.0
+++ b/bin/sh/tests/parser/dollar-quote11.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote2.0 b/bin/sh/tests/parser/dollar-quote2.0
index 4617ed8..4617ed8 100644
--- a/tools/regression/bin/sh/parser/dollar-quote2.0
+++ b/bin/sh/tests/parser/dollar-quote2.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote3.0 b/bin/sh/tests/parser/dollar-quote3.0
index a7e6852..a7e6852 100644
--- a/tools/regression/bin/sh/parser/dollar-quote3.0
+++ b/bin/sh/tests/parser/dollar-quote3.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote4.0 b/bin/sh/tests/parser/dollar-quote4.0
index f620af5..f620af5 100644
--- a/tools/regression/bin/sh/parser/dollar-quote4.0
+++ b/bin/sh/tests/parser/dollar-quote4.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote5.0 b/bin/sh/tests/parser/dollar-quote5.0
index c2c44ca..c2c44ca 100644
--- a/tools/regression/bin/sh/parser/dollar-quote5.0
+++ b/bin/sh/tests/parser/dollar-quote5.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote6.0 b/bin/sh/tests/parser/dollar-quote6.0
index a4b1e3f..a4b1e3f 100644
--- a/tools/regression/bin/sh/parser/dollar-quote6.0
+++ b/bin/sh/tests/parser/dollar-quote6.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote7.0 b/bin/sh/tests/parser/dollar-quote7.0
index c866b1a..c866b1a 100644
--- a/tools/regression/bin/sh/parser/dollar-quote7.0
+++ b/bin/sh/tests/parser/dollar-quote7.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote8.0 b/bin/sh/tests/parser/dollar-quote8.0
index 8f0b41a..8f0b41a 100644
--- a/tools/regression/bin/sh/parser/dollar-quote8.0
+++ b/bin/sh/tests/parser/dollar-quote8.0
diff --git a/tools/regression/bin/sh/parser/dollar-quote9.0 b/bin/sh/tests/parser/dollar-quote9.0
index df64b7d..df64b7d 100644
--- a/tools/regression/bin/sh/parser/dollar-quote9.0
+++ b/bin/sh/tests/parser/dollar-quote9.0
diff --git a/tools/regression/bin/sh/parser/empty-braces1.0 b/bin/sh/tests/parser/empty-braces1.0
index 5ab443c..5ab443c 100644
--- a/tools/regression/bin/sh/parser/empty-braces1.0
+++ b/bin/sh/tests/parser/empty-braces1.0
diff --git a/tools/regression/bin/sh/parser/empty-cmd1.0 b/bin/sh/tests/parser/empty-cmd1.0
index f8b01e9..f8b01e9 100644
--- a/tools/regression/bin/sh/parser/empty-cmd1.0
+++ b/bin/sh/tests/parser/empty-cmd1.0
diff --git a/tools/regression/bin/sh/parser/for1.0 b/bin/sh/tests/parser/for1.0
index eb7c881..eb7c881 100644
--- a/tools/regression/bin/sh/parser/for1.0
+++ b/bin/sh/tests/parser/for1.0
diff --git a/tools/regression/bin/sh/parser/for2.0 b/bin/sh/tests/parser/for2.0
index 54ebfc3..54ebfc3 100644
--- a/tools/regression/bin/sh/parser/for2.0
+++ b/bin/sh/tests/parser/for2.0
diff --git a/tools/regression/bin/sh/parser/func1.0 b/bin/sh/tests/parser/func1.0
index 4e887b2..4e887b2 100644
--- a/tools/regression/bin/sh/parser/func1.0
+++ b/bin/sh/tests/parser/func1.0
diff --git a/tools/regression/bin/sh/parser/func2.0 b/bin/sh/tests/parser/func2.0
index 5fd4dda..5fd4dda 100644
--- a/tools/regression/bin/sh/parser/func2.0
+++ b/bin/sh/tests/parser/func2.0
diff --git a/tools/regression/bin/sh/parser/func3.0 b/bin/sh/tests/parser/func3.0
index dcac732..dcac732 100644
--- a/tools/regression/bin/sh/parser/func3.0
+++ b/bin/sh/tests/parser/func3.0
diff --git a/tools/regression/bin/sh/parser/heredoc1.0 b/bin/sh/tests/parser/heredoc1.0
index 5ce3897..5ce3897 100644
--- a/tools/regression/bin/sh/parser/heredoc1.0
+++ b/bin/sh/tests/parser/heredoc1.0
diff --git a/tools/regression/bin/sh/parser/heredoc10.0 b/bin/sh/tests/parser/heredoc10.0
index 27369a0..27369a0 100644
--- a/tools/regression/bin/sh/parser/heredoc10.0
+++ b/bin/sh/tests/parser/heredoc10.0
diff --git a/tools/regression/bin/sh/parser/heredoc11.0 b/bin/sh/tests/parser/heredoc11.0
index 5839e46..5839e46 100644
--- a/tools/regression/bin/sh/parser/heredoc11.0
+++ b/bin/sh/tests/parser/heredoc11.0
diff --git a/tools/regression/bin/sh/parser/heredoc2.0 b/bin/sh/tests/parser/heredoc2.0
index 4bb85ad..4bb85ad 100644
--- a/tools/regression/bin/sh/parser/heredoc2.0
+++ b/bin/sh/tests/parser/heredoc2.0
diff --git a/tools/regression/bin/sh/parser/heredoc3.0 b/bin/sh/tests/parser/heredoc3.0
index b250272..b250272 100644
--- a/tools/regression/bin/sh/parser/heredoc3.0
+++ b/bin/sh/tests/parser/heredoc3.0
diff --git a/tools/regression/bin/sh/parser/heredoc4.0 b/bin/sh/tests/parser/heredoc4.0
index fa3af5f..fa3af5f 100644
--- a/tools/regression/bin/sh/parser/heredoc4.0
+++ b/bin/sh/tests/parser/heredoc4.0
diff --git a/tools/regression/bin/sh/parser/heredoc5.0 b/bin/sh/tests/parser/heredoc5.0
index 84b0eb2..84b0eb2 100644
--- a/tools/regression/bin/sh/parser/heredoc5.0
+++ b/bin/sh/tests/parser/heredoc5.0
diff --git a/tools/regression/bin/sh/parser/heredoc6.0 b/bin/sh/tests/parser/heredoc6.0
index 3a634de..3a634de 100644
--- a/tools/regression/bin/sh/parser/heredoc6.0
+++ b/bin/sh/tests/parser/heredoc6.0
diff --git a/tools/regression/bin/sh/parser/heredoc7.0 b/bin/sh/tests/parser/heredoc7.0
index a150106..a150106 100644
--- a/tools/regression/bin/sh/parser/heredoc7.0
+++ b/bin/sh/tests/parser/heredoc7.0
diff --git a/tools/regression/bin/sh/parser/heredoc8.0 b/bin/sh/tests/parser/heredoc8.0
index 598358a..598358a 100644
--- a/tools/regression/bin/sh/parser/heredoc8.0
+++ b/bin/sh/tests/parser/heredoc8.0
diff --git a/tools/regression/bin/sh/parser/heredoc9.0 b/bin/sh/tests/parser/heredoc9.0
index 125a542..125a542 100644
--- a/tools/regression/bin/sh/parser/heredoc9.0
+++ b/bin/sh/tests/parser/heredoc9.0
diff --git a/tools/regression/bin/sh/parser/no-space1.0 b/bin/sh/tests/parser/no-space1.0
index 6df9f63..6df9f63 100644
--- a/tools/regression/bin/sh/parser/no-space1.0
+++ b/bin/sh/tests/parser/no-space1.0
diff --git a/tools/regression/bin/sh/parser/no-space2.0 b/bin/sh/tests/parser/no-space2.0
index 4e8447b..4e8447b 100644
--- a/tools/regression/bin/sh/parser/no-space2.0
+++ b/bin/sh/tests/parser/no-space2.0
diff --git a/tools/regression/bin/sh/parser/only-redir1.0 b/bin/sh/tests/parser/only-redir1.0
index 46076c8..46076c8 100644
--- a/tools/regression/bin/sh/parser/only-redir1.0
+++ b/bin/sh/tests/parser/only-redir1.0
diff --git a/tools/regression/bin/sh/parser/only-redir2.0 b/bin/sh/tests/parser/only-redir2.0
index b9e9501..b9e9501 100644
--- a/tools/regression/bin/sh/parser/only-redir2.0
+++ b/bin/sh/tests/parser/only-redir2.0
diff --git a/tools/regression/bin/sh/parser/only-redir3.0 b/bin/sh/tests/parser/only-redir3.0
index 128a483..128a483 100644
--- a/tools/regression/bin/sh/parser/only-redir3.0
+++ b/bin/sh/tests/parser/only-redir3.0
diff --git a/tools/regression/bin/sh/parser/only-redir4.0 b/bin/sh/tests/parser/only-redir4.0
index d804e12..d804e12 100644
--- a/tools/regression/bin/sh/parser/only-redir4.0
+++ b/bin/sh/tests/parser/only-redir4.0
diff --git a/tools/regression/bin/sh/parser/pipe-not1.0 b/bin/sh/tests/parser/pipe-not1.0
index 9842ff0..9842ff0 100644
--- a/tools/regression/bin/sh/parser/pipe-not1.0
+++ b/bin/sh/tests/parser/pipe-not1.0
diff --git a/bin/sh/tests/parser/var-assign1.0 b/bin/sh/tests/parser/var-assign1.0
new file mode 100644
index 0000000..1fd3b26
--- /dev/null
+++ b/bin/sh/tests/parser/var-assign1.0
@@ -0,0 +1,19 @@
+# $FreeBSD$
+# In a variable assignment, both the name and the equals sign must be entirely
+# unquoted. Therefore, there is only one assignment below; the other words
+# containing equals signs are command words.
+
+abc=0
+\abc=1 2>/dev/null
+a\bc=2 2>/dev/null
+abc\=3 2>/dev/null
+a\bc\=4 2>/dev/null
+'abc'=5 2>/dev/null
+a'b'c=6 2>/dev/null
+abc'='7 2>/dev/null
+'abc=8' 2>/dev/null
+"abc"=9 2>/dev/null
+a"b"c=10 2>/dev/null
+abc"="11 2>/dev/null
+"abc=12" 2>/dev/null
+[ "$abc" = 0 ]
diff --git a/bin/sh/tests/set-e/Makefile b/bin/sh/tests/set-e/Makefile
new file mode 100644
index 0000000..55d7917
--- /dev/null
+++ b/bin/sh/tests/set-e/Makefile
@@ -0,0 +1,44 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+FILESDIR= ${TESTSBASE}/bin/sh/set-e
+KYUAFILE= no
+
+FILES= and1.0
+FILES+= and2.1
+FILES+= and3.0
+FILES+= and4.0
+FILES+= background1.0
+FILES+= cmd1.0
+FILES+= cmd2.1
+FILES+= elif1.0
+FILES+= elif2.0
+FILES+= eval1.0
+FILES+= eval2.1
+FILES+= for1.0
+FILES+= func1.0
+FILES+= func2.1
+FILES+= if1.0
+FILES+= if2.0
+FILES+= if3.0
+FILES+= not1.0
+FILES+= not2.0
+FILES+= or1.0
+FILES+= or2.0
+FILES+= or3.1
+FILES+= pipe1.1
+FILES+= pipe2.0
+FILES+= return1.0
+FILES+= semi1.1
+FILES+= semi2.1
+FILES+= subshell1.0
+FILES+= subshell2.1
+FILES+= until1.0
+FILES+= until2.0
+FILES+= until3.0
+FILES+= while1.0
+FILES+= while2.0
+FILES+= while3.0
+
+.include <bsd.test.mk>
diff --git a/tools/regression/bin/sh/set-e/and1.0 b/bin/sh/tests/set-e/and1.0
index 607b7c3..607b7c3 100644
--- a/tools/regression/bin/sh/set-e/and1.0
+++ b/bin/sh/tests/set-e/and1.0
diff --git a/tools/regression/bin/sh/set-e/and2.1 b/bin/sh/tests/set-e/and2.1
index 78e203a..78e203a 100644
--- a/tools/regression/bin/sh/set-e/and2.1
+++ b/bin/sh/tests/set-e/and2.1
diff --git a/tools/regression/bin/sh/set-e/and3.0 b/bin/sh/tests/set-e/and3.0
index 9fafb1c..9fafb1c 100644
--- a/tools/regression/bin/sh/set-e/and3.0
+++ b/bin/sh/tests/set-e/and3.0
diff --git a/tools/regression/bin/sh/set-e/and4.0 b/bin/sh/tests/set-e/and4.0
index 25d0e61..25d0e61 100644
--- a/tools/regression/bin/sh/set-e/and4.0
+++ b/bin/sh/tests/set-e/and4.0
diff --git a/tools/regression/bin/sh/set-e/background1.0 b/bin/sh/tests/set-e/background1.0
index 21577f4..21577f4 100644
--- a/tools/regression/bin/sh/set-e/background1.0
+++ b/bin/sh/tests/set-e/background1.0
diff --git a/tools/regression/bin/sh/set-e/cmd1.0 b/bin/sh/tests/set-e/cmd1.0
index 67fdcbc..67fdcbc 100644
--- a/tools/regression/bin/sh/set-e/cmd1.0
+++ b/bin/sh/tests/set-e/cmd1.0
diff --git a/tools/regression/bin/sh/set-e/cmd2.1 b/bin/sh/tests/set-e/cmd2.1
index 7cd8b09..7cd8b09 100644
--- a/tools/regression/bin/sh/set-e/cmd2.1
+++ b/bin/sh/tests/set-e/cmd2.1
diff --git a/tools/regression/bin/sh/set-e/elif1.0 b/bin/sh/tests/set-e/elif1.0
index 6a5937d..6a5937d 100644
--- a/tools/regression/bin/sh/set-e/elif1.0
+++ b/bin/sh/tests/set-e/elif1.0
diff --git a/tools/regression/bin/sh/set-e/elif2.0 b/bin/sh/tests/set-e/elif2.0
index 9dbb4bf..9dbb4bf 100644
--- a/tools/regression/bin/sh/set-e/elif2.0
+++ b/bin/sh/tests/set-e/elif2.0
diff --git a/tools/regression/bin/sh/set-e/eval1.0 b/bin/sh/tests/set-e/eval1.0
index 9b7f67b..9b7f67b 100644
--- a/tools/regression/bin/sh/set-e/eval1.0
+++ b/bin/sh/tests/set-e/eval1.0
diff --git a/tools/regression/bin/sh/set-e/eval2.1 b/bin/sh/tests/set-e/eval2.1
index 8bb7f3a..8bb7f3a 100644
--- a/tools/regression/bin/sh/set-e/eval2.1
+++ b/bin/sh/tests/set-e/eval2.1
diff --git a/tools/regression/bin/sh/set-e/for1.0 b/bin/sh/tests/set-e/for1.0
index 67eb718..67eb718 100644
--- a/tools/regression/bin/sh/set-e/for1.0
+++ b/bin/sh/tests/set-e/for1.0
diff --git a/tools/regression/bin/sh/set-e/func1.0 b/bin/sh/tests/set-e/func1.0
index 3c6b704..3c6b704 100644
--- a/tools/regression/bin/sh/set-e/func1.0
+++ b/bin/sh/tests/set-e/func1.0
diff --git a/tools/regression/bin/sh/set-e/func2.1 b/bin/sh/tests/set-e/func2.1
index cc76d6e..cc76d6e 100644
--- a/tools/regression/bin/sh/set-e/func2.1
+++ b/bin/sh/tests/set-e/func2.1
diff --git a/tools/regression/bin/sh/set-e/if1.0 b/bin/sh/tests/set-e/if1.0
index 36aa4bd..36aa4bd 100644
--- a/tools/regression/bin/sh/set-e/if1.0
+++ b/bin/sh/tests/set-e/if1.0
diff --git a/tools/regression/bin/sh/set-e/if2.0 b/bin/sh/tests/set-e/if2.0
index 4955408..4955408 100644
--- a/tools/regression/bin/sh/set-e/if2.0
+++ b/bin/sh/tests/set-e/if2.0
diff --git a/tools/regression/bin/sh/set-e/if3.0 b/bin/sh/tests/set-e/if3.0
index a4916a8..a4916a8 100644
--- a/tools/regression/bin/sh/set-e/if3.0
+++ b/bin/sh/tests/set-e/if3.0
diff --git a/tools/regression/bin/sh/set-e/not1.0 b/bin/sh/tests/set-e/not1.0
index 21c089a..21c089a 100644
--- a/tools/regression/bin/sh/set-e/not1.0
+++ b/bin/sh/tests/set-e/not1.0
diff --git a/tools/regression/bin/sh/set-e/not2.0 b/bin/sh/tests/set-e/not2.0
index 7d93b4d..7d93b4d 100644
--- a/tools/regression/bin/sh/set-e/not2.0
+++ b/bin/sh/tests/set-e/not2.0
diff --git a/tools/regression/bin/sh/set-e/or1.0 b/bin/sh/tests/set-e/or1.0
index c2dcbe9..c2dcbe9 100644
--- a/tools/regression/bin/sh/set-e/or1.0
+++ b/bin/sh/tests/set-e/or1.0
diff --git a/tools/regression/bin/sh/set-e/or2.0 b/bin/sh/tests/set-e/or2.0
index 934e2a6..934e2a6 100644
--- a/tools/regression/bin/sh/set-e/or2.0
+++ b/bin/sh/tests/set-e/or2.0
diff --git a/tools/regression/bin/sh/set-e/or3.1 b/bin/sh/tests/set-e/or3.1
index 7a617a1..7a617a1 100644
--- a/tools/regression/bin/sh/set-e/or3.1
+++ b/bin/sh/tests/set-e/or3.1
diff --git a/tools/regression/bin/sh/set-e/pipe1.1 b/bin/sh/tests/set-e/pipe1.1
index c0bad0f..c0bad0f 100644
--- a/tools/regression/bin/sh/set-e/pipe1.1
+++ b/bin/sh/tests/set-e/pipe1.1
diff --git a/tools/regression/bin/sh/set-e/pipe2.0 b/bin/sh/tests/set-e/pipe2.0
index 1e25566..1e25566 100644
--- a/tools/regression/bin/sh/set-e/pipe2.0
+++ b/bin/sh/tests/set-e/pipe2.0
diff --git a/tools/regression/bin/sh/set-e/return1.0 b/bin/sh/tests/set-e/return1.0
index 961bd41..961bd41 100644
--- a/tools/regression/bin/sh/set-e/return1.0
+++ b/bin/sh/tests/set-e/return1.0
diff --git a/tools/regression/bin/sh/set-e/semi1.1 b/bin/sh/tests/set-e/semi1.1
index 90476a9..90476a9 100644
--- a/tools/regression/bin/sh/set-e/semi1.1
+++ b/bin/sh/tests/set-e/semi1.1
diff --git a/tools/regression/bin/sh/set-e/semi2.1 b/bin/sh/tests/set-e/semi2.1
index 8f510ac..8f510ac 100644
--- a/tools/regression/bin/sh/set-e/semi2.1
+++ b/bin/sh/tests/set-e/semi2.1
diff --git a/tools/regression/bin/sh/set-e/subshell1.0 b/bin/sh/tests/set-e/subshell1.0
index 8e5831b..8e5831b 100644
--- a/tools/regression/bin/sh/set-e/subshell1.0
+++ b/bin/sh/tests/set-e/subshell1.0
diff --git a/tools/regression/bin/sh/set-e/subshell2.1 b/bin/sh/tests/set-e/subshell2.1
index 619e98a..619e98a 100644
--- a/tools/regression/bin/sh/set-e/subshell2.1
+++ b/bin/sh/tests/set-e/subshell2.1
diff --git a/tools/regression/bin/sh/set-e/until1.0 b/bin/sh/tests/set-e/until1.0
index 71ea7f2..71ea7f2 100644
--- a/tools/regression/bin/sh/set-e/until1.0
+++ b/bin/sh/tests/set-e/until1.0
diff --git a/tools/regression/bin/sh/set-e/until2.0 b/bin/sh/tests/set-e/until2.0
index 24ea276..24ea276 100644
--- a/tools/regression/bin/sh/set-e/until2.0
+++ b/bin/sh/tests/set-e/until2.0
diff --git a/tools/regression/bin/sh/set-e/until3.0 b/bin/sh/tests/set-e/until3.0
index 597db59..597db59 100644
--- a/tools/regression/bin/sh/set-e/until3.0
+++ b/bin/sh/tests/set-e/until3.0
diff --git a/tools/regression/bin/sh/set-e/while1.0 b/bin/sh/tests/set-e/while1.0
index 371c94a..371c94a 100644
--- a/tools/regression/bin/sh/set-e/while1.0
+++ b/bin/sh/tests/set-e/while1.0
diff --git a/tools/regression/bin/sh/set-e/while2.0 b/bin/sh/tests/set-e/while2.0
index 124966c..124966c 100644
--- a/tools/regression/bin/sh/set-e/while2.0
+++ b/bin/sh/tests/set-e/while2.0
diff --git a/tools/regression/bin/sh/set-e/while3.0 b/bin/sh/tests/set-e/while3.0
index dd3c790..dd3c790 100644
--- a/tools/regression/bin/sh/set-e/while3.0
+++ b/bin/sh/tests/set-e/while3.0
diff --git a/bin/sh/trap.c b/bin/sh/trap.c
index 3fc8566..e5a2a91 100644
--- a/bin/sh/trap.c
+++ b/bin/sh/trap.c
@@ -80,7 +80,6 @@ static char *volatile trap[NSIG]; /* trap handler commands */
static volatile sig_atomic_t gotsig[NSIG];
/* indicates specified signal received */
static int ignore_sigchld; /* Used while handling SIGCHLD traps. */
-volatile sig_atomic_t gotwinch;
static int last_trapsig;
static int exiting; /* exitshell() has been called */
@@ -293,12 +292,6 @@ setsignal(int signo)
action = S_IGN;
break;
#endif
-#ifndef NO_HISTORY
- case SIGWINCH:
- if (rootshell && iflag)
- action = S_CATCH;
- break;
-#endif
}
}
@@ -362,10 +355,12 @@ void
ignoresig(int signo)
{
+ if (sigmode[signo] == 0)
+ setsignal(signo);
if (sigmode[signo] != S_IGN && sigmode[signo] != S_HARD_IGN) {
signal(signo, SIG_IGN);
+ sigmode[signo] = S_IGN;
}
- sigmode[signo] = S_HARD_IGN;
}
@@ -398,11 +393,6 @@ onsig(int signo)
gotsig[signo] = 1;
pendingsig = signo;
}
-
-#ifndef NO_HISTORY
- if (signo == SIGWINCH)
- gotwinch = 1;
-#endif
}
@@ -488,9 +478,6 @@ setinteractive(int on)
setsignal(SIGINT);
setsignal(SIGQUIT);
setsignal(SIGTERM);
-#ifndef NO_HISTORY
- setsignal(SIGWINCH);
-#endif
is_interactive = on;
}
diff --git a/bin/sh/trap.h b/bin/sh/trap.h
index a962251..541b9b1 100644
--- a/bin/sh/trap.h
+++ b/bin/sh/trap.h
@@ -36,7 +36,6 @@
extern volatile sig_atomic_t pendingsig;
extern volatile sig_atomic_t pendingsig_waitcmd;
extern int in_dotrap;
-extern volatile sig_atomic_t gotwinch;
void clear_traps(void);
int have_traps(void);
diff --git a/bin/sh/var.c b/bin/sh/var.c
index c20d032..1fd8c77 100644
--- a/bin/sh/var.c
+++ b/bin/sh/var.c
@@ -88,11 +88,9 @@ struct var vifs;
struct var vmail;
struct var vmpath;
struct var vpath;
-struct var vppid;
struct var vps1;
struct var vps2;
struct var vps4;
-struct var vvers;
static struct var voptind;
struct var vdisvfork;
@@ -111,8 +109,6 @@ static const struct varinit varinit[] = {
NULL },
{ &vpath, 0, "PATH=" _PATH_DEFPATH,
changepath },
- { &vppid, VUNSET, "PPID=",
- NULL },
/*
* vps1 depends on uid
*/
@@ -180,15 +176,14 @@ initvar(void)
vps1.text = __DECONST(char *, geteuid() ? "PS1=$ " : "PS1=# ");
vps1.flags = VSTRFIXED|VTEXTFIXED;
}
- if ((vppid.flags & VEXPORT) == 0) {
- fmtstr(ppid, sizeof(ppid), "%d", (int)getppid());
- setvarsafe("PPID", ppid, 0);
- }
+ fmtstr(ppid, sizeof(ppid), "%d", (int)getppid());
+ setvarsafe("PPID", ppid, 0);
for (envp = environ ; *envp ; envp++) {
if (strchr(*envp, '=')) {
setvareq(*envp, VEXPORT|VTEXTFIXED);
}
}
+ setvareq("OPTIND=1", VTEXTFIXED);
}
/*
@@ -224,8 +219,9 @@ void
setvar(const char *name, const char *val, int flags)
{
const char *p;
- int len;
- int namelen;
+ size_t len;
+ size_t namelen;
+ size_t vallen;
char *nameeq;
int isbad;
@@ -244,18 +240,20 @@ setvar(const char *name, const char *val, int flags)
}
namelen = p - name;
if (isbad)
- error("%.*s: bad variable name", namelen, name);
+ error("%.*s: bad variable name", (int)namelen, name);
len = namelen + 2; /* 2 is space for '=' and '\0' */
if (val == NULL) {
flags |= VUNSET;
+ vallen = 0;
} else {
- len += strlen(val);
+ vallen = strlen(val);
+ len += vallen;
}
nameeq = ckmalloc(len);
memcpy(nameeq, name, namelen);
nameeq[namelen] = '=';
if (val)
- scopy(val, nameeq + namelen + 1);
+ memcpy(nameeq + namelen + 1, val, vallen + 1);
else
nameeq[namelen + 1] = '\0';
setvareq(nameeq, flags);
diff --git a/bin/sh/var.h b/bin/sh/var.h
index 6cdfbfe..6ce5b24 100644
--- a/bin/sh/var.h
+++ b/bin/sh/var.h
@@ -75,7 +75,6 @@ extern struct var vifs;
extern struct var vmail;
extern struct var vmpath;
extern struct var vpath;
-extern struct var vppid;
extern struct var vps1;
extern struct var vps2;
extern struct var vps4;
diff --git a/bin/test/Makefile b/bin/test/Makefile
index 7c64b40..e9a0507 100644
--- a/bin/test/Makefile
+++ b/bin/test/Makefile
@@ -1,8 +1,14 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
# $FreeBSD$
+.include <bsd.own.mk>
+
PROG= test
LINKS= ${BINDIR}/test ${BINDIR}/[
MLINKS= test.1 [.1
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/bin/test/tests/Makefile b/bin/test/tests/Makefile
new file mode 100644
index 0000000..be32dbb
--- /dev/null
+++ b/bin/test/tests/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/bin/test
+
+TAP_TESTS_SH= legacy_test
+# Some tests in here are silently not run when the tests are executed as
+# root. Explicitly tell Kyua to drop privileges.
+#
+# TODO(jmmv): Kyua needs to do this by default, not only when explicitly
+# requested. See https://code.google.com/p/kyua/issues/detail?id=6
+TEST_METADATA.legacy_test+= required_user="unprivileged"
+
+.include <tap.test.mk>
diff --git a/tools/regression/bin/test/regress.sh b/bin/test/tests/legacy_test.sh
index 9229551..9229551 100644
--- a/tools/regression/bin/test/regress.sh
+++ b/bin/test/tests/legacy_test.sh
diff --git a/bin/tests/Makefile b/bin/tests/Makefile
new file mode 100644
index 0000000..7a59b10
--- /dev/null
+++ b/bin/tests/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/bin
+
+.PATH: ${.CURDIR:H:H}/tests
+KYUAFILE= yes
+
+.include <bsd.test.mk>
diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist
index acb0dcb..037c997 100644
--- a/etc/mtree/BSD.tests.dist
+++ b/etc/mtree/BSD.tests.dist
@@ -20,6 +20,32 @@
..
..
tests
+ bin
+ date
+ ..
+ mv
+ ..
+ pax
+ ..
+ sh
+ builtins
+ ..
+ errors
+ ..
+ execution
+ ..
+ expansion
+ ..
+ parameters
+ ..
+ parser
+ ..
+ set-e
+ ..
+ ..
+ test
+ ..
+ ..
lib
atf
libatf-c
diff --git a/tools/regression/bin/Makefile b/tools/regression/bin/Makefile
deleted file mode 100644
index 1dcdbb3..0000000
--- a/tools/regression/bin/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-SUBDIR= date mv pax sh test
-
-.include <bsd.subdir.mk>
diff --git a/tools/regression/bin/date/Makefile b/tools/regression/bin/date/Makefile
deleted file mode 100644
index 2c9ca59..0000000
--- a/tools/regression/bin/date/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-# $FreeBSD$
-
-all:
- sh regress.sh
diff --git a/tools/regression/bin/date/regress.t b/tools/regression/bin/date/regress.t
deleted file mode 100644
index c36d834..0000000
--- a/tools/regression/bin/date/regress.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-cd `dirname $0`
-
-sh regress.sh
diff --git a/tools/regression/bin/mv/Makefile b/tools/regression/bin/mv/Makefile
deleted file mode 100644
index 2c9ca59..0000000
--- a/tools/regression/bin/mv/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-# $FreeBSD$
-
-all:
- sh regress.sh
diff --git a/tools/regression/bin/mv/regress.t b/tools/regression/bin/mv/regress.t
deleted file mode 100644
index c36d834..0000000
--- a/tools/regression/bin/mv/regress.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-cd `dirname $0`
-
-sh regress.sh
diff --git a/tools/regression/bin/pax/Makefile b/tools/regression/bin/pax/Makefile
deleted file mode 100644
index 6855bca..0000000
--- a/tools/regression/bin/pax/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# $FreeBSD$
-
-all test:
- prove -vmw regress.t
-
-clean:
- rm -rf ustar-pathnames-[12]
- rm -f ustar.ok ustar.fail*
diff --git a/tools/regression/bin/sh/Makefile b/tools/regression/bin/sh/Makefile
deleted file mode 100644
index 82b9c09..0000000
--- a/tools/regression/bin/sh/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# $FreeBSD$
-
-# Allow one to specify the 'sh' to regress.
-SH?= /bin/sh
-
-all:
- env SH=${SH} ${SH} regress.sh
diff --git a/tools/regression/bin/sh/regress.t b/tools/regression/bin/sh/regress.t
deleted file mode 100644
index 89b1828..0000000
--- a/tools/regression/bin/sh/regress.t
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-export SH="${SH:-sh}"
-
-cd `dirname $0`
-
-${SH} regress.sh
diff --git a/tools/regression/bin/test/Makefile b/tools/regression/bin/test/Makefile
deleted file mode 100644
index 2c9ca59..0000000
--- a/tools/regression/bin/test/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-# $FreeBSD$
-
-all:
- sh regress.sh
diff --git a/tools/regression/bin/test/regress.t b/tools/regression/bin/test/regress.t
deleted file mode 100644
index c36d834..0000000
--- a/tools/regression/bin/test/regress.t
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-cd `dirname $0`
-
-sh regress.sh
OpenPOWER on IntegriCloud