commit bash-20090709 snapshot

This commit is contained in:
Chet Ramey
2011-12-08 20:12:19 -05:00
parent 3a372c75fb
commit 6669f0e538
5 changed files with 93 additions and 2 deletions
+8
View File
@@ -8197,3 +8197,11 @@ builtins/command.def
verbose-handling section, so command -v and command -V honor
the PATH set by command -p. Bug and fix from
ohki@gssm.otsuka.tsukuba.ac.jp
7/9
---
subst.c
- change brace_expand_word_list to defer brace expansion on compound
array assignments that are arguments to builtins like `declare',
deferring the expansion until the assignment statement is processed.
Fixes inconsistency reported by agriffis@n01se.net
+49
View File
@@ -8148,3 +8148,52 @@ findcmd.c
- use eaccess(2) if available in file_status to take other file
access mechanisms such as ACLs into account. Patch supplied
by werner@suse.de
6/12
----
xmalloc.c
- also calculate lowest brk() value the first time xmalloc/xrealloc
(and their sh_ counterparts) are called
- error messages consolidated into a single function (allocerr/
sh_allocerr) to avoid string duplication
6/16
----
variables.c
- changes to allow variables.c to be compiled if ALIAS is not defined.
Bug and fix from John Gatewood Ham <uraphalinuxserver@gmail.com>
lib/sh/getcwd.c
- fix so systems defining BROKEN_DIRENT_D_INO have the necessary
defines. Fix from Jay Krell <jay.krell@cornell.edu>
configure.in
- add -D_ALL_SOURCE to interix CFLAGS for struct timezone definition.
Bug and fix from John Gatewood Ham <uraphalinuxserver@gmail.com>
6/29
----
variables.c
- change initialize_shell_variables to add environment variables with
invalid names to the variables hash table, but marking them as
invisible and imported
- new function, export_environment_candidate. Used when creating the
export environment for commands to include variables with invalid
names inherited from the initial environment. Apparently this
behavior is widespread
- change make_var_export_array to use export_environment_candidate
rather than visible_and_exported to test variables for inclusion
in the export environment
7/1
---
builtins/read.def
- fix a memory leak where the number of fields is not the same as
the number of variables passed to `read'. Bug report from
werner@suse.de
builtins/command.def
- move section of code that sets PATH from -p option before the
verbose-handling section, so command -v and command -V honor
the PATH set by command -p. Bug and fix from
ohki@gssm.otsuka.tsukuba.ac.jp
+1
View File
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
main(c, v)
int c;
+7
View File
@@ -8579,6 +8579,13 @@ brace_expand_word_list (tlist, eflags)
{
next = tlist->next;
if ((tlist->word->flags & (W_COMPASSIGN|W_ASSIGNARG)) == (W_COMPASSIGN|W_ASSIGNARG))
{
/*itrace("brace_expand_word_list: %s: W_COMPASSIGN|W_ASSIGNARG", tlist->word->word);*/
PREPEND_LIST (tlist, output_list);
continue;
}
/* Only do brace expansion if the word has a brace character. If
not, just add the word list element to BRACES and continue. In
the common case, at least when running shell scripts, this will
+28 -2
View File
@@ -5972,7 +5972,6 @@ pat_subst (string, pat, rep, mflags)
mtype = mflags & MATCH_TYPEMASK;
itrace("pat_subst: string = `%s' pat = `%s' rep = `%s'", string, pat, rep);
/* Special cases:
* 1. A null pattern with mtype == MATCH_BEG means to prefix STRING
* with REP and return the result.
@@ -6794,7 +6793,7 @@ parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_doll
return &expand_wdesc_error;
case RBRACE:
if (var_is_set == 0 && unbound_vars_is_error)
if (var_is_set == 0 && unbound_vars_is_error && ((name[0] != '@' && name[0] != '*') || name[1]))
{
last_command_exit_value = EXECUTION_FAILURE;
err_unboundvar (name);
@@ -7017,6 +7016,15 @@ param_expand (string, sindex, quoted, expanded_something,
case '*': /* `$*' */
list = list_rest_of_args ();
#if 0
/* According to austin-group posix proposal by Geoff Clare in
<20090505091501.GA10097@squonk.masqnet> of 5 May 2009:
"The shell shall write a message to standard error and
immediately exit when it tries to expand an unset parameter
other than the '@' and '*' special parameters."
*/
if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
{
uerror[0] = '$';
@@ -7026,6 +7034,7 @@ param_expand (string, sindex, quoted, expanded_something,
err_unboundvar (uerror);
return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
}
#endif
/* If there are no command-line arguments, this should just
disappear if there are other characters in the expansion,
@@ -7079,6 +7088,15 @@ param_expand (string, sindex, quoted, expanded_something,
case '@': /* `$@' */
list = list_rest_of_args ();
#if 0
/* According to austin-group posix proposal by Geoff Clare in
<20090505091501.GA10097@squonk.masqnet> of 5 May 2009:
"The shell shall write a message to standard error and
immediately exit when it tries to expand an unset parameter
other than the '@' and '*' special parameters."
*/
if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
{
uerror[0] = '$';
@@ -7088,6 +7106,7 @@ param_expand (string, sindex, quoted, expanded_something,
err_unboundvar (uerror);
return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
}
#endif
/* We want to flag the fact that we saw this. We can't turn
off quoting entirely, because other characters in the
@@ -8560,6 +8579,13 @@ brace_expand_word_list (tlist, eflags)
{
next = tlist->next;
if ((tlist->word->flags & (W_COMPASSIGN|W_ASSIGNARG)) == (W_COMPASSIGN|W_ASSIGNARG))
{
itrace("brace_expand_word_list: %s: W_COMPASSIGN|W_ASSIGNARG", tlist->word->word);
PREPEND_LIST (tlist, output_list);
continue;
}
/* Only do brace expansion if the word has a brace character. If
not, just add the word list element to BRACES and continue. In
the common case, at least when running shell scripts, this will