summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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