freebsd-dev/bin/sh
Jilles Tjoelker 8cf06f5eee sh: Fix various things about expansions:
* remove the backslash from \} inside double quotes inside +-=?
  substitutions, e.g. "${$+\}a}"
* maintain separate double-quote state for ${v#...} and ${v%...};
  single and double quotes are special inside, even in a double-quoted
  string or here document
* keep track of correct order of substitutions and arithmetic

This is different from dash's approach, which does not track individual
double quotes in the parser, trying to fix this up during expansion.
This treats single quotes inside "${v#...}" incorrectly, however.

This is similar to NetBSD's approach (as submitted in PR bin/57554), but
recognizes the difference between +-=? and #% substitutions hinted at in
POSIX and is more refined for arithmetic expansion and here documents.

PR:		bin/57554
Exp-run done by:	erwin (with some other sh(1) changes)
2010-04-03 20:55:56 +00:00
..
bltin Declare echocmd() and testcmd(). 2005-08-13 15:04:30 +00:00
funcs /*- or .\"- or #- to begin license clauses. 2005-01-10 08:39:26 +00:00
alias.c sh: Constify various strings. 2009-12-24 18:41:14 +00:00
alias.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
arith_lex.l sh: Fix memory leak when using a variable in arithmetic like $((x)). 2009-11-05 20:44:39 +00:00
arith.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
arith.y sh: arith: Return only 0 and 1 from && and ||. 2009-12-30 15:59:40 +00:00
builtins.def Use -s to flag POSIX's "special built-in" utilities in builtins.def. Add a 2006-04-02 18:43:33 +00:00
cd.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
cd.h Remove clause 3 from the UCB licenses. 2004-04-06 20:06:54 +00:00
error.c sh: Fix some bugs with backquoted builtins: 2010-01-01 18:17:46 +00:00
error.h sh: Add some __dead2 to indicate functions that do not return. 2009-12-24 20:55:14 +00:00
eval.c sh: Do not abort on a redirection error on a compound command. 2010-03-14 14:24:35 +00:00
eval.h sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
exec.c sh: Improve the command builtin: 2010-03-06 16:57:53 +00:00
exec.h sh: Improve the command builtin: 2010-03-06 16:57:53 +00:00
expand.c sh: Fix some bugs with backquoted builtins: 2010-01-01 18:17:46 +00:00
expand.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
histedit.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
init.h Remove clause 3 from the UCB licenses. 2004-04-06 20:06:54 +00:00
input.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
input.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
jobs.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
jobs.h Add the POSIX option -p to the jobs builtin command. It prints the PID of the 2006-10-07 16:51:16 +00:00
mail.c sh: Constify various strings. 2009-12-24 18:41:14 +00:00
mail.h Remove clause 3 from the UCB licenses. 2004-04-06 20:06:54 +00:00
main.c sh: Do not stat() $MAIL/$MAILPATH in non-interactive shells. 2010-02-06 22:57:24 +00:00
main.h sh: Do not run callers' exception handlers in subshells. 2009-12-25 20:21:35 +00:00
Makefile Reduce the WARNS level to avoid a compiler warning about a variable 2007-11-18 01:53:07 +00:00
memalloc.c sh: Constify various strings. 2009-12-24 18:41:14 +00:00
memalloc.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
miscbltin.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
mkbuiltins sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
mkinit.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
mknodes.c sh: Fix crash with empty functions (f() { }) introduced in r196483 2009-08-28 22:41:25 +00:00
mksyntax.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
mktokens /*- or .\"- or #- to begin license clauses. 2005-01-10 08:39:26 +00:00
myhistedit.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
mystring.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
mystring.h Remove clause 3 from the UCB licenses. 2004-04-06 20:06:54 +00:00
nodes.c.pat sh: Fix crash with empty functions (f() { }) introduced in r196483 2009-08-28 22:41:25 +00:00
nodetypes /*- or .\"- or #- to begin license clauses. 2005-01-10 08:39:26 +00:00
options.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
options.h sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
output.c sh: Constify various strings. 2009-12-24 18:41:14 +00:00
output.h sh: Fix some bugs with backquoted builtins: 2010-01-01 18:17:46 +00:00
parser.c sh: Fix various things about expansions: 2010-04-03 20:55:56 +00:00
parser.h sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
redir.c Fix some cases where file descriptors from redirections leak to programs. 2009-11-29 22:33:59 +00:00
redir.h Remove clause 3 from the UCB licenses. 2004-04-06 20:06:54 +00:00
sh.1 sh: Improve the command builtin: 2010-03-06 16:57:53 +00:00
shell.h - Fix bugs where the value of arithmetic expansion$((...)) was trucated 2008-04-27 20:46:45 +00:00
show.c sh: Constify various strings. 2009-12-24 18:41:14 +00:00
show.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
TOUR Correct assorted grammos and typos. 2006-04-16 11:54:01 +00:00
trap.c trap: do not consider a bad signal name a fatal error. 2009-11-21 20:44:34 +00:00
trap.h sh: Add some __dead2 to indicate functions that do not return. 2009-12-24 20:55:14 +00:00
var.c sh: Do not stat() $MAIL/$MAILPATH in non-interactive shells. 2010-02-06 22:57:24 +00:00
var.h sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00