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
- 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
#include <stdio.h>
#include <unistd.h>
+#include <stdlib.h>
main(c, v)
int c;
{
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
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.
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);
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] = '$';
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,
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] = '$';
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
{
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