]> git.pld-linux.org Git - packages/bash.git/commitdiff
- new
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Tue, 10 Mar 2009 07:54:41 +0000 (07:54 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    bash40-001 -> 1.1
    bash40-002 -> 1.1
    bash40-003 -> 1.1
    bash40-004 -> 1.1
    bash40-005 -> 1.1
    bash40-006 -> 1.1
    bash40-007 -> 1.1
    bash40-008 -> 1.1
    bash40-009 -> 1.1
    bash40-010 -> 1.1

bash40-001 [new file with mode: 0644]
bash40-002 [new file with mode: 0644]
bash40-003 [new file with mode: 0644]
bash40-004 [new file with mode: 0644]
bash40-005 [new file with mode: 0644]
bash40-006 [new file with mode: 0644]
bash40-007 [new file with mode: 0644]
bash40-008 [new file with mode: 0644]
bash40-009 [new file with mode: 0644]
bash40-010 [new file with mode: 0644]

diff --git a/bash40-001 b/bash40-001
new file mode 100644 (file)
index 0000000..5c6bb34
--- /dev/null
@@ -0,0 +1,162 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-001
+
+Bug-Reported-by:       Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID:      <200902211821.42188.vapier@gentoo.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00147.html
+
+Bug-Description:
+
+Bash has problems parsing certain constructs inside Posix-style $(...)
+command substitutions, mostly with backslash-quoting and reserved word
+recognition.    This is an issue because the contents are parsed at the
+time the word containing the command substitution is read.
+
+Patch:
+
+*** ../bash-4.0/parse.y        2009-01-08 08:29:12.000000000 -0500
+--- parse.y    2009-03-06 20:32:35.000000000 -0500
+***************
+*** 2928,2931 ****
+--- 2932,2936 ----
+  #define LEX_HEREDELIM        0x100           /* reading here-doc delimiter */
+  #define LEX_STRIPDOC 0x200           /* <<- strip tabs from here doc delim */
++ #define LEX_INWORD   0x400
+  
+  #define COMSUB_META(ch)              ((ch) == ';' || (ch) == '&' || (ch) == '|')
+***************
+*** 3180,3184 ****
+       int *lenp, flags;
+  {
+!   int count, ch, peekc, tflags, lex_rwlen, lex_firstind;
+    int nestlen, ttranslen, start_lineno;
+    char *ret, *nestret, *ttrans, *heredelim;
+--- 3188,3192 ----
+       int *lenp, flags;
+  {
+!   int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind;
+    int nestlen, ttranslen, start_lineno;
+    char *ret, *nestret, *ttrans, *heredelim;
+***************
+*** 3201,3205 ****
+  
+    start_lineno = line_number;
+!   lex_rwlen = 0;
+  
+    heredelim = 0;
+--- 3209,3213 ----
+  
+    start_lineno = line_number;
+!   lex_rwlen = lex_wlen = 0;
+  
+    heredelim = 0;
+***************
+*** 3268,3271 ****
+--- 3276,3319 ----
+       }
+  
++       if (tflags & LEX_PASSNEXT)             /* last char was backslash */
++      {
++ /*itrace("parse_comsub:%d: lex_passnext -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/
++        tflags &= ~LEX_PASSNEXT;
++        if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
++          {
++            if (retind > 0)
++              retind--;       /* swallow previously-added backslash */
++            continue;
++          }
++ 
++        RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
++        if MBTEST(ch == CTLESC || ch == CTLNUL)
++          ret[retind++] = CTLESC;
++        ret[retind++] = ch;
++        continue;
++      }
++ 
++       /* If this is a shell break character, we are not in a word.  If not,
++       we either start or continue a word. */
++       if MBTEST(shellbreak (ch))
++      {
++        tflags &= ~LEX_INWORD;
++ /*itrace("parse_comsub:%d: lex_inword -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/
++      }
++       else
++      {
++        if (tflags & LEX_INWORD)
++          {
++            lex_wlen++;
++ /*itrace("parse_comsub:%d: lex_inword == 1 ch = `%c' lex_wlen = %d (%d)", line_number, ch, lex_wlen, __LINE__);*/
++          }         
++        else
++          {
++ /*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/
++            tflags |= LEX_INWORD;
++            lex_wlen = 0;
++          }
++      }
++ 
+        /* Skip whitespace */
+        if MBTEST(shellblank (ch) && lex_rwlen == 0)
+***************
+*** 3400,3428 ****
+           }
+         else
+!          ch = peekc;         /* fall through and continue XXX - this skips comments if peekc == '#' */
+       }
+!       /* Not exactly right yet, should handle shell metacharacters, too.  If
+!       any changes are made to this test, make analogous changes to subst.c:
+!       extract_delimited_string(). */
+!       else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || shellblank (ret[retind - 1])))
+       tflags |= LEX_INCOMMENT;
+  
+!       if (tflags & LEX_PASSNEXT)             /* last char was backslash */
+!      {
+!        tflags &= ~LEX_PASSNEXT;
+!        if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
+!          {
+!            if (retind > 0)
+!              retind--;       /* swallow previously-added backslash */
+!            continue;
+!          }
+! 
+!        RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
+!        if MBTEST(ch == CTLESC || ch == CTLNUL)
+!          ret[retind++] = CTLESC;
+!        ret[retind++] = ch;
+!        continue;
+!      }
+!       else if MBTEST(ch == CTLESC || ch == CTLNUL)   /* special shell escapes */
+       {
+         RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
+--- 3442,3454 ----
+           }
+         else
+!          ch = peekc;         /* fall through and continue XXX */
+       }
+!       else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0)))
+! {
+! /*itrace("parse_comsub:%d: lex_incomment -> 1 (%d)", line_number, __LINE__);*/
+       tflags |= LEX_INCOMMENT;
++ }
+  
+!       if MBTEST(ch == CTLESC || ch == CTLNUL)        /* special shell escapes */
+       {
+         RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 0
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash40-002 b/bash40-002
new file mode 100644 (file)
index 0000000..18bd25e
--- /dev/null
@@ -0,0 +1,43 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-002
+
+Bug-Reported-by:       phil@Arcturus.universe
+Bug-Reference-ID:      <20090221143709.13878.qmail@Arcturus.universe>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00142.html
+
+Bug-Description:
+
+A line inadvertenly omitted from a submitted patch results in core dumps
+when attempting filename completion while using the bash-completion
+package.
+
+Patch:
+
+*** ../bash-4.0/pcomplete.c    2009-02-01 17:12:31.000000000 -0500
+--- pcomplete.c        2009-02-22 17:08:25.000000000 -0500
+***************
+*** 1033,1036 ****
+--- 1033,1037 ----
+  
+    pps = &ps;
++   save_parser_state (pps);
+    begin_unwind_frame ("gen-shell-function-matches");
+    add_unwind_protect (restore_parser_state, (char *)pps);
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash40-003 b/bash40-003
new file mode 100644 (file)
index 0000000..cc941d5
--- /dev/null
@@ -0,0 +1,70 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-003
+
+Bug-Reported-by:       Bernd Eggink <monoped@sudrala.de>
+Bug-Reference-ID:      <49A323F5.60503@sudrala.de>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00177.html
+
+Bug-Description:
+
+Under certain circumstances, constructs containing command substitutions
+prevent PS1 from being re-evaluated and updated before being displayed.
+
+Patch:
+
+*** ../bash-4.0/parse.y        2009-01-08 08:29:12.000000000 -0500
+--- parse.y    2009-02-25 15:58:25.000000000 -0500
+***************
+*** 1616,1623 ****
+    int *ret;
+  
+!   ret = (int *)xmalloc (3 * sizeof (int));
+    ret[0] = last_read_token;
+    ret[1] = token_before_that;
+    ret[2] = two_tokens_ago;
+    return ret;
+  }
+--- 1616,1624 ----
+    int *ret;
+  
+!   ret = (int *)xmalloc (4 * sizeof (int));
+    ret[0] = last_read_token;
+    ret[1] = token_before_that;
+    ret[2] = two_tokens_ago;
++   ret[3] = current_token;
+    return ret;
+  }
+***************
+*** 1632,1635 ****
+--- 1633,1637 ----
+    token_before_that = ts[1];
+    two_tokens_ago = ts[2];
++   current_token = ts[3];
+  }
+  
+***************
+*** 2669,2672 ****
+--- 2671,2675 ----
+    word_desc_to_read = (WORD_DESC *)NULL;
+  
++   current_token = '\n';              /* XXX */
+    last_read_token = '\n';
+    token_to_read = '\n';
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash40-004 b/bash40-004
new file mode 100644 (file)
index 0000000..6ab6c4e
--- /dev/null
@@ -0,0 +1,47 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-004
+
+Bug-Reported-by:       Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID:      <200902231720.30519.vapier@gentoo.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00176.html
+
+Bug-Description:
+
+In some cases, enabling the `checkjobs' shell option will cause the shell
+to core dump when executing the `exit' builtin.
+
+Patch:
+
+*** ../bash-4.0/builtins/exit.def      2009-01-04 14:32:22.000000000 -0500
+--- builtins/exit.def  2009-02-23 22:56:58.000000000 -0500
+***************
+*** 114,118 ****
+       if (jobs[i] && STOPPED (i))
+         stopmsg = JSTOPPED;
+!      else if (check_jobs_at_exit && stopmsg == 0 && RUNNING (i))
+         stopmsg = JRUNNING;
+  
+--- 114,118 ----
+       if (jobs[i] && STOPPED (i))
+         stopmsg = JSTOPPED;
+!      else if (check_jobs_at_exit && stopmsg == 0 && jobs[i] && RUNNING (i))
+         stopmsg = JRUNNING;
+  
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash40-005 b/bash40-005
new file mode 100644 (file)
index 0000000..ccfde66
--- /dev/null
@@ -0,0 +1,63 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-005
+
+Bug-Reported-by:       Pierre Gaston <pierre.gaston@gmail.com>
+Bug-Reference-ID:      <c440c9800902242338n69f594a4nd66b8748def9cf18@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00206.html
+
+Bug-Description:
+
+The `declare' builtin dumped core when attempting to assign associative
+array indices containing some special characters, even when they were
+quoted before being expanded.
+
+Patch:
+
+*** ../bash-4.0/builtins/declare.def   2009-01-04 14:32:22.000000000 -0500
+--- builtins/declare.def       2009-02-26 11:40:16.000000000 -0500
+***************
+*** 296,299 ****
+--- 296,306 ----
+        if (t = strchr (name, '['))    /* ] */
+       {
++        /* If offset != 0 we have already validated any array reference */
++        if (offset == 0 && valid_array_reference (name) == 0)
++          {
++            sh_invalidid (name);
++            assign_error++;
++            NEXT_VARIABLE ();
++          }
+         subscript_start = t;
+         *t = '\0';
+***************
+*** 485,489 ****
+         /* declare -a name[[n]] or declare name[n] makes name an indexed
+            array variable. */
+!        else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0)
+           var = convert_var_to_array (var);
+  #endif /* ARRAY_VARS */
+--- 492,496 ----
+         /* declare -a name[[n]] or declare name[n] makes name an indexed
+            array variable. */
+!        else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0)
+           var = convert_var_to_array (var);
+  #endif /* ARRAY_VARS */
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
+
diff --git a/bash40-006 b/bash40-006
new file mode 100644 (file)
index 0000000..3d044c7
--- /dev/null
@@ -0,0 +1,43 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-006
+
+Bug-Reported-by:       Evgeniy Zhemchugov <jini.zh@gmail.com>
+Bug-Reference-ID:      <e7bc8dd30902241016m8bd543ej775717d007df975b@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00202.html
+
+Bug-Description:
+
+Bash did not parse pipelines using the |& construct correctly if the
+pipeline elements were not simple commands.
+
+Patch:
+
+*** ../bash-4.0/parse.y        2009-01-08 08:29:12.000000000 -0500
+--- parse.y    2009-02-25 17:25:56.000000000 -0500
+***************
+*** 4478,4481 ****
+--- 4478,4482 ----
+      case AND_AND:
+      case BANG:
++     case BAR_AND:
+      case DO:
+      case DONE:
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
+
diff --git a/bash40-007 b/bash40-007
new file mode 100644 (file)
index 0000000..29071e1
--- /dev/null
@@ -0,0 +1,263 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-007
+
+Bug-Reported-by:       AnMaster <anmaster@tele2.se>
+Bug-Reference-ID:      <49A41C18.80807@tele2.se>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00188.html
+
+Bug-Description:
+
+Bash had a number of problems parsing associative array subscripts containing
+special characters.  The subscripts are supposed to be read as if they are
+enclosed between double quotes.
+
+Patch:
+
+*** ../bash-4.0/parse.y        2009-01-08 08:29:12.000000000 -0500
+--- parse.y    2009-02-25 17:25:56.000000000 -0500
+***************
+*** 2919,2922 ****
+--- 2919,2923 ----
+  #define P_COMMAND    0x08    /* parsing a command, so look for comments */
+  #define P_BACKQUOTE  0x10    /* parsing a backquoted command substitution */
++ #define P_ARRAYSUB   0x20    /* parsing a [...] array subscript for assignment */
+  
+  /* Lexical state while parsing a grouping construct or $(...). */
+***************
+*** 3134,3137 ****
+--- 3134,3139 ----
+             FREE (nestret);
+           }
++        else if ((flags & P_ARRAYSUB) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '['))      /* ) } ] */
++          goto parse_dollar_word;
+       }
+        /* Parse an old-style command substitution within double quotes as a
+***************
+*** 3150,3153 ****
+--- 3150,3154 ----
+       /* check for $(), $[], or ${} inside quoted string. */
+       {
++ parse_dollar_word:
+         if (open == ch)       /* undo previous increment */
+           count--;
+***************
+*** 4277,4281 ****
+                     (token_index == 0 && (parser_state&PST_COMPASSIGN))))
+          {
+!        ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0);
+         if (ttok == &matched_pair_error)
+           return -1;          /* Bail immediately. */
+--- 4277,4281 ----
+                     (token_index == 0 && (parser_state&PST_COMPASSIGN))))
+          {
+!        ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARRAYSUB);
+         if (ttok == &matched_pair_error)
+           return -1;          /* Bail immediately. */
+*** ../bash-4.0/arrayfunc.c    2009-01-04 14:32:21.000000000 -0500
+--- arrayfunc.c        2009-02-25 07:58:54.000000000 -0500
+***************
+*** 605,666 ****
+  }
+  
+! /* This function assumes s[i] == '['; returns with s[ret] == ']' if
+!    an array subscript is correctly parsed. */
+! int
+! skipsubscript (s, i)
+!      const char *s;
+!      int i;
+! {
+!   int count, c;
+! #if defined (HANDLE_MULTIBYTE)
+!   mbstate_t state, state_bak;
+!   size_t slength, mblength;
+! #endif
+! 
+! #if defined (HANDLE_MULTIBYTE)
+!   memset (&state, '\0', sizeof (mbstate_t));
+!   slength = strlen (s + i);
+! #endif
+!   
+!   count = 1;
+!   while (count)
+!     {
+!       /* Advance one (possibly multibyte) character in S starting at I. */
+! #if defined (HANDLE_MULTIBYTE)
+!       if (MB_CUR_MAX > 1)
+!      {
+!        state_bak = state;
+!        mblength = mbrlen (s + i, slength, &state);
+! 
+!        if (MB_INVALIDCH (mblength))
+!          {
+!            state = state_bak;
+!            i++;
+!            slength--;
+!          }
+!        else if (MB_NULLWCH (mblength))
+!          return i;
+!        else
+!          {
+!            i += mblength;
+!            slength -= mblength;
+!          }
+!      }
+!       else
+! #endif
+!       ++i;
+! 
+!       c = s[i];
+! 
+!       if (c == 0)
+!      break;
+!       else if (c == '[')
+!      count++;
+!       else if (c == ']')
+!      count--;
+!     }
+! 
+!   return i;
+! }
+  
+  /* This function is called with SUB pointing to just after the beginning
+--- 605,609 ----
+  }
+  
+! /* skipsubscript moved to subst.c to use private functions. 2009/02/24. */
+  
+  /* This function is called with SUB pointing to just after the beginning
+*** ../bash-4.0/subst.c        2009-01-28 14:34:12.000000000 -0500
+--- subst.c    2009-02-25 09:18:33.000000000 -0500
+***************
+*** 223,226 ****
+--- 223,227 ----
+  static char *extract_delimited_string __P((char *, int *, char *, char *, char *, int));
+  static char *extract_dollar_brace_string __P((char *, int *, int, int));
++ static int skip_matched_pair __P((const char *, int, int, int, int));
+  
+  static char *pos_params __P((char *, int, int, int));
+***************
+*** 1375,1378 ****
+--- 1376,1480 ----
+  #define CQ_RETURN(x) do { no_longjmp_on_fatal_error = 0; return (x); } while (0)
+  
++ /* This function assumes s[i] == open; returns with s[ret] == close; used to
++    parse array subscripts.  FLAGS currently unused. */
++ static int
++ skip_matched_pair (string, start, open, close, flags)
++      const char *string;
++      int start, open, close, flags;
++ {
++   int i, pass_next, backq, si, c, count;
++   size_t slen;
++   char *temp, *ss;
++   DECLARE_MBSTATE;
++ 
++   slen = strlen (string + start) + start;
++   no_longjmp_on_fatal_error = 1;
++ 
++   i = start + 1;             /* skip over leading bracket */
++   count = 1;
++   pass_next = backq = 0;
++   ss = (char *)string;
++   while (c = string[i])
++     {
++       if (pass_next)
++      {
++        pass_next = 0;
++        if (c == 0)
++          CQ_RETURN(i);
++        ADVANCE_CHAR (string, slen, i);
++        continue;
++      }
++       else if (c == '\\')
++      {
++        pass_next = 1;
++        i++;
++        continue;
++      }
++       else if (backq)
++      {
++        if (c == '`')
++          backq = 0;
++        ADVANCE_CHAR (string, slen, i);
++        continue;
++      }
++       else if (c == '`')
++      {
++        backq = 1;
++        i++;
++        continue;
++      }
++       else if (c == open)
++      {
++        count++;
++        i++;
++        continue;
++      }
++       else if (c == close)
++      {
++        count--;
++        if (count == 0)
++          break;
++        i++;
++        continue;
++      }
++       else if (c == '\'' || c == '"')
++      {
++        i = (c == '\'') ? skip_single_quoted (ss, slen, ++i)
++                        : skip_double_quoted (ss, slen, ++i);
++        /* no increment, the skip functions increment past the closing quote. */
++      }
++       else if (c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE))
++      {
++        si = i + 2;
++        if (string[si] == '\0')
++          CQ_RETURN(si);
++ 
++        if (string[i+1] == LPAREN)
++          temp = extract_delimited_string (ss, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */
++        else
++          temp = extract_dollar_brace_string (ss, &si, 0, SX_NOALLOC);
++        i = si;
++        if (string[i] == '\0')        /* don't increment i past EOS in loop */
++          break;
++        i++;
++        continue;
++      }
++       else
++      ADVANCE_CHAR (string, slen, i);
++     }
++ 
++   CQ_RETURN(i);
++ }
++ 
++ #if defined (ARRAY_VARS)
++ int
++ skipsubscript (string, start)
++      const char *string;
++      int start;
++ {
++   return (skip_matched_pair (string, start, '[', ']', 0));
++ }
++ #endif
++ 
+  /* Skip characters in STRING until we find a character in DELIMS, and return
+     the index of that character.  START is the index into string at which we
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash40-008 b/bash40-008
new file mode 100644 (file)
index 0000000..7a2576a
--- /dev/null
@@ -0,0 +1,49 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-008
+
+Bug-Reported-by:       Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID:      <200902261030.54062.vapier@gentoo.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00230.html
+
+Bug-Description:
+
+Patch:
+
+*** ../bash-4.0/parse.y        2009-01-08 08:29:12.000000000 -0500
+--- parse.y    2009-02-26 17:22:15.000000000 -0500
+***************
+*** 3443,3448 ****
+             else
+               shell_ungetc (peekc);
+!            tflags |= LEX_HEREDELIM;
+!            lex_firstind = -1;
+             continue;
+           }
+--- 3443,3451 ----
+             else
+               shell_ungetc (peekc);
+!            if (peekc != '<')
+!              {
+!                tflags |= LEX_HEREDELIM;
+!                lex_firstind = -1;
+!              }
+             continue;
+           }
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash40-009 b/bash40-009
new file mode 100644 (file)
index 0000000..f583919
--- /dev/null
@@ -0,0 +1,61 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-009
+
+Bug-Reported-by:       "Chris F.A. Johnson" <cfajohnson@gmail.com>
+Bug-Reference-ID:      <4d6b7$49a88cec$cef88ba3$16813@TEKSAVVY.COM>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00255.html
+
+Bug-Description:
+
+When the read builtin returned due to a timeout supplied with the -t option,
+it did not restore any modified terminal attribtues.
+
+Patch:
+
+*** ../bash-4.0/builtins/read.def      2009-01-15 23:11:21.000000000 -0500
+--- builtins/read.def  2009-03-02 10:15:39.000000000 -0500
+***************
+*** 370,381 ****
+        if (code)
+       {
+! #if 0
+         run_unwind_frame ("read_builtin");
+-        return (EXECUTION_FAILURE);
+- #else
+         input_string[i] = '\0';       /* make sure it's terminated */
+!        retval = 128+SIGALRM;;
+         goto assign_vars;
+- #endif
+       }
+        old_alrm = set_signal_handler (SIGALRM, sigalrm);
+--- 370,381 ----
+        if (code)
+       {
+!        /* Tricky.  The top of the unwind-protect stack is the free of
+!           input_string.  We want to run all the rest and use input_string,
+!           so we have to remove it from the stack. */
+!        remove_unwind_protect ();
+         run_unwind_frame ("read_builtin");
+         input_string[i] = '\0';       /* make sure it's terminated */
+!        retval = 128+SIGALRM;
+         goto assign_vars;
+       }
+        old_alrm = set_signal_handler (SIGALRM, sigalrm);
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash40-010 b/bash40-010
new file mode 100644 (file)
index 0000000..3229c57
--- /dev/null
@@ -0,0 +1,63 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-010
+
+Bug-Reported-by:       Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID:      <200903030122.56206.vapier@gentoo.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00023.html
+
+Bug-Description:
+
+Bash has problems parsing comments in case statements when they appear in
+$(...) subshells.
+
+Patch:
+
+*** ../bash-4.0/parse.y        2009-03-07 15:18:35.000000000 -0500
+--- parse.y    2009-03-07 14:16:32.000000000 -0500
+***************
+*** 3413,3419 ****
+             tflags &= ~LEX_RESWDOK;
+           }
+!        else if (shellbreak (ch) == 0)
+  {
+!            tflags &= ~LEX_RESWDOK;
+  /*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/
+  }
+--- 3415,3433 ----
+             tflags &= ~LEX_RESWDOK;
+           }
+!        else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0)))
+!          ;   /* don't modify LEX_RESWDOK if we're starting a comment */
+!        else if MBTEST((tflags & LEX_INCASE) && ch != '\n')
+!          /* If we can read a reserved word and we're in case, we're at the
+!             point where we can read a new pattern list or an esac.  We
+!             handle the esac case above.  If we read a newline, we want to
+!             leave LEX_RESWDOK alone.  If we read anything else, we want to
+!             turn off LEX_RESWDOK, since we're going to read a pattern list. */
+  {
+!          tflags &= ~LEX_RESWDOK;
+! /*itrace("parse_comsub:%d: lex_incase == 1 found `%c', lex_reswordok -> 0", line_number, ch);*/
+! }
+!        else if MBTEST(shellbreak (ch) == 0)
+! {
+!          tflags &= ~LEX_RESWDOK;
+  /*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/
+  }
+*** ../bash-4.0/patchlevel.h   2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h       2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */
This page took 0.152043 seconds and 4 git commands to generate.