]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
commit bash-20090709 snapshot
authorChet Ramey <chet.ramey@case.edu>
Fri, 9 Dec 2011 01:12:19 +0000 (20:12 -0500)
committerChet Ramey <chet.ramey@case.edu>
Fri, 9 Dec 2011 01:12:19 +0000 (20:12 -0500)
CWRU/CWRU.chlog
CWRU/CWRU.chlog~
builtins/psize-posix.c
subst.c
subst.c~

index 9b75bc0f8e9ad632d1c30d6931c1a639e592a7cf..a299529857c779073e461fa7f6ff479d87ec106b 100644 (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
index 02c016245738a9f598cd6f1b951746de209f96cf..9b75bc0f8e9ad632d1c30d6931c1a639e592a7cf 100644 (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
index 8663a44a4f83da0fac850dc078e357b73fef5a5c..e5840e43724bc58b30dcbbe97ea409187070e98c 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <stdio.h>
 #include <unistd.h>
+#include <stdlib.h>
 
 main(c, v)
 int    c;
diff --git a/subst.c b/subst.c
index ea7cf3c6a4d6b9cc298f4e0503cfe9932460047f..f628c0b83d7a06413f0eb89ec6a5fc92f52239dd 100644 (file)
--- a/subst.c
+++ b/subst.c
@@ -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
index 65ebf2fe63c99f1f70502f15354a1225d9dcc2fc..6e54a63c435d20f109dd525800ec70c1e98f5cea 100644 (file)
--- a/subst.c~
+++ b/subst.c~
@@ -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