sh: Sync with FreeBSD:
authorPeter Avalos <pavalos@dragonflybsd.org>
Mon, 18 Mar 2013 00:29:29 +0000 (17:29 -0700)
committerPeter Avalos <pavalos@dragonflybsd.org>
Mon, 18 Mar 2013 00:46:30 +0000 (17:46 -0700)
commitf00eae149c338528630cd778fd4de222713daa11
treeb703072cea8126be237fb9c923c5c0633f1f48a4
parente93419fc7b7c213a5d19b04eb130692e5743bf22
sh: Sync with FreeBSD:

* Expand assignment-like words specially for export/readonly/local.
* Remove unused variables.
* Reset pendingsigs before checking pending traps, not after.
* Track continued jobs (even if not continued by bg or fg).
* Inline waitproc() into its only caller.
* Fix EINTR race condition in "wait" and "set -T" using sigsuspend().
* use setinputfile instead of open/setinputfd.
* Prefer internal nextopt() to libc getopt().
* Use C99 flexible array instead of accessing array beyond bounds.
* Fix two issues when an alias is redefined.
* Detect and flag write errors on stdout in builtins.
* Prefer strsignal() to accessing sys_siglist directly.
* Don't lose $? when backquoted command ends with semicolon or newline.
* Fix crash when parsing '{ } &'.
* Pass $? to command substitution containing compound/multiple commands.
* Simplify cd-hash interaction.
* Remove mkinit's initialization routine.
* Move some stackmarks to fix high memory usage in some loops.
* Show negated commands (!) in jobs output.
* Prefer our character classification functions to <ctype.h>.
* Expand here documents in the current process.
* Do not test for digit_contig in mksyntax.
* Simplify mksyntax
* Fix a crash with the stackmark code.
* If a SIGINT or SIGQUIT interrupts "wait", return status 128+sig.
* When executing a trap, keep exit status along with evalskip.
* Update $FreeBSD$ to include SVN id.

Obtained-from:   FreeBSD
410 files changed:
bin/sh/Makefile
bin/sh/TOUR
bin/sh/alias.c
bin/sh/alias.h
bin/sh/arith.h
bin/sh/arith_yacc.c
bin/sh/arith_yacc.h
bin/sh/arith_yylex.c
bin/sh/bltin/bltin.h
bin/sh/bltin/echo.c
bin/sh/builtins.def
bin/sh/cd.c
bin/sh/cd.h
bin/sh/error.c
bin/sh/error.h
bin/sh/eval.c
bin/sh/eval.h
bin/sh/exec.c
bin/sh/exec.h
bin/sh/expand.c
bin/sh/expand.h
bin/sh/funcs/cmv
bin/sh/funcs/dirs
bin/sh/funcs/login
bin/sh/funcs/newgrp
bin/sh/funcs/popd
bin/sh/funcs/pushd
bin/sh/funcs/suspend
bin/sh/histedit.c
bin/sh/init.h
bin/sh/input.c
bin/sh/input.h
bin/sh/jobs.c
bin/sh/jobs.h
bin/sh/mail.c
bin/sh/mail.h
bin/sh/main.c
bin/sh/main.h
bin/sh/memalloc.c
bin/sh/memalloc.h
bin/sh/miscbltin.c
bin/sh/mkbuiltins
bin/sh/mkinit.c
bin/sh/mknodes.c
bin/sh/mksyntax.c
bin/sh/mktokens
bin/sh/myhistedit.h
bin/sh/mystring.c
bin/sh/mystring.h
bin/sh/nodes.c.pat
bin/sh/nodetypes
bin/sh/options.c
bin/sh/options.h
bin/sh/output.c
bin/sh/output.h
bin/sh/parser.c
bin/sh/parser.h
bin/sh/redir.c
bin/sh/redir.h
bin/sh/sh.1
bin/sh/shell.h
bin/sh/show.c
bin/sh/show.h
bin/sh/trap.c
bin/sh/trap.h
bin/sh/var.c
bin/sh/var.h
tools/regression/bin/sh/Makefile
tools/regression/bin/sh/builtins/alias.0
tools/regression/bin/sh/builtins/alias.1
tools/regression/bin/sh/builtins/alias3.0 [new file with mode: 0644]
tools/regression/bin/sh/builtins/alias3.0.stdout [new file with mode: 0644]
tools/regression/bin/sh/builtins/break1.0
tools/regression/bin/sh/builtins/break2.0
tools/regression/bin/sh/builtins/break3.0
tools/regression/bin/sh/builtins/builtin1.0
tools/regression/bin/sh/builtins/case1.0
tools/regression/bin/sh/builtins/case10.0
tools/regression/bin/sh/builtins/case11.0
tools/regression/bin/sh/builtins/case12.0
tools/regression/bin/sh/builtins/case13.0
tools/regression/bin/sh/builtins/case14.0
tools/regression/bin/sh/builtins/case15.0
tools/regression/bin/sh/builtins/case16.0
tools/regression/bin/sh/builtins/case17.0
tools/regression/bin/sh/builtins/case18.0
tools/regression/bin/sh/builtins/case19.0
tools/regression/bin/sh/builtins/case2.0
tools/regression/bin/sh/builtins/case3.0
tools/regression/bin/sh/builtins/case4.0
tools/regression/bin/sh/builtins/case5.0
tools/regression/bin/sh/builtins/case6.0
tools/regression/bin/sh/builtins/case7.0
tools/regression/bin/sh/builtins/case8.0
tools/regression/bin/sh/builtins/case9.0
tools/regression/bin/sh/builtins/cd1.0
tools/regression/bin/sh/builtins/cd2.0
tools/regression/bin/sh/builtins/cd3.0
tools/regression/bin/sh/builtins/cd4.0
tools/regression/bin/sh/builtins/cd5.0
tools/regression/bin/sh/builtins/cd6.0
tools/regression/bin/sh/builtins/cd7.0
tools/regression/bin/sh/builtins/cd8.0
tools/regression/bin/sh/builtins/command1.0
tools/regression/bin/sh/builtins/command10.0
tools/regression/bin/sh/builtins/command11.0
tools/regression/bin/sh/builtins/command2.0
tools/regression/bin/sh/builtins/command3.0
tools/regression/bin/sh/builtins/command4.0
tools/regression/bin/sh/builtins/command5.0
tools/regression/bin/sh/builtins/command6.0
tools/regression/bin/sh/builtins/command7.0
tools/regression/bin/sh/builtins/command8.0
tools/regression/bin/sh/builtins/command9.0
tools/regression/bin/sh/builtins/dot1.0
tools/regression/bin/sh/builtins/dot2.0
tools/regression/bin/sh/builtins/dot3.0
tools/regression/bin/sh/builtins/dot4.0
tools/regression/bin/sh/builtins/eval1.0
tools/regression/bin/sh/builtins/eval2.0
tools/regression/bin/sh/builtins/eval3.0
tools/regression/bin/sh/builtins/eval4.0
tools/regression/bin/sh/builtins/eval5.0
tools/regression/bin/sh/builtins/exec1.0
tools/regression/bin/sh/builtins/exec2.0
tools/regression/bin/sh/builtins/exit1.0
tools/regression/bin/sh/builtins/exit2.8
tools/regression/bin/sh/builtins/exit3.0
tools/regression/bin/sh/builtins/export1.0
tools/regression/bin/sh/builtins/fc1.0
tools/regression/bin/sh/builtins/fc2.0
tools/regression/bin/sh/builtins/for1.0
tools/regression/bin/sh/builtins/for2.0
tools/regression/bin/sh/builtins/for3.0
tools/regression/bin/sh/builtins/getopts1.0
tools/regression/bin/sh/builtins/getopts2.0
tools/regression/bin/sh/builtins/hash1.0
tools/regression/bin/sh/builtins/hash2.0
tools/regression/bin/sh/builtins/hash3.0
tools/regression/bin/sh/builtins/hash4.0
tools/regression/bin/sh/builtins/lineno.0
tools/regression/bin/sh/builtins/local1.0 [new file with mode: 0644]
tools/regression/bin/sh/builtins/locale1.0
tools/regression/bin/sh/builtins/printf1.0
tools/regression/bin/sh/builtins/printf2.0
tools/regression/bin/sh/builtins/printf3.0
tools/regression/bin/sh/builtins/printf4.0
tools/regression/bin/sh/builtins/read1.0
tools/regression/bin/sh/builtins/read2.0
tools/regression/bin/sh/builtins/read3.0
tools/regression/bin/sh/builtins/read4.0
tools/regression/bin/sh/builtins/read5.0
tools/regression/bin/sh/builtins/read6.0 [new file with mode: 0644]
tools/regression/bin/sh/builtins/return1.0
tools/regression/bin/sh/builtins/return2.1
tools/regression/bin/sh/builtins/return3.1
tools/regression/bin/sh/builtins/return4.0
tools/regression/bin/sh/builtins/return5.0
tools/regression/bin/sh/builtins/return6.4
tools/regression/bin/sh/builtins/return7.4
tools/regression/bin/sh/builtins/set1.0
tools/regression/bin/sh/builtins/set2.0
tools/regression/bin/sh/builtins/trap1.0
tools/regression/bin/sh/builtins/trap10.0
tools/regression/bin/sh/builtins/trap11.0
tools/regression/bin/sh/builtins/trap12.0 [new file with mode: 0644]
tools/regression/bin/sh/builtins/trap2.0
tools/regression/bin/sh/builtins/trap3.0
tools/regression/bin/sh/builtins/trap4.0
tools/regression/bin/sh/builtins/trap5.0
tools/regression/bin/sh/builtins/trap6.0
tools/regression/bin/sh/builtins/trap7.0
tools/regression/bin/sh/builtins/trap8.0
tools/regression/bin/sh/builtins/trap9.0
tools/regression/bin/sh/builtins/type1.0
tools/regression/bin/sh/builtins/type2.0
tools/regression/bin/sh/builtins/unalias.0
tools/regression/bin/sh/builtins/var-assign.0
tools/regression/bin/sh/builtins/var-assign2.0
tools/regression/bin/sh/builtins/wait1.0
tools/regression/bin/sh/builtins/wait2.0
tools/regression/bin/sh/builtins/wait3.0
tools/regression/bin/sh/builtins/wait4.0 [new file with mode: 0644]
tools/regression/bin/sh/builtins/wait5.0 [new file with mode: 0644]
tools/regression/bin/sh/builtins/wait6.0 [new file with mode: 0644]
tools/regression/bin/sh/builtins/wait7.0 [new file with mode: 0644]
tools/regression/bin/sh/errors/assignment-error1.0
tools/regression/bin/sh/errors/assignment-error2.0
tools/regression/bin/sh/errors/backquote-error1.0
tools/regression/bin/sh/errors/backquote-error2.0
tools/regression/bin/sh/errors/bad-binary1.126
tools/regression/bin/sh/errors/bad-keyword1.0
tools/regression/bin/sh/errors/bad-parm-exp1.0
tools/regression/bin/sh/errors/bad-parm-exp2.2
tools/regression/bin/sh/errors/bad-parm-exp3.2
tools/regression/bin/sh/errors/bad-parm-exp4.2
tools/regression/bin/sh/errors/bad-parm-exp5.2
tools/regression/bin/sh/errors/bad-parm-exp6.2
tools/regression/bin/sh/errors/option-error.0
tools/regression/bin/sh/errors/redirection-error.0
tools/regression/bin/sh/errors/redirection-error2.2
tools/regression/bin/sh/errors/redirection-error3.0
tools/regression/bin/sh/errors/redirection-error4.0
tools/regression/bin/sh/errors/redirection-error5.0
tools/regression/bin/sh/errors/redirection-error6.0
tools/regression/bin/sh/errors/redirection-error7.0
tools/regression/bin/sh/errors/write-error1.0 [new file with mode: 0644]
tools/regression/bin/sh/execution/bg1.0
tools/regression/bin/sh/execution/bg2.0
tools/regression/bin/sh/execution/bg3.0
tools/regression/bin/sh/execution/bg4.0
tools/regression/bin/sh/execution/fork1.0
tools/regression/bin/sh/execution/fork2.0
tools/regression/bin/sh/execution/fork3.0
tools/regression/bin/sh/execution/func1.0
tools/regression/bin/sh/execution/func2.0
tools/regression/bin/sh/execution/func3.0
tools/regression/bin/sh/execution/hash1.0
tools/regression/bin/sh/execution/killed1.0
tools/regression/bin/sh/execution/killed2.0
tools/regression/bin/sh/execution/path1.0
tools/regression/bin/sh/execution/redir1.0
tools/regression/bin/sh/execution/redir2.0
tools/regression/bin/sh/execution/redir3.0
tools/regression/bin/sh/execution/redir4.0
tools/regression/bin/sh/execution/redir5.0
tools/regression/bin/sh/execution/redir6.0
tools/regression/bin/sh/execution/redir7.0
tools/regression/bin/sh/execution/set-n1.0
tools/regression/bin/sh/execution/set-n2.0
tools/regression/bin/sh/execution/set-n3.0
tools/regression/bin/sh/execution/set-n4.0
tools/regression/bin/sh/execution/set-x1.0
tools/regression/bin/sh/execution/set-x2.0
tools/regression/bin/sh/execution/set-x3.0
tools/regression/bin/sh/execution/shellproc1.0
tools/regression/bin/sh/execution/subshell1.0 [new file with mode: 0644]
tools/regression/bin/sh/execution/subshell1.0.stdout [new file with mode: 0644]
tools/regression/bin/sh/execution/subshell2.0 [new file with mode: 0644]
tools/regression/bin/sh/execution/subshell3.0 [new file with mode: 0644]
tools/regression/bin/sh/execution/subshell4.0 [new file with mode: 0644]
tools/regression/bin/sh/execution/unknown1.0
tools/regression/bin/sh/execution/var-assign1.0
tools/regression/bin/sh/expansion/arith1.0
tools/regression/bin/sh/expansion/arith10.0
tools/regression/bin/sh/expansion/arith11.0
tools/regression/bin/sh/expansion/arith12.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/arith2.0
tools/regression/bin/sh/expansion/arith3.0
tools/regression/bin/sh/expansion/arith4.0
tools/regression/bin/sh/expansion/arith5.0
tools/regression/bin/sh/expansion/arith6.0
tools/regression/bin/sh/expansion/arith7.0
tools/regression/bin/sh/expansion/arith8.0
tools/regression/bin/sh/expansion/arith9.0
tools/regression/bin/sh/expansion/assign1.0
tools/regression/bin/sh/expansion/cmdsubst1.0
tools/regression/bin/sh/expansion/cmdsubst10.0
tools/regression/bin/sh/expansion/cmdsubst11.0
tools/regression/bin/sh/expansion/cmdsubst12.0
tools/regression/bin/sh/expansion/cmdsubst13.0
tools/regression/bin/sh/expansion/cmdsubst14.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/cmdsubst15.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/cmdsubst16.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/cmdsubst17.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/cmdsubst2.0
tools/regression/bin/sh/expansion/cmdsubst3.0
tools/regression/bin/sh/expansion/cmdsubst4.0
tools/regression/bin/sh/expansion/cmdsubst5.0
tools/regression/bin/sh/expansion/cmdsubst6.0
tools/regression/bin/sh/expansion/cmdsubst7.0
tools/regression/bin/sh/expansion/cmdsubst8.0
tools/regression/bin/sh/expansion/cmdsubst9.0
tools/regression/bin/sh/expansion/export1.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/export2.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/export3.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/heredoc1.0
tools/regression/bin/sh/expansion/heredoc2.0
tools/regression/bin/sh/expansion/ifs1.0
tools/regression/bin/sh/expansion/ifs2.0
tools/regression/bin/sh/expansion/ifs3.0
tools/regression/bin/sh/expansion/ifs4.0
tools/regression/bin/sh/expansion/length1.0
tools/regression/bin/sh/expansion/length2.0
tools/regression/bin/sh/expansion/length3.0
tools/regression/bin/sh/expansion/length4.0
tools/regression/bin/sh/expansion/length5.0
tools/regression/bin/sh/expansion/length6.0
tools/regression/bin/sh/expansion/length7.0
tools/regression/bin/sh/expansion/length8.0
tools/regression/bin/sh/expansion/local1.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/local2.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/pathname1.0
tools/regression/bin/sh/expansion/pathname2.0
tools/regression/bin/sh/expansion/pathname3.0
tools/regression/bin/sh/expansion/pathname4.0
tools/regression/bin/sh/expansion/plus-minus1.0
tools/regression/bin/sh/expansion/plus-minus2.0
tools/regression/bin/sh/expansion/plus-minus3.0
tools/regression/bin/sh/expansion/plus-minus4.0
tools/regression/bin/sh/expansion/plus-minus5.0
tools/regression/bin/sh/expansion/plus-minus6.0
tools/regression/bin/sh/expansion/plus-minus7.0
tools/regression/bin/sh/expansion/plus-minus8.0
tools/regression/bin/sh/expansion/question1.0
tools/regression/bin/sh/expansion/readonly1.0 [new file with mode: 0644]
tools/regression/bin/sh/expansion/set-u1.0
tools/regression/bin/sh/expansion/set-u2.0
tools/regression/bin/sh/expansion/set-u3.0
tools/regression/bin/sh/expansion/tilde1.0
tools/regression/bin/sh/expansion/tilde2.0
tools/regression/bin/sh/expansion/trim1.0
tools/regression/bin/sh/expansion/trim2.0
tools/regression/bin/sh/expansion/trim3.0
tools/regression/bin/sh/expansion/trim4.0
tools/regression/bin/sh/expansion/trim5.0
tools/regression/bin/sh/expansion/trim6.0
tools/regression/bin/sh/expansion/trim7.0
tools/regression/bin/sh/expansion/trim8.0
tools/regression/bin/sh/parameters/env1.0
tools/regression/bin/sh/parameters/exitstatus1.0
tools/regression/bin/sh/parameters/mail1.0
tools/regression/bin/sh/parameters/mail2.0
tools/regression/bin/sh/parameters/optind1.0
tools/regression/bin/sh/parameters/positional1.0
tools/regression/bin/sh/parameters/positional2.0
tools/regression/bin/sh/parameters/pwd1.0
tools/regression/bin/sh/parameters/pwd2.0
tools/regression/bin/sh/parser/alias1.0
tools/regression/bin/sh/parser/alias10.0 [new file with mode: 0644]
tools/regression/bin/sh/parser/alias2.0
tools/regression/bin/sh/parser/alias3.0
tools/regression/bin/sh/parser/alias4.0
tools/regression/bin/sh/parser/alias5.0
tools/regression/bin/sh/parser/alias6.0
tools/regression/bin/sh/parser/alias7.0 [new file with mode: 0644]
tools/regression/bin/sh/parser/alias8.0 [new file with mode: 0644]
tools/regression/bin/sh/parser/alias9.0 [new file with mode: 0644]
tools/regression/bin/sh/parser/and-pipe-not.0
tools/regression/bin/sh/parser/case1.0
tools/regression/bin/sh/parser/case2.0
tools/regression/bin/sh/parser/dollar-quote1.0
tools/regression/bin/sh/parser/dollar-quote10.0
tools/regression/bin/sh/parser/dollar-quote11.0
tools/regression/bin/sh/parser/dollar-quote2.0
tools/regression/bin/sh/parser/dollar-quote3.0
tools/regression/bin/sh/parser/dollar-quote4.0
tools/regression/bin/sh/parser/dollar-quote5.0
tools/regression/bin/sh/parser/dollar-quote6.0
tools/regression/bin/sh/parser/dollar-quote7.0
tools/regression/bin/sh/parser/dollar-quote8.0
tools/regression/bin/sh/parser/dollar-quote9.0
tools/regression/bin/sh/parser/empty-braces1.0 [new file with mode: 0644]
tools/regression/bin/sh/parser/for1.0
tools/regression/bin/sh/parser/for2.0
tools/regression/bin/sh/parser/func1.0
tools/regression/bin/sh/parser/func2.0
tools/regression/bin/sh/parser/func3.0
tools/regression/bin/sh/parser/heredoc1.0
tools/regression/bin/sh/parser/heredoc10.0
tools/regression/bin/sh/parser/heredoc11.0
tools/regression/bin/sh/parser/heredoc2.0
tools/regression/bin/sh/parser/heredoc3.0
tools/regression/bin/sh/parser/heredoc4.0
tools/regression/bin/sh/parser/heredoc5.0
tools/regression/bin/sh/parser/heredoc6.0
tools/regression/bin/sh/parser/heredoc7.0
tools/regression/bin/sh/parser/heredoc8.0
tools/regression/bin/sh/parser/heredoc9.0
tools/regression/bin/sh/parser/no-space1.0
tools/regression/bin/sh/parser/no-space2.0
tools/regression/bin/sh/parser/only-redir1.0
tools/regression/bin/sh/parser/pipe-not1.0
tools/regression/bin/sh/regress.sh
tools/regression/bin/sh/regress.t
tools/regression/bin/sh/set-e/and1.0
tools/regression/bin/sh/set-e/and2.1
tools/regression/bin/sh/set-e/and3.0
tools/regression/bin/sh/set-e/and4.0
tools/regression/bin/sh/set-e/background1.0
tools/regression/bin/sh/set-e/cmd1.0
tools/regression/bin/sh/set-e/cmd2.1
tools/regression/bin/sh/set-e/elif1.0
tools/regression/bin/sh/set-e/elif2.0
tools/regression/bin/sh/set-e/eval1.0
tools/regression/bin/sh/set-e/eval2.1
tools/regression/bin/sh/set-e/for1.0
tools/regression/bin/sh/set-e/func1.0
tools/regression/bin/sh/set-e/func2.1
tools/regression/bin/sh/set-e/if1.0
tools/regression/bin/sh/set-e/if2.0
tools/regression/bin/sh/set-e/if3.0
tools/regression/bin/sh/set-e/not1.0
tools/regression/bin/sh/set-e/not2.0
tools/regression/bin/sh/set-e/or1.0
tools/regression/bin/sh/set-e/or2.0
tools/regression/bin/sh/set-e/or3.1
tools/regression/bin/sh/set-e/pipe1.1
tools/regression/bin/sh/set-e/pipe2.0
tools/regression/bin/sh/set-e/return1.0
tools/regression/bin/sh/set-e/semi1.1
tools/regression/bin/sh/set-e/semi2.1
tools/regression/bin/sh/set-e/subshell1.0
tools/regression/bin/sh/set-e/subshell2.1
tools/regression/bin/sh/set-e/until1.0
tools/regression/bin/sh/set-e/until2.0
tools/regression/bin/sh/set-e/until3.0
tools/regression/bin/sh/set-e/while1.0
tools/regression/bin/sh/set-e/while2.0
tools/regression/bin/sh/set-e/while3.0