From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Tremer To: development@lists.ipfire.org Subject: Re: [PATCH v2 1/2] bash: update to 5.0 (patchlevel 11) Date: Sun, 13 Oct 2019 14:09:29 +0100 Message-ID: In-Reply-To: <0f27a693-cf20-a3ba-34e6-044d638d9f9b@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0987718953205991396==" List-Id: --===============0987718953205991396== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Why is a second patchset needed for this? > On 13 Oct 2019, at 10:56, peter.mueller(a)ipfire.org wrote: >=20 > The second version of this patch also includes patches 1-11 > for version 5.0, and drops orphaned 4.3 patches. >=20 > Please refer to https://tiswww.case.edu/php/chet/bash/bashtop.html > for release notes. >=20 > Signed-off-by: Peter M=C3=BCller > --- > config/rootfiles/common/bash | 5 + > lfs/bash | 10 +- > src/patches/bash/bash43-001 | 58 -- > src/patches/bash/bash43-002 | 62 -- > src/patches/bash/bash43-003 | 48 - > src/patches/bash/bash43-004 | 47 - > src/patches/bash/bash43-005 | 63 -- > src/patches/bash/bash43-006 | 48 - > src/patches/bash/bash43-007 | 50 - > src/patches/bash/bash43-008 | 188 ---- > src/patches/bash/bash43-009 | 64 -- > src/patches/bash/bash43-010 | 157 --- > src/patches/bash/bash43-011 | 49 - > src/patches/bash/bash43-012 | 43 - > src/patches/bash/bash43-013 | 66 -- > src/patches/bash/bash43-014 | 102 -- > src/patches/bash/bash43-015 | 58 -- > src/patches/bash/bash43-016 | 132 --- > src/patches/bash/bash43-017 | 51 - > src/patches/bash/bash43-018 | 44 - > src/patches/bash/bash43-019 | 84 -- > src/patches/bash/bash43-020 | 110 -- > src/patches/bash/bash43-021 | 52 - > src/patches/bash/bash43-022 | 56 -- > src/patches/bash/bash43-023 | 104 -- > src/patches/bash/bash43-024 | 54 - > src/patches/bash/bash43-025 | 123 --- > src/patches/bash/bash43-026 | 60 -- > src/patches/bash/bash43-027 | 221 ----- > src/patches/bash/bash43-028 | 2265 ---------------------------------------= --- > src/patches/bash/bash43-029 | 59 -- > src/patches/bash/bash43-030 | 2064 -------------------------------------- > src/patches/bash/bash50-001 | 166 ++++ > src/patches/bash/bash50-002 | 113 +++ > src/patches/bash/bash50-003 | 239 +++++ > src/patches/bash/bash50-004 | 53 + > src/patches/bash/bash50-005 | 110 ++ > src/patches/bash/bash50-006 | 47 + > src/patches/bash/bash50-007 | 62 ++ > src/patches/bash/bash50-008 | 68 ++ > src/patches/bash/bash50-009 | 42 + > src/patches/bash/bash50-010 | 172 ++++ > src/patches/bash/bash50-011 | 59 ++ > 43 files changed, 1141 insertions(+), 6587 deletions(-) > delete mode 100644 src/patches/bash/bash43-001 > delete mode 100644 src/patches/bash/bash43-002 > delete mode 100644 src/patches/bash/bash43-003 > delete mode 100644 src/patches/bash/bash43-004 > delete mode 100644 src/patches/bash/bash43-005 > delete mode 100644 src/patches/bash/bash43-006 > delete mode 100644 src/patches/bash/bash43-007 > delete mode 100644 src/patches/bash/bash43-008 > delete mode 100644 src/patches/bash/bash43-009 > delete mode 100644 src/patches/bash/bash43-010 > delete mode 100644 src/patches/bash/bash43-011 > delete mode 100644 src/patches/bash/bash43-012 > delete mode 100644 src/patches/bash/bash43-013 > delete mode 100644 src/patches/bash/bash43-014 > delete mode 100644 src/patches/bash/bash43-015 > delete mode 100644 src/patches/bash/bash43-016 > delete mode 100644 src/patches/bash/bash43-017 > delete mode 100644 src/patches/bash/bash43-018 > delete mode 100644 src/patches/bash/bash43-019 > delete mode 100644 src/patches/bash/bash43-020 > delete mode 100644 src/patches/bash/bash43-021 > delete mode 100644 src/patches/bash/bash43-022 > delete mode 100644 src/patches/bash/bash43-023 > delete mode 100644 src/patches/bash/bash43-024 > delete mode 100644 src/patches/bash/bash43-025 > delete mode 100644 src/patches/bash/bash43-026 > delete mode 100644 src/patches/bash/bash43-027 > delete mode 100644 src/patches/bash/bash43-028 > delete mode 100644 src/patches/bash/bash43-029 > delete mode 100644 src/patches/bash/bash43-030 > create mode 100644 src/patches/bash/bash50-001 > create mode 100644 src/patches/bash/bash50-002 > create mode 100644 src/patches/bash/bash50-003 > create mode 100644 src/patches/bash/bash50-004 > create mode 100644 src/patches/bash/bash50-005 > create mode 100644 src/patches/bash/bash50-006 > create mode 100644 src/patches/bash/bash50-007 > create mode 100644 src/patches/bash/bash50-008 > create mode 100644 src/patches/bash/bash50-009 > create mode 100644 src/patches/bash/bash50-010 > create mode 100644 src/patches/bash/bash50-011 >=20 > diff --git a/config/rootfiles/common/bash b/config/rootfiles/common/bash > index 84f587f3c..27344c31b 100644 > --- a/config/rootfiles/common/bash > +++ b/config/rootfiles/common/bash > @@ -1,6 +1,9 @@ > bin/sh > bin/bash > #bin/bashbug > +#usr/lib/bash > +#usr/lib/pkgconfig/bash.pc > +#usr/include/bash > #usr/share/doc/bash > #usr/share/doc/bash/CHANGES > #usr/share/doc/bash/COMPAT > @@ -39,8 +42,10 @@ bin/bash > #usr/share/locale/it/LC_MESSAGES/bash.mo > #usr/share/locale/ja/LC_MESSAGES/bash.mo > #usr/share/locale/lt/LC_MESSAGES/bash.mo > +#usr/share/locale/nb/LC_MESSAGES/bash.mo > #usr/share/locale/nl/LC_MESSAGES/bash.mo > #usr/share/locale/pl/LC_MESSAGES/bash.mo > +#usr/share/locale/pt/LC_MESSAGES/bash.mo > #usr/share/locale/pt_BR/LC_MESSAGES/bash.mo > #usr/share/locale/ro/LC_MESSAGES/bash.mo > #usr/share/locale/ru/LC_MESSAGES/bash.mo > diff --git a/lfs/bash b/lfs/bash > index 09b4e71e6..79c21896b 100644 > --- a/lfs/bash > +++ b/lfs/bash > @@ -1,7 +1,7 @@ > ###########################################################################= #### > # = # > # IPFire.org - A linux based firewall = # > -# Copyright (C) 2007-2018 IPFire Team = # > +# Copyright (C) 2007-2019 IPFire Team = # > # = # > # This program is free software: you can redistribute it and/or modify = # > # it under the terms of the GNU General Public License as published by = # > @@ -24,7 +24,7 @@ >=20 > include Config >=20 > -VER =3D 4.3 > +VER =3D 5.0 >=20 > THISAPP =3D bash-$(VER) > DL_FILE =3D $(THISAPP).tar.gz > @@ -53,7 +53,7 @@ objects =3D $(DL_FILE) >=20 > $(DL_FILE) =3D $(DL_FROM)/$(DL_FILE) >=20 > -$(DL_FILE)_MD5 =3D 81348932d5da294953e15d4814c74dd1 > +$(DL_FILE)_MD5 =3D 2b44b47b905be16f45709648f671820b >=20 > install : $(TARGET) >=20 > @@ -87,8 +87,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) > sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \ > -i $(DIR_APP)/builtins/enable.def >=20 > - for i in $$(seq 1 30); do \ > - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash43-$$(prin= tf "%03d" "$${i}") || exit 1; \ > + for i in $$(seq 1 11); do \ > + cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash50-$$(prin= tf "%03d" "$${i}") || exit 1; \ > done >=20 > cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-paths-1.patch > diff --git a/src/patches/bash/bash43-001 b/src/patches/bash/bash43-001 > deleted file mode 100644 > index ea1c6b265..000000000 > --- a/src/patches/bash/bash43-001 > +++ /dev/null > @@ -1,58 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-001 > - > -Bug-Reported-by: NBaH > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg0= 0092.html > - > -Bug-Description: > - > -A missing check for a valid option prevented `test -R' from working. There > -is another problem that causes bash to look up the wrong variable name when > -processing the argument to `test -R'. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3/test.c 2014-02-04 16:52:58.000000000 -0500 > ---- test.c 2014-02-28 21:22:44.000000000 -0500 > -*************** > -*** 647,652 **** > - =20 > - case 'R': > -! v =3D find_variable (arg); > -! return (v && invisible_p (v) =3D=3D 0 && var_isset (v) && nameref_= p (v) ? TRUE : FALSE); > - } > - =20 > ---- 647,652 ---- > - =20 > - case 'R': > -! v =3D find_variable_noref (arg); > -! return ((v && invisible_p (v) =3D=3D 0 && var_isset (v) && nameref= _p (v)) ? TRUE : FALSE); > - } > - =20 > -*************** > -*** 724,727 **** > ---- 724,728 ---- > - case 'u': case 'v': case 'w': case 'x': case 'z': > - case 'G': case 'L': case 'O': case 'S': case 'N': > -+ case 'R': > - return (1); > - } > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 0 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 1 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-002 b/src/patches/bash/bash43-002 > deleted file mode 100644 > index 735b7b81a..000000000 > --- a/src/patches/bash/bash43-002 > +++ /dev/null > @@ -1,62 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-002 > - > -Bug-Reported-by: Moe Tunes > -Bug-Reference-ID: <53103F49.3070100(a)gmail.com> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg0= 0086.html > - > -Bug-Description: > - > -A change to save state while running the DEBUG trap caused pipelines to ha= ng > -on systems which need process group synchronization while building pipelin= es. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3/trap.c 2014-02-05 10:03:21.000000000 -0500 > ---- trap.c 2014-02-28 09:51:43.000000000 -0500 > -*************** > -*** 921,925 **** > - =20 > - #if defined (JOB_CONTROL) > -! save_pipeline (1); /* XXX only provides one save level */ > - #endif > - =20 > ---- 921,926 ---- > - =20 > - #if defined (JOB_CONTROL) > -! if (sig !=3D DEBUG_TRAP) /* run_debug_trap does this */ > -! save_pipeline (1); /* XXX only provides one save level */ > - #endif > - =20 > -*************** > -*** 941,945 **** > - =20 > - #if defined (JOB_CONTROL) > -! restore_pipeline (1); > - #endif > - =20 > ---- 942,947 ---- > - =20 > - #if defined (JOB_CONTROL) > -! if (sig !=3D DEBUG_TRAP) /* run_debug_trap does this */ > -! restore_pipeline (1); > - #endif > - =20 > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 1 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 2 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-003 b/src/patches/bash/bash43-003 > deleted file mode 100644 > index 0f32f410d..000000000 > --- a/src/patches/bash/bash43-003 > +++ /dev/null > @@ -1,48 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-003 > - > -Bug-Reported-by: Anatol Pomozov > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/= msg00010.html > - > -Bug-Description: > - > -When in callback mode, some readline commands can cause readline to seg > -fault by passing invalid contexts to callback functions. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 > ---- lib/readline/readline.c 2014-03-10 14:15:02.000000000 -0400 > -*************** > -*** 745,749 **** > - =20 > - RL_CHECK_SIGNALS (); > -! if (r =3D=3D 0) /* success! */ > - { > - _rl_keyseq_chain_dispose (); > ---- 745,750 ---- > - =20 > - RL_CHECK_SIGNALS (); > -! /* We only treat values < 0 specially to simulate recursion. */ > -! if (r >=3D 0 || (r =3D=3D -1 && (cxt->flags & KSEQ_SUBSEQ) =3D=3D 0)) = /* success! or failure! */ > - { > - _rl_keyseq_chain_dispose (); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 2 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 3 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-004 b/src/patches/bash/bash43-004 > deleted file mode 100644 > index 010f04a2a..000000000 > --- a/src/patches/bash/bash43-004 > +++ /dev/null > @@ -1,47 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-004 > - > -Bug-Reported-by: Daan van Rossum > -Bug-Reference-ID: <20140307072523.GA14250(a)flash.uchicago.edu> > -Bug-Reference-URL:=09 > - > -Bug-Description: > - > -The `.' command in vi mode cannot undo multi-key commands beginning with > -`c', `d', and `y' (command plus motion specifier). > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 > ---- lib/readline/readline.c 2014-03-07 15:20:33.000000000 -0500 > -*************** > -*** 965,969 **** > - if (rl_editing_mode =3D=3D vi_mode && _rl_keymap =3D=3D vi_movement_ke= ymap && > - key !=3D ANYOTHERKEY && > -! rl_key_sequence_length =3D=3D 1 && /* XXX */ > - _rl_vi_textmod_command (key)) > - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); > ---- 965,969 ---- > - if (rl_editing_mode =3D=3D vi_mode && _rl_keymap =3D=3D vi_movement_ke= ymap && > - key !=3D ANYOTHERKEY && > -! _rl_dispatching_keymap =3D=3D vi_movement_keymap && > - _rl_vi_textmod_command (key)) > - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 3 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 4 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-005 b/src/patches/bash/bash43-005 > deleted file mode 100644 > index bcd40697c..000000000 > --- a/src/patches/bash/bash43-005 > +++ /dev/null > @@ -1,63 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-005 > - > -Bug-Reported-by: David Sines > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg0= 0037.html > - > -Bug-Description: > - > -When in Posix mode, bash did not correctly interpret the ANSI-C-style > -$'...' quoting mechanism when performing pattern substitution word > -expansions within double quotes. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3/parse.y 2014-02-11 09:42:10.000000000 -0500 > ---- parse.y 2014-03-07 20:57:15.000000000 -0500 > -*************** > -*** 3399,3403 **** > - unescaped double-quotes or single-quotes, if any, shall occur."= */ > - /* This was changed in Austin Group Interp 221 */ > -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dol= brace_state !=3D DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE)= && ch =3D=3D '\'') > - continue; > - =20 > ---- 3399,3403 ---- > - unescaped double-quotes or single-quotes, if any, shall occur."= */ > - /* This was changed in Austin Group Interp 221 */ > -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dol= brace_state !=3D DOLBRACE_QUOTE && dolbrace_state !=3D DOLBRACE_QUOTE2 && (fl= ags & P_DQUOTE) && (flags & P_DOLBRACE) && ch =3D=3D '\'') > - continue; > - =20 > -*** ../bash-4.3/y.tab.c 2014-02-11 10:57:47.000000000 -0500 > ---- y.tab.c 2014-03-28 10:41:15.000000000 -0400 > -*************** > -*** 5711,5715 **** > - unescaped double-quotes or single-quotes, if any, shall occur."= */ > - /* This was changed in Austin Group Interp 221 */ > -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dol= brace_state !=3D DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE)= && ch =3D=3D '\'') > - continue; > - =20 > ---- 5711,5715 ---- > - unescaped double-quotes or single-quotes, if any, shall occur."= */ > - /* This was changed in Austin Group Interp 221 */ > -! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dol= brace_state !=3D DOLBRACE_QUOTE && dolbrace_state !=3D DOLBRACE_QUOTE2 && (fl= ags & P_DQUOTE) && (flags & P_DOLBRACE) && ch =3D=3D '\'') > - continue; > - =20 > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 4 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 5 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-006 b/src/patches/bash/bash43-006 > deleted file mode 100644 > index 24ff057a5..000000000 > --- a/src/patches/bash/bash43-006 > +++ /dev/null > @@ -1,48 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-006 > - > -Bug-Reported-by: Eduardo A . Bustamante Lopez > -Bug-Reference-ID: <20140228170013.GA16015(a)dualbus.me> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg0= 0091.html > - > -Bug-Description: > - > -A shell that started with job control active but was not interactive left > -the terminal in the wrong process group when exiting, causing its parent > -shell to get a stop signal when it attempted to read from the terminal. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3/jobs.c 2014-01-10 09:05:34.000000000 -0500 > ---- jobs.c 2014-03-02 18:05:09.000000000 -0500 > -*************** > -*** 4375,4379 **** > - end_job_control () > - { > -! if (interactive_shell) /* XXX - should it be interactive? */ > - { > - terminate_stopped_jobs (); > ---- 4375,4379 ---- > - end_job_control () > - { > -! if (interactive_shell || job_control) /* XXX - should it be just job_= control? */ > - { > - terminate_stopped_jobs (); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 5 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 6 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-007 b/src/patches/bash/bash43-007 > deleted file mode 100644 > index 0d62c9ec6..000000000 > --- a/src/patches/bash/bash43-007 > +++ /dev/null > @@ -1,50 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-007 > - > -Bug-Reported-by: geir.hauge(a)gmail.com > -Bug-Reference-ID: <20140318093650.B181C1C5B0B(a)gina.itea.ntnu.no> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg0= 0095.html > - > -Bug-Description: > - > -Using compound assignments for associative arrays like > - > -assoc=3D( [x]=3D [y]=3Dbar ) > - > -left the value corresponding to the key `x' NULL. This caused subsequent > -lookups to interpret it as unset. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3/arrayfunc.c 2013-08-02 16:19:59.000000000 -0400 > ---- arrayfunc.c 2014-03-18 11:08:15.000000000 -0400 > -*************** > -*** 598,601 **** > ---- 598,606 ---- > - { > - val =3D expand_assignment_string_to_string (val, 0); > -+ if (val =3D=3D 0) > -+ { > -+ val =3D (char *)xmalloc (1); > -+ val[0] =3D '\0'; /* like do_assignment_internal */ > -+ } > - free_val =3D 1; > - } > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 6 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 7 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-008 b/src/patches/bash/bash43-008 > deleted file mode 100644 > index 0ae7c9522..000000000 > --- a/src/patches/bash/bash43-008 > +++ /dev/null > @@ -1,188 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-008 > - > -Bug-Reported-by: Stephane Chazelas > -Bug-Reference-ID: <20140318135901.GB22158(a)chaz.gmail.com> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg0= 0098.html > - > -Bug-Description: > - > -Some extended glob patterns incorrectly matched filenames with a leading > -dot, regardless of the setting of the `dotglob' option. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3/lib/glob/gmisc.c 2013-10-28 14:45:25.000000000 -0400 > ---- lib/glob/gmisc.c 2014-03-19 09:16:08.000000000 -0400 > -*************** > -*** 211,214 **** > ---- 211,215 ---- > - case '!': > - case '@': > -+ case '?': > - return (pat[1] =3D=3D LPAREN); > - default: > -*** ../bash-4.3/lib/glob/glob.c 2014-01-31 21:43:51.000000000 -0500 > ---- lib/glob/glob.c 2014-03-20 09:01:26.000000000 -0400 > -*************** > -*** 180,202 **** > - int flags; > - { > -! char *pp, *pe, *t; > -! int n, r; > - =20 > - pp =3D pat + 2; > -! pe =3D pp + strlen (pp) - 1; /*(*/ > -! if (*pe !=3D ')') > -! return 0; > -! if ((t =3D strchr (pp, '|')) =3D=3D 0) /* easy case first */ > - { > - *pe =3D '\0'; > - r =3D skipname (pp, dname, flags); /*(*/ > - *pe =3D ')'; > - return r; > - } > - while (t =3D glob_patscan (pp, pe, '|')) > - { > - n =3D t[-1]; > - t[-1] =3D '\0'; > - r =3D skipname (pp, dname, flags); > - t[-1] =3D n; > - if (r =3D=3D 0) /* if any pattern says not skip, we don't skip */ > ---- 180,215 ---- > - int flags; > - { > -! char *pp, *pe, *t, *se; > -! int n, r, negate; > - =20 > -+ negate =3D *pat =3D=3D '!'; > - pp =3D pat + 2; > -! se =3D pp + strlen (pp) - 1; /* end of string */ > -! pe =3D glob_patscan (pp, se, 0); /* end of extglob pattern (( */ > -! /* we should check for invalid extglob pattern here */ > -! /* if pe !=3D se we have more of the pattern at the end of the extglob > -! pattern. Check the easy case first ( */ > -! if (pe =3D=3D se && *pe =3D=3D ')' && (t =3D strchr (pp, '|')) =3D=3D = 0) > - { > - *pe =3D '\0'; > -+ #if defined (HANDLE_MULTIBYTE) > -+ r =3D mbskipname (pp, dname, flags); > -+ #else > - r =3D skipname (pp, dname, flags); /*(*/ > -+ #endif > - *pe =3D ')'; > - return r; > - } > -+=20 > -+ /* check every subpattern */ > - while (t =3D glob_patscan (pp, pe, '|')) > - { > - n =3D t[-1]; > - t[-1] =3D '\0'; > -+ #if defined (HANDLE_MULTIBYTE) > -+ r =3D mbskipname (pp, dname, flags); > -+ #else > - r =3D skipname (pp, dname, flags); > -+ #endif > - t[-1] =3D n; > - if (r =3D=3D 0) /* if any pattern says not skip, we don't skip */ > -*************** > -*** 205,219 **** > - } /*(*/ > - =20 > -! if (pp =3D=3D pe) /* glob_patscan might find end of pattern */ > - return r; > - =20 > -! *pe =3D '\0'; > -! # if defined (HANDLE_MULTIBYTE) > -! r =3D mbskipname (pp, dname, flags); /*(*/ > -! # else > -! r =3D skipname (pp, dname, flags); /*(*/ > -! # endif > -! *pe =3D ')'; > -! return r; > - } > - #endif > ---- 218,227 ---- > - } /*(*/ > - =20 > -! /* glob_patscan might find end of pattern */ > -! if (pp =3D=3D se) > - return r; > - =20 > -! /* but if it doesn't then we didn't match a leading dot */ > -! return 0; > - } > - #endif > -*************** > -*** 278,289 **** > - { > - #if EXTENDED_GLOB > -! wchar_t *pp, *pe, *t, n; > -! int r; > - =20 > - pp =3D pat + 2; > -! pe =3D pp + wcslen (pp) - 1; /*(*/ > -! if (*pe !=3D L')') > -! return 0; > -! if ((t =3D wcschr (pp, L'|')) =3D=3D 0) > - { > - *pe =3D L'\0'; > ---- 286,298 ---- > - { > - #if EXTENDED_GLOB > -! wchar_t *pp, *pe, *t, n, *se; > -! int r, negate; > - =20 > -+ negate =3D *pat =3D=3D L'!'; > - pp =3D pat + 2; > -! se =3D pp + wcslen (pp) - 1; /*(*/ > -! pe =3D glob_patscan_wc (pp, se, 0); > -!=20 > -! if (pe =3D=3D se && *pe =3D=3D ')' && (t =3D wcschr (pp, L'|')) =3D=3D= 0) > - { > - *pe =3D L'\0'; > -*************** > -*** 292,295 **** > ---- 301,306 ---- > - return r; > - } > -+=20 > -+ /* check every subpattern */ > - while (t =3D glob_patscan_wc (pp, pe, '|')) > - { > -*************** > -*** 306,313 **** > - return r; > - =20 > -! *pe =3D L'\0'; > -! r =3D wchkname (pp, dname); /*(*/ > -! *pe =3D L')'; > -! return r; > - #else > - return (wchkname (pat, dname)); > ---- 317,322 ---- > - return r; > - =20 > -! /* but if it doesn't then we didn't match a leading dot */ > -! return 0; > - #else > - return (wchkname (pat, dname)); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 7 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 8 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-009 b/src/patches/bash/bash43-009 > deleted file mode 100644 > index 015835cde..000000000 > --- a/src/patches/bash/bash43-009 > +++ /dev/null > @@ -1,64 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-009 > - > -Bug-Reported-by: Matthias Klose > -Bug-Reference-ID: <53346FC8.6090005(a)debian.org> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg0= 0171.html > - > -Bug-Description: > - > -There is a problem with unsigned sign extension when attempting to realloc= ate > -the input line when it is fewer than 3 characters long and there has been a > -history expansion. The sign extension causes the shell to not reallocate = the > -line, which results in a segmentation fault when it writes past the end. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/parse.y 2014-02-11 09:42:10.000000000 -0500 > ---- parse.y 2014-03-27 16:33:29.000000000 -0400 > -*************** > -*** 2425,2429 **** > - if (shell_input_line_terminator !=3D EOF) > - { > -! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_= input_line_size - 3) > - shell_input_line =3D (char *)xrealloc (shell_input_line, > - 1 + (shell_input_line_size +=3D 2)); > ---- 2425,2429 ---- > - if (shell_input_line_terminator !=3D EOF) > - { > -! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > s= hell_input_line_size)) > - shell_input_line =3D (char *)xrealloc (shell_input_line, > - 1 + (shell_input_line_size +=3D 2)); > -*** ../bash-4.3-patched/y.tab.c 2014-03-28 11:17:06.000000000 -0400 > ---- y.tab.c 2014-04-07 11:48:31.000000000 -0400 > -*************** > -*** 4737,4741 **** > - if (shell_input_line_terminator !=3D EOF) > - { > -! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_= input_line_size - 3) > - shell_input_line =3D (char *)xrealloc (shell_input_line, > - 1 + (shell_input_line_size +=3D 2)); > ---- 4737,4741 ---- > - if (shell_input_line_terminator !=3D EOF) > - { > -! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > s= hell_input_line_size)) > - shell_input_line =3D (char *)xrealloc (shell_input_line, > - 1 + (shell_input_line_size +=3D 2)); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 8 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 9 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-010 b/src/patches/bash/bash43-010 > deleted file mode 100644 > index 835a96ead..000000000 > --- a/src/patches/bash/bash43-010 > +++ /dev/null > @@ -1,157 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-010 > - > -Bug-Reported-by: Albert Shih > -Bug-Reference-ID: Wed, 5 Mar 2014 23:01:40 +0100 > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg0= 0028.html > - > -Bug-Description: > - > -Patch (apply with `patch -p0'): > - > -This patch changes the behavior of programmable completion to compensate > -for two assumptions made by the bash-completion package. Bash-4.3 changed > -to dequote the argument to programmable completion only under certain > -circumstances, to make the behavior of compgen more consistent when run > -from the command line -- closer to the behavior when run by a shell functi= on > -run as part of programmable completion. Bash-completion can pass quoted > -arguments to compgen when the original word to be completed was not quoted, > -expecting programmable completion to dequote the word before attempting > -completion. > - > -This patch fixes two cases: > - > -1. An empty string that bash-completion passes to compgen as a quoted null > - string (''). > - > -2. An unquoted word that bash-completion quotes using single quotes or > - backslashes before passing it to compgen. > - > -In these cases, since readline did not detect a quote character in the ori= ginal > -word to be completed, bash-4.3=20 > - > -*** ../bash-4.3/externs.h 2014-01-02 14:58:20.000000000 -0500 > ---- externs.h 2014-03-13 14:42:57.000000000 -0400 > -*************** > -*** 325,328 **** > ---- 325,329 ---- > - extern char *sh_backslash_quote_for_double_quotes __P((char *)); > - extern int sh_contains_shell_metas __P((char *)); > -+ extern int sh_contains_quotes __P((char *)); > - =20 > - /* declarations for functions defined in lib/sh/spell.c */ > -*** ../bash-4.3/lib/sh/shquote.c 2013-03-31 21:53:32.000000000 -0400 > ---- lib/sh/shquote.c 2014-03-13 14:42:57.000000000 -0400 > -*************** > -*** 312,313 **** > ---- 312,327 ---- > - return (0); > - } > -+=20 > -+ int > -+ sh_contains_quotes (string) > -+ char *string; > -+ { > -+ char *s; > -+=20 > -+ for (s =3D string; s && *s; s++) > -+ { > -+ if (*s =3D=3D '\'' || *s =3D=3D '"' || *s =3D=3D '\\') > -+ return 1; > -+ } > -+ return 0; > -+ } > -*** ../bash-4.3/pcomplete.c 2013-08-26 15:23:45.000000000 -0400 > ---- pcomplete.c 2014-03-25 17:23:23.000000000 -0400 > -*************** > -*** 184,187 **** > ---- 184,188 ---- > - COMPSPEC *pcomp_curcs; > - const char *pcomp_curcmd; > -+ const char *pcomp_curtxt; > - =20 > - #ifdef DEBUG > -*************** > -*** 754,757 **** > ---- 755,784 ---- > - dfn =3D (*rl_filename_dequoting_function) ((char *)text, rl_completio= n_quote_character); > - } > -+ /* Intended to solve a mismatched assumption by bash-completion. = If > -+ the text to be completed is empty, but bash-completion turns it into > -+ a quoted string ('') assuming that this code will dequote it before > -+ calling readline, do the dequoting. */ > -+ else if (iscompgen && iscompleting && > -+ pcomp_curtxt && *pcomp_curtxt =3D=3D 0 && > -+ text && (*text =3D=3D '\'' || *text =3D=3D '"') && text[1] =3D= =3D text[0] && text[2] =3D=3D 0 &&=20 > -+ rl_filename_dequoting_function) > -+ dfn =3D (*rl_filename_dequoting_function) ((char *)text, rl_completion_= quote_character); > -+ /* Another mismatched assumption by bash-completion. If compgen i= s being > -+ run as part of bash-completion, and the argument to compgen is n= ot > -+ the same as the word originally passed to the programmable compl= etion > -+ code, dequote the argument if it has quote characters. It's an > -+ attempt to detect when bash-completion is quoting its filename > -+ argument before calling compgen. */ > -+ /* We could check whether gen_shell_function_matches is in the call > -+ stack by checking whether the gen-shell-function-matches tag is in > -+ the unwind-protect stack, but there's no function to do that yet. > -+ We could simply check whether we're executing in a function by > -+ checking variable_context, and may end up doing that. */ > -+ else if (iscompgen && iscompleting && rl_filename_dequoting_functi= on && > -+ pcomp_curtxt && text && > -+ STREQ (pcomp_curtxt, text) =3D=3D 0 && > -+ variable_context && > -+ sh_contains_quotes (text)) /* guess */ > -+ dfn =3D (*rl_filename_dequoting_function) ((char *)text, rl_completion_= quote_character); > - else > - dfn =3D savestring (text); > -*************** > -*** 1523,1527 **** > - { > - COMPSPEC *cs, *oldcs; > -! const char *oldcmd; > - STRINGLIST *ret; > - =20 > ---- 1550,1554 ---- > - { > - COMPSPEC *cs, *oldcs; > -! const char *oldcmd, *oldtxt; > - STRINGLIST *ret; > - =20 > -*************** > -*** 1546,1552 **** > ---- 1573,1581 ---- > - oldcs =3D pcomp_curcs; > - oldcmd =3D pcomp_curcmd; > -+ oldtxt =3D pcomp_curtxt; > - =20 > - pcomp_curcs =3D cs; > - pcomp_curcmd =3D cmd; > -+ pcomp_curtxt =3D word; > - =20 > - ret =3D gen_compspec_completions (cs, cmd, word, start, end, foundp); > -*************** > -*** 1554,1557 **** > ---- 1583,1587 ---- > - pcomp_curcs =3D oldcs; > - pcomp_curcmd =3D oldcmd; > -+ pcomp_curtxt =3D oldtxt; > - =20 > - /* We need to conditionally handle setting *retryp here */ > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 9 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 10 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-011 b/src/patches/bash/bash43-011 > deleted file mode 100644 > index cdc1572ee..000000000 > --- a/src/patches/bash/bash43-011 > +++ /dev/null > @@ -1,49 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-011 > - > -Bug-Reported-by: Egmont Koblinger > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg0= 0153.html > - > -Bug-Description: > - > -The signal handling changes to bash and readline (to avoid running any code > -in a signal handler context) cause the cursor to be placed on the wrong > -line of a multi-line command after a ^C interrupts editing. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/lib/readline/display.c 2013-12-27 13:10:56.0000000= 00 -0500 > ---- lib/readline/display.c 2014-03-27 11:52:45.000000000 -0400 > -*************** > -*** 2678,2682 **** > - if (_rl_echoing_p) > - { > -! _rl_move_vert (_rl_vis_botlin); > - _rl_vis_botlin =3D 0; > - fflush (rl_outstream); > ---- 2678,2683 ---- > - if (_rl_echoing_p) > - { > -! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ > -! _rl_move_vert (_rl_vis_botlin); > - _rl_vis_botlin =3D 0; > - fflush (rl_outstream); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 10 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 11 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-012 b/src/patches/bash/bash43-012 > deleted file mode 100644 > index 176fa15bd..000000000 > --- a/src/patches/bash/bash43-012 > +++ /dev/null > @@ -1,43 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-012 > - > -Bug-Reported-by: Eduardo A. Bustamante L=C3=B3pez > -Bug-Reference-ID: <5346B54C.4070205(a)case.edu> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg0= 0051.html > - > -Bug-Description: > - > -When a SIGCHLD trap runs a command containing a shell builtin while > -a script is running `wait' to wait for all running children to complete, > -the SIGCHLD trap will not be run once for each child that terminates. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/jobs.c 2014-03-28 10:54:19.000000000 -0400 > ---- jobs.c 2014-04-15 08:47:03.000000000 -0400 > -*************** > -*** 3598,3601 **** > ---- 3598,3602 ---- > - unwind_protect_pointer (the_pipeline); > - unwind_protect_pointer (subst_assign_varlist); > -+ unwind_protect_pointer (this_shell_builtin); > - =20 > - /* We have to add the commands this way because they will be run > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 11 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 12 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-013 b/src/patches/bash/bash43-013 > deleted file mode 100644 > index 8f4006b48..000000000 > --- a/src/patches/bash/bash43-013 > +++ /dev/null > @@ -1,66 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-013 > - > -Bug-Reported-by: > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg0= 0069.html > - > -Bug-Description: > - > -Using reverse-i-search when horizontal scrolling is enabled does not redis= play > -the entire line containing the successful search results. > - > -Patch (apply with `patch -p0'): > -*** ../bash-4.3-patched/lib/readline/display.c 2014-04-08 18:19:36.0000000= 00 -0400 > ---- lib/readline/display.c 2014-04-20 18:32:52.000000000 -0400 > -*************** > -*** 1638,1642 **** > - the spot of first difference is before the end of the invisible cha= rs, > - lendiff needs to be adjusted. */ > -! if (current_line =3D=3D 0 && !_rl_horizontal_scroll_mode && > - current_invis_chars !=3D visible_wrap_offset) > - { > ---- 1638,1642 ---- > - the spot of first difference is before the end of the invisible cha= rs, > - lendiff needs to be adjusted. */ > -! if (current_line =3D=3D 0 && /* !_rl_horizontal_scroll_mode && */ > - current_invis_chars !=3D visible_wrap_offset) > - { > -*************** > -*** 1826,1831 **** > - _rl_last_c_pos +=3D bytes_to_insert; > - =20 > - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) > -! goto clear_rest_of_line; > - } > - } > ---- 1826,1836 ---- > - _rl_last_c_pos +=3D bytes_to_insert; > - =20 > -+ /* XXX - we only want to do this if we are at the end of the line > -+ so we move there with _rl_move_cursor_relative */ > - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) > -! { > -! _rl_move_cursor_relative (ne-new, new); > -! goto clear_rest_of_line; > -! } > - } > - } > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 12 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 13 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-014 b/src/patches/bash/bash43-014 > deleted file mode 100644 > index f8371967f..000000000 > --- a/src/patches/bash/bash43-014 > +++ /dev/null > @@ -1,102 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-014 > - > -Bug-Reported-by: Greg Wooledge > -Bug-Reference-ID: <20140418202123.GB7660(a)eeg.ccf.org> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/help-bash/2014-04/msg= 00004.html > - > -Bug-Description: > - > -Under certain circumstances, $@ is expanded incorrectly in contexts where > -word splitting is not performed. > - > -Patch (apply with `patch -p0'): > -*** ../bash-4.3-patched/subst.c 2014-01-23 16:26:37.000000000 -0500 > ---- subst.c 2014-04-19 15:41:26.000000000 -0400 > -*************** > -*** 3249,3254 **** > ---- 3249,3256 ---- > - return ((char *)NULL); > - =20 > -+ expand_no_split_dollar_star =3D 1; > - w->flags |=3D W_NOSPLIT2; > - l =3D call_expand_word_internal (w, 0, 0, (int *)0, (int *)0); > -+ expand_no_split_dollar_star =3D 0; > - if (l) > - { > -*************** > -*** 7848,7851 **** > ---- 7850,7857 ---- > - according to POSIX.2, this expands to a list of the positional > - parameters no matter what IFS is set to. */ > -+ /* XXX - what to do when in a context where word splitting is not > -+ performed? Even when IFS is not the default, posix seems to imply > -+ that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2 > -+ here. */ > - temp =3D string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (q= uoted|Q_DOUBLE_QUOTES) : quoted); > - =20 > -*************** > -*** 8817,8820 **** > ---- 8823,8827 ---- > - { > - char *ifs_chars; > -+ char *tstring; > - =20 > - ifs_chars =3D (quoted_dollar_at || has_dollar_at) ? ifs_value : (c= har *)NULL; > -*************** > -*** 8831,8834 **** > ---- 8838,8865 ---- > - if (split_on_spaces) > - list =3D list_string (istring, " ", 1); /* XXX quoted =3D=3D 1? */ > -+ /* If we have $@ (has_dollar_at !=3D 0) and we are in a context wh= ere we > -+ don't want to split the result (W_NOSPLIT2), and we are not quoted, > -+ we have already separated the arguments with the first character of > -+ $IFS. In this case, we want to return a list with a single word > -+ with the separator possibly replaced with a space (it's what other > -+ shells seem to do). > -+ quoted_dollar_at is internal to this function and is set if we are > -+ passed an argument that is unquoted (quoted =3D=3D 0) but we encounter= a > -+ double-quoted $@ while expanding it. */ > -+ else if (has_dollar_at && quoted_dollar_at =3D=3D 0 && ifs_chars &= & quoted =3D=3D 0 && (word->flags & W_NOSPLIT2)) > -+ { > -+ /* Only split and rejoin if we have to */ > -+ if (*ifs_chars && *ifs_chars !=3D ' ') > -+ { > -+ list =3D list_string (istring, *ifs_chars ? ifs_chars : " ", 1); > -+ tstring =3D string_list (list); > -+ } > -+ else > -+ tstring =3D istring; > -+ tword =3D make_bare_word (tstring); > -+ if (tstring !=3D istring) > -+ free (tstring); > -+ goto set_word_flags; > -+ } > - else if (has_dollar_at && ifs_chars) > - list =3D list_string (istring, *ifs_chars ? ifs_chars : " ", 1); > -*************** > -*** 8836,8839 **** > ---- 8867,8871 ---- > - { > - tword =3D make_bare_word (istring); > -+ set_word_flags: > - if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state =3D= =3D WHOLLY_QUOTED)) > - tword->flags |=3D W_QUOTED; > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 13 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 14 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-015 b/src/patches/bash/bash43-015 > deleted file mode 100644 > index 9c4e5ea48..000000000 > --- a/src/patches/bash/bash43-015 > +++ /dev/null > @@ -1,58 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-015 > - > -Bug-Reported-by: Clark Wang > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg0= 0095.html > - > -Bug-Description: > - > -When completing directory names, the directory name is dequoted twice. > -This causes problems for directories with single and double quotes in > -their names. > - > -Patch (apply with `patch -p0'): > -*** ../bash-4.3-patched/bashline.c 2014-02-09 19:56:58.000000000 -0500 > ---- bashline.c 2014-04-25 14:57:52.000000000 -0400 > -*************** > -*** 4168,4174 **** > - =20 > - qc =3D rl_dispatching ? rl_completion_quote_character : 0; =20 > -! dfn =3D bash_dequote_filename ((char *)text, qc); > - m1 =3D rl_completion_matches (dfn, rl_filename_completion_function); > -! free (dfn); > - =20 > - if (m1 =3D=3D 0 || m1[0] =3D=3D 0) > ---- 4209,4222 ---- > - =20 > - qc =3D rl_dispatching ? rl_completion_quote_character : 0; =20 > -! /* If rl_completion_found_quote !=3D 0, rl_completion_matches will cal= l the > -! filename dequoting function, causing the directory name to be dequo= ted > -! twice. */ > -! if (rl_dispatching && rl_completion_found_quote =3D=3D 0) > -! dfn =3D bash_dequote_filename ((char *)text, qc); > -! else > -! dfn =3D (char *)text; > - m1 =3D rl_completion_matches (dfn, rl_filename_completion_function); > -! if (dfn !=3D text) > -! free (dfn); > - =20 > - if (m1 =3D=3D 0 || m1[0] =3D=3D 0) > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 14 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 15 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-016 b/src/patches/bash/bash43-016 > deleted file mode 100644 > index 882d5939b..000000000 > --- a/src/patches/bash/bash43-016 > +++ /dev/null > @@ -1,132 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-016 > - > -Bug-Reported-by: Pierre Gaston > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg0= 0100.html > - > -Bug-Description: > - > -An extended glob pattern containing a slash (`/') causes the globbing code > -to misinterpret it as a directory separator. > - > -Patch (apply with `patch -p0'): > -*** ../bash-4.3-patched/lib/glob/glob.c 2014-03-28 10:54:23.000000000 -0400 > ---- lib/glob/glob.c 2014-05-02 10:24:28.000000000 -0400 > -*************** > -*** 124,127 **** > ---- 124,129 ---- > - extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); > - =20 > -+ extern char *glob_dirscan __P((char *, int)); > -+=20 > - /* Compile `glob_loop.c' for single-byte characters. */ > - #define CHAR unsigned char > -*************** > -*** 188,191 **** > ---- 190,196 ---- > - pe =3D glob_patscan (pp, se, 0); /* end of extglob pattern (( */ > - /* we should check for invalid extglob pattern here */ > -+ if (pe =3D=3D 0) > -+ return 0; > -+=20 > - /* if pe !=3D se we have more of the pattern at the end of the extglob > - pattern. Check the easy case first ( */ > -*************** > -*** 1016,1020 **** > - char **result; > - unsigned int result_size; > -! char *directory_name, *filename, *dname; > - unsigned int directory_len; > - int free_dirname; /* flag */ > ---- 1021,1025 ---- > - char **result; > - unsigned int result_size; > -! char *directory_name, *filename, *dname, *fn; > - unsigned int directory_len; > - int free_dirname; /* flag */ > -*************** > -*** 1032,1035 **** > ---- 1037,1052 ---- > - /* Find the filename. */ > - filename =3D strrchr (pathname, '/'); > -+ #if defined (EXTENDED_GLOB) > -+ if (filename && extended_glob) > -+ { > -+ fn =3D glob_dirscan (pathname, '/'); > -+ #if DEBUG_MATCHING > -+ if (fn !=3D filename) > -+ fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) !=3D filename (%= s)\n", fn ? fn : "(null)", filename); > -+ #endif > -+ filename =3D fn; > -+ } > -+ #endif > -+=20 > - if (filename =3D=3D NULL) > - { > -*** ../bash-4.3-patched/lib/glob/gmisc.c 2014-03-28 10:54:23.000000000 -04= 00 > ---- lib/glob/gmisc.c 2014-05-02 09:35:57.000000000 -0400 > -*************** > -*** 43,46 **** > ---- 43,48 ---- > - #define WRPAREN L')' > - =20 > -+ extern char *glob_patscan __P((char *, char *, int)); > -+=20 > - /* Return 1 of the first character of WSTRING could match the first > - character of pattern WPAT. Wide character version. */ > -*************** > -*** 376,377 **** > ---- 378,410 ---- > - return matlen; > - } > -+=20 > -+ /* Skip characters in PAT and return the final occurrence of DIRSEP. Th= is > -+ is only called when extended_glob is set, so we have to skip over ext= glob > -+ patterns x(...) */ > -+ char * > -+ glob_dirscan (pat, dirsep) > -+ char *pat; > -+ int dirsep; > -+ { > -+ char *p, *d, *pe, *se; > -+=20 > -+ d =3D pe =3D se =3D 0; > -+ for (p =3D pat; p && *p; p++) > -+ { > -+ if (extglob_pattern_p (p)) > -+ { > -+ if (se =3D=3D 0) > -+ se =3D p + strlen (p) - 1; > -+ pe =3D glob_patscan (p + 2, se, 0); > -+ if (pe =3D=3D 0) > -+ continue; > -+ else if (*pe =3D=3D 0) > -+ break; > -+ p =3D pe - 1; /* will do increment above */ > -+ continue; > -+ } > -+ if (*p =3D=3D dirsep) > -+ d =3D p; > -+ } > -+ return d; > -+ } > - > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 15 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 16 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-017 b/src/patches/bash/bash43-017 > deleted file mode 100644 > index 4016fb934..000000000 > --- a/src/patches/bash/bash43-017 > +++ /dev/null > @@ -1,51 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-017 > - > -Bug-Reported-by: Dan Douglas > -Bug-Reference-ID: <7781746.RhfoTROLxF(a)smorgbox> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg0= 0026.html > - > -Bug-Description: > - > -The code that creates local variables should not clear the `invisible' > -attribute when returning an existing local variable. Let the code that > -actually assigns a value clear it. > - > -Patch (apply with `patch -p0'): > -*** ../bash-4.3-patched/variables.c 2014-02-14 11:55:12.000000000 -0500 > ---- variables.c 2014-05-07 10:53:57.000000000 -0400 > -*************** > -*** 2198,2205 **** > - old_var =3D find_variable (name); > - if (old_var && local_p (old_var) && old_var->context =3D=3D variable_c= ontext) > -! { > -! VUNSETATTR (old_var, att_invisible); /* XXX */ > -! return (old_var); > -! } > - =20 > - was_tmpvar =3D old_var && tempvar_p (old_var); > ---- 2260,2264 ---- > - old_var =3D find_variable (name); > - if (old_var && local_p (old_var) && old_var->context =3D=3D variable_c= ontext) > -! return (old_var); > - =20 > - was_tmpvar =3D old_var && tempvar_p (old_var); > - > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 16 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 17 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-018 b/src/patches/bash/bash43-018 > deleted file mode 100644 > index 39499f663..000000000 > --- a/src/patches/bash/bash43-018 > +++ /dev/null > @@ -1,44 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-018 > - > -Bug-Reported-by: Geir Hauge > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg0= 0040.html > - > -Bug-Description: > - > -When assigning an array variable using the compound assignment syntax, > -but using `declare' with the rhs of the compound assignment quoted, the > -shell did not mark the variable as visible after successfully performing > -the assignment. > - > -Patch (apply with `patch -p0'): > -*** ../bash-4.3-patched/arrayfunc.c 2014-03-28 10:54:21.000000000 -0400 > ---- arrayfunc.c 2014-05-12 11:19:00.000000000 -0400 > -*************** > -*** 180,183 **** > ---- 180,184 ---- > - FREE (newval); > - =20 > -+ VUNSETATTR (entry, att_invisible); /* no longer invisible */ > - return (entry); > - } > - > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 17 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 18 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-019 b/src/patches/bash/bash43-019 > deleted file mode 100644 > index a93714beb..000000000 > --- a/src/patches/bash/bash43-019 > +++ /dev/null > @@ -1,84 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-019 > - > -Bug-Reported-by: John Lenton > -Bug-Reference-ID: > -Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/131= 7476 > - > -Bug-Description: > - > -The -t timeout option to `read' does not work when the -e option is used. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/lib/readline/input.c 2014-01-10 15:07:08.000000000= -0500 > ---- lib/readline/input.c 2014-05-22 18:40:59.000000000 -0400 > -*************** > -*** 535,540 **** > ---- 538,551 ---- > - else if (_rl_caught_signal =3D=3D SIGHUP || _rl_caught_signal =3D= =3D SIGTERM) > - return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); > -+ /* keyboard-generated signals of interest */ > - else if (_rl_caught_signal =3D=3D SIGINT || _rl_caught_signal =3D= =3D SIGQUIT) > - RL_CHECK_SIGNALS (); > -+ /* non-keyboard-generated signals of interest */ > -+ else if (_rl_caught_signal =3D=3D SIGALRM > -+ #if defined (SIGVTALRM) > -+ || _rl_caught_signal =3D=3D SIGVTALRM > -+ #endif > -+ ) > -+ RL_CHECK_SIGNALS (); > - =20 > - if (rl_signal_event_hook) > -*** ../bash-4.3-patched/builtins/read.def 2013-09-02 11:54:00.000000000 -0= 400 > ---- builtins/read.def 2014-05-08 11:43:35.000000000 -0400 > -*************** > -*** 443,447 **** > - #if defined (READLINE) > - if (edit) > -! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); > - #endif > - falarm (tmsec, tmusec); > ---- 443,450 ---- > - #if defined (READLINE) > - if (edit) > -! { > -! add_unwind_protect (reset_attempted_completion_function, (char *)NULL= ); > -! add_unwind_protect (bashline_reset_event_hook, (char *)NULL); > -! } > - #endif > - falarm (tmsec, tmusec); > -*************** > -*** 1022,1025 **** > ---- 1025,1029 ---- > - old_attempted_completion_function =3D rl_attempted_completion_function; > - rl_attempted_completion_function =3D (rl_completion_func_t *)NULL; > -+ bashline_set_event_hook (); > - if (itext) > - { > -*************** > -*** 1033,1036 **** > ---- 1037,1041 ---- > - rl_attempted_completion_function =3D old_attempted_completion_function; > - old_attempted_completion_function =3D (rl_completion_func_t *)NULL; > -+ bashline_reset_event_hook (); > - =20 > - if (ret =3D=3D 0) > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 18 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 19 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-020 b/src/patches/bash/bash43-020 > deleted file mode 100644 > index 5f533ef8d..000000000 > --- a/src/patches/bash/bash43-020 > +++ /dev/null > @@ -1,110 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-020 > - > -Bug-Reported-by: Jared Yanovich > -Bug-Reference-ID: <20140417073654.GB26875(a)nightderanger.psc.edu> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg0= 0065.html > - > -Bug-Description: > - > -When PS2 contains a command substitution, here-documents entered in an > -interactive shell can sometimes cause a segmentation fault. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500 > ---- shell.h 2014-06-03 09:24:28.000000000 -0400 > -*************** > -*** 169,173 **** > - int expand_aliases; > - int echo_input_at_read; > -! =20 > - } sh_parser_state_t; > - =20 > ---- 169,174 ---- > - int expand_aliases; > - int echo_input_at_read; > -! int need_here_doc; > -!=20 > - } sh_parser_state_t; > - =20 > -*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400 > ---- parse.y 2014-04-30 09:27:59.000000000 -0400 > -*************** > -*** 2643,2647 **** > - =20 > - r =3D 0; > -! while (need_here_doc) > - { > - parser_state |=3D PST_HEREDOC; > ---- 2643,2647 ---- > - =20 > - r =3D 0; > -! while (need_here_doc > 0) > - { > - parser_state |=3D PST_HEREDOC; > -*************** > -*** 6076,6079 **** > ---- 6076,6080 ---- > - ps->expand_aliases =3D expand_aliases; > - ps->echo_input_at_read =3D echo_input_at_read; > -+ ps->need_here_doc =3D need_here_doc; > - =20 > - ps->token =3D token; > -*************** > -*** 6124,6127 **** > ---- 6125,6129 ---- > - expand_aliases =3D ps->expand_aliases; > - echo_input_at_read =3D ps->echo_input_at_read; > -+ need_here_doc =3D ps->need_here_doc; > - =20 > - FREE (token); > -*** ../bash-4.3-patched/y.tab.c 2014-04-07 11:56:12.000000000 -0400 > ---- y.tab.c 2014-07-30 09:55:57.000000000 -0400 > -*************** > -*** 4955,4959 **** > - =20 > - r =3D 0; > -! while (need_here_doc) > - { > - parser_state |=3D PST_HEREDOC; > ---- 5151,5155 ---- > - =20 > - r =3D 0; > -! while (need_here_doc > 0) > - { > - parser_state |=3D PST_HEREDOC; > -*************** > -*** 8388,8391 **** > ---- 8584,8588 ---- > - ps->expand_aliases =3D expand_aliases; > - ps->echo_input_at_read =3D echo_input_at_read; > -+ ps->need_here_doc =3D need_here_doc; > - =20 > - ps->token =3D token; > -*************** > -*** 8436,8439 **** > ---- 8633,8637 ---- > - expand_aliases =3D ps->expand_aliases; > - echo_input_at_read =3D ps->echo_input_at_read; > -+ need_here_doc =3D ps->need_here_doc; > - =20 > - FREE (token); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 19 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 20 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-021 b/src/patches/bash/bash43-021 > deleted file mode 100644 > index fd1c945ec..000000000 > --- a/src/patches/bash/bash43-021 > +++ /dev/null > @@ -1,52 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-021 > - > -Bug-Reported-by: Jared Yanovich > -Bug-Reference-ID: <20140625225019.GJ17044(a)nightderanger.psc.edu> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg0= 0070.html > - > -Bug-Description: > - > -When the readline `revert-all-at-newline' option is set, pressing newline > -when the current line is one retrieved from history results in a double fr= ee > -and a segmentation fault. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 = -0400 > ---- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400 > -*************** > -*** 462,465 **** > ---- 462,466 ---- > - /* Set up rl_line_buffer and other variables from history entry */ > - rl_replace_from_history (entry, 0); /* entry->line is now current */ > -+ entry->data =3D 0; /* entry->data is now current undo list */ > - /* Undo all changes to this history entry */ > - while (rl_undo_list) > -*************** > -*** 469,473 **** > - FREE (entry->line); > - entry->line =3D savestring (rl_line_buffer); > -- entry->data =3D 0; > - } > - entry =3D previous_history (); > ---- 470,473 ---- > - > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 20 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 21 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-022 b/src/patches/bash/bash43-022 > deleted file mode 100644 > index 7ce39ec0a..000000000 > --- a/src/patches/bash/bash43-022 > +++ /dev/null > @@ -1,56 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-022 > - > -Bug-Reported-by: scorp.dev.null(a)gmail.com > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg0= 0061.html > - > -Bug-Description: > - > -Using nested pipelines within loops with the `lastpipe' option set can res= ult > -in a segmentation fault. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500 > ---- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400 > -*************** > -*** 2410,2414 **** > - lstdin =3D wait_for (lastpid); > - #if defined (JOB_CONTROL) > -! exec_result =3D job_exit_status (lastpipe_jid); > - #endif > - unfreeze_jobs_list (); > ---- 2425,2438 ---- > - lstdin =3D wait_for (lastpid); > - #if defined (JOB_CONTROL) > -! /* If wait_for removes the job from the jobs table, use result of = last > -! command as pipeline's exit status as usual. The jobs list can get > -! frozen and unfrozen at inconvenient times if there are multiple pipeli= nes > -! running simultaneously. */ > -! if (INVALID_JOB (lastpipe_jid) =3D=3D 0) > -! exec_result =3D job_exit_status (lastpipe_jid); > -! else if (pipefail_opt) > -! exec_result =3D exec_result | lstdin; /* XXX */ > -! /* otherwise we use exec_result */ > -! =20 > - #endif > - unfreeze_jobs_list (); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 21 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 22 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-023 b/src/patches/bash/bash43-023 > deleted file mode 100644 > index d1e4e9d7c..000000000 > --- a/src/patches/bash/bash43-023 > +++ /dev/null > @@ -1,104 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-023 > - > -Bug-Reported-by: Tim Friske > -Bug-Reference-ID: > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg0= 0056.html > - > -Bug-Description: > - > -Bash does not correctly parse process substitution constructs that contain > -unbalanced parentheses as part of the contained command. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500 > ---- subst.h 2014-07-20 17:25:01.000000000 -0400 > -*************** > -*** 83,87 **** > - Start extracting at (SINDEX) as if we had just seen "<(". > - Make (SINDEX) get the position just after the matching ")". */ > -! extern char *extract_process_subst __P((char *, char *, int *)); > - #endif /* PROCESS_SUBSTITUTION */ > - =20 > ---- 83,87 ---- > - Start extracting at (SINDEX) as if we had just seen "<(". > - Make (SINDEX) get the position just after the matching ")". */ > -! extern char *extract_process_subst __P((char *, char *, int *, int)); > - #endif /* PROCESS_SUBSTITUTION */ > - =20 > -*** ../bash-4.3-patched/subst.c 2014-05-15 08:26:45.000000000 -0400 > ---- subst.c 2014-07-20 17:26:44.000000000 -0400 > -*************** > -*** 1193,1202 **** > - Make (SINDEX) get the position of the matching ")". */ /*))*/ > - char * > -! extract_process_subst (string, starter, sindex) > - char *string; > - char *starter; > - int *sindex; > - { > - return (extract_delimited_string (string, sindex, starter, "(", ")", S= X_COMMAND)); > - } > - #endif /* PROCESS_SUBSTITUTION */ > ---- 1193,1208 ---- > - Make (SINDEX) get the position of the matching ")". */ /*))*/ > - char * > -! extract_process_subst (string, starter, sindex, xflags) > - char *string; > - char *starter; > - int *sindex; > -+ int xflags; > - { > -+ #if 0 > - return (extract_delimited_string (string, sindex, starter, "(", ")", S= X_COMMAND)); > -+ #else > -+ xflags |=3D (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); > -+ return (xparse_dolparen (string, string+*sindex, sindex, xflags)); > -+ #endif > - } > - #endif /* PROCESS_SUBSTITUTION */ > -*************** > -*** 1786,1790 **** > - if (string[si] =3D=3D '\0') > - CQ_RETURN(si); > -! temp =3D extract_process_subst (string, (c =3D=3D '<') ? "<(" : ">(",= &si); > - free (temp); /* no SX_ALLOC here */ > - i =3D si; > ---- 1792,1796 ---- > - if (string[si] =3D=3D '\0') > - CQ_RETURN(si); > -! temp =3D extract_process_subst (string, (c =3D=3D '<') ? "<(" : ">(",= &si, 0); > - free (temp); /* no SX_ALLOC here */ > - i =3D si; > -*************** > -*** 8250,8254 **** > - t_index =3D sindex + 1; /* skip past both '<' and LPAREN */ > - =20 > -! temp1 =3D extract_process_subst (string, (c =3D=3D '<') ? "<(" : ">= (", &t_index); /*))*/ > - sindex =3D t_index; > - =20 > ---- 8256,8260 ---- > - t_index =3D sindex + 1; /* skip past both '<' and LPAREN */ > - =20 > -! temp1 =3D extract_process_subst (string, (c =3D=3D '<') ? "<(" : ">= (", &t_index, 0); /*))*/ > - sindex =3D t_index; > - =20 > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 22 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 23 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-024 b/src/patches/bash/bash43-024 > deleted file mode 100644 > index a24b8fbbc..000000000 > --- a/src/patches/bash/bash43-024 > +++ /dev/null > @@ -1,54 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-024 > - > -Bug-Reported-by: Corentin Peuvrel > -Bug-Reference-ID: <53CE9E5D.6050203(a)pom-monitoring.com> > -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-07/msg0= 0021.html > - > -Bug-Description: > - > -Indirect variable references do not work correctly if the reference > -variable expands to an array reference using a subscript other than 0 > -(e.g., foo=3D'bar[1]' ; echo ${!foo}). > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/subst.c 2014-06-03 09:32:44.000000000 -0400 > ---- subst.c 2014-07-23 09:58:19.000000000 -0400 > -*************** > -*** 7375,7379 **** > - =20 > - if (want_indir) > -! tdesc =3D parameter_brace_expand_indir (name + 1, var_is_special, qu= oted, quoted_dollar_atp, contains_dollar_at); > - else > - tdesc =3D parameter_brace_expand_word (name, var_is_special, quoted,= PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); > ---- 7445,7455 ---- > - =20 > - if (want_indir) > -! { > -! tdesc =3D parameter_brace_expand_indir (name + 1, var_is_special, = quoted, quoted_dollar_atp, contains_dollar_at); > -! /* Turn off the W_ARRAYIND flag because there is no way for this f= unction > -! to return the index we're supposed to be using. */ > -! if (tdesc && tdesc->flags) > -! tdesc->flags &=3D ~W_ARRAYIND; > -! } > - else > - tdesc =3D parameter_brace_expand_word (name, var_is_special, quoted,= PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 23 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 24 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-025 b/src/patches/bash/bash43-025 > deleted file mode 100644 > index 721aca030..000000000 > --- a/src/patches/bash/bash43-025 > +++ /dev/null > @@ -1,123 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-025 > - > -Bug-Reported-by: Stephane Chazelas > -Bug-Reference-ID: > -Bug-Reference-URL: > - > -Bug-Description: > - > -Under certain circumstances, bash will execute user code while processing = the > -environment for exported function definitions. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/builtins/common.h 2013-07-08 16:54:47.000000000 -0= 400 > ---- builtins/common.h 2014-09-12 14:25:47.000000000 -0400 > -*************** > -*** 34,37 **** > ---- 49,54 ---- > - #define SEVAL_PARSEONLY 0x020 > - #define SEVAL_NOLONGJMP 0x040 > -+ #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */ > -+ #define SEVAL_ONECMD 0x100 /* only allow a single command */ > - =20 > - /* Flags for describe_command, shared between type.def and command.def */ > -*** ../bash-4.3-patched/builtins/evalstring.c 2014-02-11 09:42:10.00000000= 0 -0500 > ---- builtins/evalstring.c 2014-09-14 14:15:13.000000000 -0400 > -*************** > -*** 309,312 **** > ---- 313,324 ---- > - struct fd_bitmap *bitmap; > - =20 > -+ if ((flags & SEVAL_FUNCDEF) && command->type !=3D cm_function_def) > -+ { > -+ internal_warning ("%s: ignoring function definition attempt", from_f= ile); > -+ should_jump_to_top_level =3D 0; > -+ last_result =3D last_command_exit_value =3D EX_BADUSAGE; > -+ break; > -+ } > -+=20 > - bitmap =3D new_fd_bitmap (FD_BITMAP_SIZE); > - begin_unwind_frame ("pe_dispose"); > -*************** > -*** 369,372 **** > ---- 381,387 ---- > - dispose_fd_bitmap (bitmap); > - discard_unwind_frame ("pe_dispose"); > -+=20 > -+ if (flags & SEVAL_ONECMD) > -+ break; > - } > - } > -*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400 > ---- variables.c 2014-09-14 14:23:35.000000000 -0400 > -*************** > -*** 359,369 **** > - strcpy (temp_string + char_index + 1, string); > - =20 > -! if (posixly_correct =3D=3D 0 || legal_identifier (name)) > -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST); > -!=20 > -! /* Ancient backwards compatibility. Old versions of bash exported > -! functions like name()=3D() {...} */ > -! if (name[char_index - 1] =3D=3D ')' && name[char_index - 2] =3D=3D '(= ') > -! name[char_index - 2] =3D '\0'; > - =20 > - if (temp_var =3D find_function (name)) > ---- 364,372 ---- > - strcpy (temp_string + char_index + 1, string); > - =20 > -! /* Don't import function names that are invalid identifiers from the > -! environment, though we still allow them to be defined as shell > -! variables. */ > -! if (legal_identifier (name)) > -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEV= AL_FUNCDEF|SEVAL_ONECMD); > - =20 > - if (temp_var =3D find_function (name)) > -*************** > -*** 382,389 **** > - report_error (_("error importing function definition for `%s'"), = name); > - } > --=20 > -- /* ( */ > -- if (name[char_index - 1] =3D=3D ')' && name[char_index - 2] =3D=3D '\= 0') > -- name[char_index - 2] =3D '('; /* ) */ > - } > - #if defined (ARRAY_VARS) > ---- 385,388 ---- > -*** ../bash-4.3-patched/subst.c 2014-08-11 11:16:35.000000000 -0400 > ---- subst.c 2014-09-12 15:31:04.000000000 -0400 > -*************** > -*** 8048,8052 **** > - goto return0; > - } > -! else if (var =3D find_variable_last_nameref (temp1)) > - { > - temp =3D nameref_cell (var); > ---- 8118,8124 ---- > - goto return0; > - } > -! else if (var && (invisible_p (var) || var_isset (var) =3D=3D 0)) > -! temp =3D (char *)NULL; > -! else if ((var =3D find_variable_last_nameref (temp1)) && var_isset= (var) && invisible_p (var) =3D=3D 0) > - { > - temp =3D nameref_cell (var); > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 24 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 25 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-026 b/src/patches/bash/bash43-026 > deleted file mode 100644 > index e48141b01..000000000 > --- a/src/patches/bash/bash43-026 > +++ /dev/null > @@ -1,60 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-026 > - > -Bug-Reported-by: Tavis Ormandy > -Bug-Reference-ID: > -Bug-Reference-URL: http://twitter.com/taviso/statuses/514887394294652929 > - > -Bug-Description: > - > -Under certain circumstances, bash can incorrectly save a lookahead charact= er and > -return it on a subsequent call, even when reading a new line. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3.25/parse.y 2014-07-30 10:14:31.000000000 -0400 > ---- parse.y 2014-09-25 20:20:21.000000000 -0400 > -*************** > -*** 2954,2957 **** > ---- 2954,2959 ---- > - word_desc_to_read =3D (WORD_DESC *)NULL; > - =20 > -+ eol_ungetc_lookahead =3D 0; > -+=20 > - current_token =3D '\n'; /* XXX */ > - last_read_token =3D '\n'; > -*** ../bash-4.3.25/y.tab.c 2014-07-30 10:14:32.000000000 -0400 > ---- y.tab.c 2014-09-25 20:21:48.000000000 -0400 > -*************** > -*** 5266,5269 **** > ---- 5266,5271 ---- > - word_desc_to_read =3D (WORD_DESC *)NULL; > - =20 > -+ eol_ungetc_lookahead =3D 0; > -+=20 > - current_token =3D '\n'; /* XXX */ > - last_read_token =3D '\n'; > -*************** > -*** 8540,8542 **** > - } > - #endif /* HANDLE_MULTIBYTE */ > --=20 > ---- 8542,8543 ---- > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 25 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 26 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-027 b/src/patches/bash/bash43-027 > deleted file mode 100644 > index ef48bd82d..000000000 > --- a/src/patches/bash/bash43-027 > +++ /dev/null > @@ -1,221 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-027 > - > -Bug-Reported-by: Florian Weimer > -Bug-Reference-ID: > -Bug-Reference-URL: > - > -Bug-Description: > - > -This patch changes the encoding bash uses for exported functions to avoid > -clashes with shell variables and to avoid depending only on an environment > -variable's contents to determine whether or not to interpret it as a shell > -function. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3.26/variables.c 2014-09-25 23:02:18.000000000 -0400 > ---- variables.c 2014-09-27 20:52:04.000000000 -0400 > -*************** > -*** 84,87 **** > ---- 84,92 ---- > - #define ifsname(s) ((s)[0] =3D=3D 'I' && (s)[1] =3D=3D 'F' && (s)[2] =3D= =3D 'S' && (s)[3] =3D=3D '\0') > - =20 > -+ #define BASHFUNC_PREFIX "BASH_FUNC_" > -+ #define BASHFUNC_PREFLEN 10 /* =3D=3D strlen(BASHFUNC_PREFIX */ > -+ #define BASHFUNC_SUFFIX "%%" > -+ #define BASHFUNC_SUFFLEN 2 /* =3D=3D strlen(BASHFUNC_SUFFIX) */ > -+=20 > - extern char **environ; > - =20 > -*************** > -*** 280,284 **** > - static void dispose_temporary_env __P((sh_free_func_t *)); =20 > - =20 > -! static inline char *mk_env_string __P((const char *, const char *)); > - static char **make_env_array_from_var_list __P((SHELL_VAR **)); > - static char **make_var_export_array __P((VAR_CONTEXT *)); > ---- 285,289 ---- > - static void dispose_temporary_env __P((sh_free_func_t *)); =20 > - =20 > -! static inline char *mk_env_string __P((const char *, const char *, int)); > - static char **make_env_array_from_var_list __P((SHELL_VAR **)); > - static char **make_var_export_array __P((VAR_CONTEXT *)); > -*************** > -*** 350,369 **** > - /* If exported function, define it now. Don't import functions fr= om > - the environment in privileged mode. */ > -! if (privmode =3D=3D 0 && read_but_dont_execute =3D=3D 0 && STREQN = ("() {", string, 4)) > - { > - string_length =3D strlen (string); > -! temp_string =3D (char *)xmalloc (3 + string_length + char_index); > - =20 > -! strcpy (temp_string, name); > -! temp_string[char_index] =3D ' '; > -! strcpy (temp_string + char_index + 1, string); > - =20 > - /* Don't import function names that are invalid identifiers from the > - environment, though we still allow them to be defined as shell > - variables. */ > -! if (legal_identifier (name)) > -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEV= AL_FUNCDEF|SEVAL_ONECMD); > - =20 > -! if (temp_var =3D find_function (name)) > - { > - VSETATTR (temp_var, (att_exported|att_imported)); > ---- 355,385 ---- > - /* If exported function, define it now. Don't import functions fr= om > - the environment in privileged mode. */ > -! if (privmode =3D=3D 0 && read_but_dont_execute =3D=3D 0 &&=20 > -! STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) && > -! STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) = && > -! STREQN ("() {", string, 4)) > - { > -+ size_t namelen; > -+ char *tname; /* desired imported function name */ > -+=20 > -+ namelen =3D char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN; > -+=20 > -+ tname =3D name + BASHFUNC_PREFLEN; /* start of func name */ > -+ tname[namelen] =3D '\0'; /* now tname =3D=3D func name */ > -+=20 > - string_length =3D strlen (string); > -! temp_string =3D (char *)xmalloc (namelen + string_length + 2); > - =20 > -! memcpy (temp_string, tname, namelen); > -! temp_string[namelen] =3D ' '; > -! memcpy (temp_string + namelen + 1, string, string_length + 1); > - =20 > - /* Don't import function names that are invalid identifiers from the > - environment, though we still allow them to be defined as shell > - variables. */ > -! if (absolute_program (tname) =3D=3D 0 && (posixly_correct =3D=3D 0 ||= legal_identifier (tname))) > -! parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SE= VAL_FUNCDEF|SEVAL_ONECMD); > - =20 > -! if (temp_var =3D find_function (tname)) > - { > - VSETATTR (temp_var, (att_exported|att_imported)); > -*************** > -*** 378,383 **** > - } > - last_command_exit_value =3D 1; > -! report_error (_("error importing function definition for `%s'"), = name); > - } > - } > - #if defined (ARRAY_VARS) > ---- 394,402 ---- > - } > - last_command_exit_value =3D 1; > -! report_error (_("error importing function definition for `%s'"), = tname); > - } > -+=20 > -+ /* Restore original suffix */ > -+ tname[namelen] =3D BASHFUNC_SUFFIX[0]; > - } > - #if defined (ARRAY_VARS) > -*************** > -*** 2955,2959 **** > - =20 > - INVALIDATE_EXPORTSTR (var); > -! var->exportstr =3D mk_env_string (name, value); > - =20 > - array_needs_making =3D 1; > ---- 2974,2978 ---- > - =20 > - INVALIDATE_EXPORTSTR (var); > -! var->exportstr =3D mk_env_string (name, value, 0); > - =20 > - array_needs_making =3D 1; > -*************** > -*** 3853,3871 **** > - =20 > - static inline char * > -! mk_env_string (name, value) > - const char *name, *value; > - { > -! int name_len, value_len; > -! char *p; > - =20 > - name_len =3D strlen (name); > - value_len =3D STRLEN (value); > -! p =3D (char *)xmalloc (2 + name_len + value_len); > -! strcpy (p, name); > -! p[name_len] =3D '=3D'; > - if (value && *value) > -! strcpy (p + name_len + 1, value); > - else > -! p[name_len + 1] =3D '\0'; > - return (p); > - } > ---- 3872,3911 ---- > - =20 > - static inline char * > -! mk_env_string (name, value, isfunc) > - const char *name, *value; > -+ int isfunc; > - { > -! size_t name_len, value_len; > -! char *p, *q; > - =20 > - name_len =3D strlen (name); > - value_len =3D STRLEN (value); > -!=20 > -! /* If we are exporting a shell function, construct the encoded function > -! name. */ > -! if (isfunc && value) > -! { > -! p =3D (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFF= LEN + value_len + 2); > -! q =3D p; > -! memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN); > -! q +=3D BASHFUNC_PREFLEN; > -! memcpy (q, name, name_len); > -! q +=3D name_len; > -! memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN); > -! q +=3D BASHFUNC_SUFFLEN; > -! } > -! else > -! { > -! p =3D (char *)xmalloc (2 + name_len + value_len); > -! memcpy (p, name, name_len); > -! q =3D p + name_len; > -! } > -!=20 > -! q[0] =3D '=3D'; > - if (value && *value) > -! memcpy (q + 1, value, value_len + 1); > - else > -! q[1] =3D '\0'; > -!=20 > - return (p); > - } > -*************** > -*** 3953,3957 **** > - using the cached exportstr... */ > - list[list_index] =3D USE_EXPORTSTR ? savestring (value) > -! : mk_env_string (var->name, value); > - =20 > - if (USE_EXPORTSTR =3D=3D 0) > ---- 3993,3997 ---- > - using the cached exportstr... */ > - list[list_index] =3D USE_EXPORTSTR ? savestring (value) > -! : mk_env_string (var->name, value, function_p (var)); > - =20 > - if (USE_EXPORTSTR =3D=3D 0) > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 26 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 27 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-028 b/src/patches/bash/bash43-028 > deleted file mode 100644 > index 7448cf814..000000000 > --- a/src/patches/bash/bash43-028 > +++ /dev/null > @@ -1,2265 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-028 > - > -Bug-Reported-by: Florian Weimer > -Bug-Reference-ID: > -Bug-Reference-URL: > - > -Bug-Description: > - > -There are two local buffer overflows in parse.y that can cause the shell > -to dump core when given many here-documents attached to a single command > -or many nested loops. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3-patched/parse.y 2014-09-25 23:02:35.000000000 -0400 > ---- parse.y 2014-09-29 16:47:03.000000000 -0400 > -*************** > -*** 169,172 **** > ---- 169,175 ---- > - static int reserved_word_acceptable __P((int)); > - static int yylex __P((void)); > -+=20 > -+ static void push_heredoc __P((REDIRECT *)); > -+ static char *mk_alexpansion __P((char *)); > - static int alias_expand_token __P((char *)); > - static int time_command_acceptable __P((void)); > -*************** > -*** 266,270 **** > - /* Variables to manage the task of reading here documents, because we ne= ed to > - defer the reading until after a complete command has been collected. = */ > -! static REDIRECT *redir_stack[10]; > - int need_here_doc; > - =20 > ---- 269,275 ---- > - /* Variables to manage the task of reading here documents, because we ne= ed to > - defer the reading until after a complete command has been collected. = */ > -! #define HEREDOC_MAX 16 > -!=20 > -! static REDIRECT *redir_stack[HEREDOC_MAX]; > - int need_here_doc; > - =20 > -*************** > -*** 308,312 **** > - index is decremented after a case, select, or for command is parsed. = */ > - #define MAX_CASE_NEST 128 > -! static int word_lineno[MAX_CASE_NEST]; > - static int word_top =3D -1; > - =20 > ---- 313,317 ---- > - index is decremented after a case, select, or for command is parsed. = */ > - #define MAX_CASE_NEST 128 > -! static int word_lineno[MAX_CASE_NEST+1]; > - static int word_top =3D -1; > - =20 > -*************** > -*** 521,525 **** > - redir.filename =3D $2; > - $$ =3D make_redirection (source, r_reading_until, redir, 0); > -! redir_stack[need_here_doc++] =3D $$; > - } > - | NUMBER LESS_LESS WORD > ---- 526,530 ---- > - redir.filename =3D $2; > - $$ =3D make_redirection (source, r_reading_until, redir, 0); > -! push_heredoc ($$); > - } > - | NUMBER LESS_LESS WORD > -*************** > -*** 528,532 **** > - redir.filename =3D $3; > - $$ =3D make_redirection (source, r_reading_until, redir, 0); > -! redir_stack[need_here_doc++] =3D $$; > - } > - | REDIR_WORD LESS_LESS WORD > ---- 533,537 ---- > - redir.filename =3D $3; > - $$ =3D make_redirection (source, r_reading_until, redir, 0); > -! push_heredoc ($$); > - } > - | REDIR_WORD LESS_LESS WORD > -*************** > -*** 535,539 **** > - redir.filename =3D $3; > - $$ =3D make_redirection (source, r_reading_until, redir, REDIR_VARA= SSIGN); > -! redir_stack[need_here_doc++] =3D $$; > - } > - | LESS_LESS_MINUS WORD > ---- 540,544 ---- > - redir.filename =3D $3; > - $$ =3D make_redirection (source, r_reading_until, redir, REDIR_VARA= SSIGN); > -! push_heredoc ($$); > - } > - | LESS_LESS_MINUS WORD > -*************** > -*** 542,546 **** > - redir.filename =3D $2; > - $$ =3D make_redirection (source, r_deblank_reading_until, redir, 0); > -! redir_stack[need_here_doc++] =3D $$; > - } > - | NUMBER LESS_LESS_MINUS WORD > ---- 547,551 ---- > - redir.filename =3D $2; > - $$ =3D make_redirection (source, r_deblank_reading_until, redir, 0); > -! push_heredoc ($$); > - } > - | NUMBER LESS_LESS_MINUS WORD > -*************** > -*** 549,553 **** > - redir.filename =3D $3; > - $$ =3D make_redirection (source, r_deblank_reading_until, redir, 0); > -! redir_stack[need_here_doc++] =3D $$; > - } > - | REDIR_WORD LESS_LESS_MINUS WORD > ---- 554,558 ---- > - redir.filename =3D $3; > - $$ =3D make_redirection (source, r_deblank_reading_until, redir, 0); > -! push_heredoc ($$); > - } > - | REDIR_WORD LESS_LESS_MINUS WORD > -*************** > -*** 556,560 **** > - redir.filename =3D $3; > - $$ =3D make_redirection (source, r_deblank_reading_until, redir, RE= DIR_VARASSIGN); > -! redir_stack[need_here_doc++] =3D $$; > - } > - | LESS_LESS_LESS WORD > ---- 561,565 ---- > - redir.filename =3D $3; > - $$ =3D make_redirection (source, r_deblank_reading_until, redir, RE= DIR_VARASSIGN); > -! push_heredoc ($$); > - } > - | LESS_LESS_LESS WORD > -*************** > -*** 2637,2640 **** > ---- 2642,2660 ---- > - static int esacs_needed_count; > - =20 > -+ static void > -+ push_heredoc (r) > -+ REDIRECT *r; > -+ { > -+ if (need_here_doc >=3D HEREDOC_MAX) > -+ { > -+ last_command_exit_value =3D EX_BADUSAGE; > -+ need_here_doc =3D 0; > -+ report_syntax_error (_("maximum here-document count exceeded")); > -+ reset_parser (); > -+ exit_shell (last_command_exit_value); > -+ } > -+ redir_stack[need_here_doc++] =3D r; > -+ } > -+=20 > - void > - gather_here_documents () > -*** ../bash-4.3.27/y.tab.c 2014-10-01 11:38:24.000000000 -0400 > ---- y.tab.c 2014-10-01 12:46:11.000000000 -0400 > -*************** > -*** 169,173 **** > - =20 > - /* Copy the first part of user declarations. */ > -! #line 21 "/usr/homes/chet/src/bash/src/parse.y" > - =20 > - #include "config.h" > ---- 169,173 ---- > - =20 > - /* Copy the first part of user declarations. */ > -! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - =20 > - #include "config.h" > -*************** > -*** 320,323 **** > ---- 320,326 ---- > - static int reserved_word_acceptable __P((int)); > - static int yylex __P((void)); > -+=20 > -+ static void push_heredoc __P((REDIRECT *)); > -+ static char *mk_alexpansion __P((char *)); > - static int alias_expand_token __P((char *)); > - static int time_command_acceptable __P((void)); > -*************** > -*** 417,421 **** > - /* Variables to manage the task of reading here documents, because we ne= ed to > - defer the reading until after a complete command has been collected. = */ > -! static REDIRECT *redir_stack[10]; > - int need_here_doc; > - =20 > ---- 420,426 ---- > - /* Variables to manage the task of reading here documents, because we ne= ed to > - defer the reading until after a complete command has been collected. = */ > -! #define HEREDOC_MAX 16 > -!=20 > -! static REDIRECT *redir_stack[HEREDOC_MAX]; > - int need_here_doc; > - =20 > -*************** > -*** 459,463 **** > - index is decremented after a case, select, or for command is parsed. = */ > - #define MAX_CASE_NEST 128 > -! static int word_lineno[MAX_CASE_NEST]; > - static int word_top =3D -1; > - =20 > ---- 464,468 ---- > - index is decremented after a case, select, or for command is parsed. = */ > - #define MAX_CASE_NEST 128 > -! static int word_lineno[MAX_CASE_NEST+1]; > - static int word_top =3D -1; > - =20 > -*************** > -*** 493,497 **** > - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED > - typedef union YYSTYPE > -! #line 324 "/usr/homes/chet/src/bash/src/parse.y" > - { > - WORD_DESC *word; /* the word that we read. */ > ---- 498,502 ---- > - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED > - typedef union YYSTYPE > -! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - WORD_DESC *word; /* the word that we read. */ > -*************** > -*** 504,508 **** > - } > - /* Line 193 of yacc.c. */ > -! #line 507 "y.tab.c" > - YYSTYPE; > - # define yystype YYSTYPE /* obsolescent; will be withdrawn */ > ---- 509,513 ---- > - } > - /* Line 193 of yacc.c. */ > -! #line 512 "y.tab.c" > - YYSTYPE; > - # define yystype YYSTYPE /* obsolescent; will be withdrawn */ > -*************** > -*** 517,521 **** > - =20 > - /* Line 216 of yacc.c. */ > -! #line 520 "y.tab.c" > - =20 > - #ifdef short > ---- 522,526 ---- > - =20 > - /* Line 216 of yacc.c. */ > -! #line 525 "y.tab.c" > - =20 > - #ifdef short > -*************** > -*** 887,907 **** > - static const yytype_uint16 yyrline[] =3D > - { > -! 0, 377, 377, 388, 397, 412, 422, 424, 428, 434, > -! 440, 446, 452, 458, 464, 470, 476, 482, 488, 494, > -! 500, 506, 512, 518, 525, 532, 539, 546, 553, 560, > -! 566, 572, 578, 584, 590, 596, 602, 608, 614, 620, > -! 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, > -! 686, 692, 700, 702, 704, 708, 712, 723, 725, 729, > -! 731, 733, 749, 751, 755, 757, 759, 761, 763, 765, > -! 767, 769, 771, 773, 775, 779, 784, 789, 794, 799, > -! 804, 809, 814, 821, 826, 831, 836, 843, 848, 853, > -! 858, 863, 868, 875, 880, 885, 892, 895, 898, 902, > -! 904, 935, 942, 947, 964, 969, 986, 993, 995, 997, > -! 1002, 1006, 1010, 1014, 1016, 1018, 1022, 1023, 1027, 1029, > -! 1031, 1033, 1037, 1039, 1041, 1043, 1045, 1047, 1051, 1053, > -! 1062, 1070, 1071, 1077, 1078, 1085, 1089, 1091, 1093, 1100, > -! 1102, 1104, 1108, 1109, 1112, 1114, 1116, 1120, 1121, 1130, > -! 1143, 1159, 1174, 1176, 1178, 1185, 1188, 1192, 1194, 1200, > -! 1206, 1223, 1243, 1245, 1268, 1272, 1274, 1276 > - }; > - #endif > ---- 892,912 ---- > - static const yytype_uint16 yyrline[] =3D > - { > -! 0, 382, 382, 393, 402, 417, 427, 429, 433, 439, > -! 445, 451, 457, 463, 469, 475, 481, 487, 493, 499, > -! 505, 511, 517, 523, 530, 537, 544, 551, 558, 565, > -! 571, 577, 583, 589, 595, 601, 607, 613, 619, 625, > -! 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, > -! 691, 697, 705, 707, 709, 713, 717, 728, 730, 734, > -! 736, 738, 754, 756, 760, 762, 764, 766, 768, 770, > -! 772, 774, 776, 778, 780, 784, 789, 794, 799, 804, > -! 809, 814, 819, 826, 831, 836, 841, 848, 853, 858, > -! 863, 868, 873, 880, 885, 890, 897, 900, 903, 907, > -! 909, 940, 947, 952, 969, 974, 991, 998, 1000, 1002, > -! 1007, 1011, 1015, 1019, 1021, 1023, 1027, 1028, 1032, 1034, > -! 1036, 1038, 1042, 1044, 1046, 1048, 1050, 1052, 1056, 1058, > -! 1067, 1075, 1076, 1082, 1083, 1090, 1094, 1096, 1098, 1105, > -! 1107, 1109, 1113, 1114, 1117, 1119, 1121, 1125, 1126, 1135, > -! 1148, 1164, 1179, 1181, 1183, 1190, 1193, 1197, 1199, 1205, > -! 1211, 1228, 1248, 1250, 1273, 1277, 1279, 1281 > - }; > - #endif > -*************** > -*** 2094,2098 **** > - { > - case 2: > -! #line 378 "/usr/homes/chet/src/bash/src/parse.y" > - { > - /* Case of regular command. Discard the error > ---- 2099,2103 ---- > - { > - case 2: > -! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Case of regular command. Discard the error > -*************** > -*** 2108,2112 **** > - =20 > - case 3: > -! #line 389 "/usr/homes/chet/src/bash/src/parse.y" > - { > - /* Case of regular command, but not a very > ---- 2113,2117 ---- > - =20 > - case 3: > -! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Case of regular command, but not a very > -*************** > -*** 2120,2124 **** > - =20 > - case 4: > -! #line 398 "/usr/homes/chet/src/bash/src/parse.y" > - { > - /* Error during parsing. Return NULL command. */ > ---- 2125,2129 ---- > - =20 > - case 4: > -! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Error during parsing. Return NULL command. */ > -*************** > -*** 2138,2142 **** > - =20 > - case 5: > -! #line 413 "/usr/homes/chet/src/bash/src/parse.y" > - { > - /* Case of EOF seen by itself. Do ignoreeof or > ---- 2143,2147 ---- > - =20 > - case 5: > -! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Case of EOF seen by itself. Do ignoreeof or > -*************** > -*** 2149,2163 **** > - =20 > - case 6: > -! #line 423 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WO= RD_LIST *)NULL); } > - break; > - =20 > - case 7: > -! #line 425 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(2) - (2)].word), (yy= vsp[(1) - (2)].word_list)); } > - break; > - =20 > - case 8: > -! #line 429 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 1; > ---- 2154,2168 ---- > - =20 > - case 6: > -! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WO= RD_LIST *)NULL); } > - break; > - =20 > - case 7: > -! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(2) - (2)].word), (yy= vsp[(1) - (2)].word_list)); } > - break; > - =20 > - case 8: > -! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2168,2172 **** > - =20 > - case 9: > -! #line 435 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 0; > ---- 2173,2177 ---- > - =20 > - case 9: > -! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2177,2181 **** > - =20 > - case 10: > -! #line 441 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2182,2186 ---- > - =20 > - case 10: > -! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2186,2190 **** > - =20 > - case 11: > -! #line 447 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2191,2195 ---- > - =20 > - case 11: > -! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2195,2199 **** > - =20 > - case 12: > -! #line 453 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2200,2204 ---- > - =20 > - case 12: > -! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2204,2208 **** > - =20 > - case 13: > -! #line 459 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2209,2213 ---- > - =20 > - case 13: > -! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2213,2217 **** > - =20 > - case 14: > -! #line 465 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 1; > ---- 2218,2222 ---- > - =20 > - case 14: > -! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2222,2226 **** > - =20 > - case 15: > -! #line 471 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2227,2231 ---- > - =20 > - case 15: > -! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2231,2235 **** > - =20 > - case 16: > -! #line 477 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2236,2240 ---- > - =20 > - case 16: > -! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2240,2244 **** > - =20 > - case 17: > -! #line 483 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 1; > ---- 2245,2249 ---- > - =20 > - case 17: > -! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2249,2253 **** > - =20 > - case 18: > -! #line 489 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2254,2258 ---- > - =20 > - case 18: > -! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2258,2262 **** > - =20 > - case 19: > -! #line 495 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2263,2267 ---- > - =20 > - case 19: > -! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2267,2271 **** > - =20 > - case 20: > -! #line 501 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 0; > ---- 2272,2276 ---- > - =20 > - case 20: > -! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2276,2280 **** > - =20 > - case 21: > -! #line 507 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2281,2285 ---- > - =20 > - case 21: > -! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2285,2289 **** > - =20 > - case 22: > -! #line 513 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2290,2294 ---- > - =20 > - case 22: > -! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2294,2358 **** > - =20 > - case 23: > -! #line 519 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 0; > - redir.filename =3D (yyvsp[(2) - (2)].word); > - (yyval.redirect) =3D make_redirection (source, r_reading_until, red= ir, 0); > -! redir_stack[need_here_doc++] =3D (yyval.redirect); > - } > - break; > - =20 > - case 24: > -! #line 526 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > - redir.filename =3D (yyvsp[(3) - (3)].word); > - (yyval.redirect) =3D make_redirection (source, r_reading_until, red= ir, 0); > -! redir_stack[need_here_doc++] =3D (yyval.redirect); > - } > - break; > - =20 > - case 25: > -! #line 533 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > - redir.filename =3D (yyvsp[(3) - (3)].word); > - (yyval.redirect) =3D make_redirection (source, r_reading_until, red= ir, REDIR_VARASSIGN); > -! redir_stack[need_here_doc++] =3D (yyval.redirect); > - } > - break; > - =20 > - case 26: > -! #line 540 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 0; > - redir.filename =3D (yyvsp[(2) - (2)].word); > - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_un= til, redir, 0); > -! redir_stack[need_here_doc++] =3D (yyval.redirect); > - } > - break; > - =20 > - case 27: > -! #line 547 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > - redir.filename =3D (yyvsp[(3) - (3)].word); > - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_un= til, redir, 0); > -! redir_stack[need_here_doc++] =3D (yyval.redirect); > - } > - break; > - =20 > - case 28: > -! #line 554 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > - redir.filename =3D (yyvsp[(3) - (3)].word); > - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_un= til, redir, REDIR_VARASSIGN); > -! redir_stack[need_here_doc++] =3D (yyval.redirect); > - } > - break; > - =20 > - case 29: > -! #line 561 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 0; > ---- 2299,2363 ---- > - =20 > - case 23: > -! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > - redir.filename =3D (yyvsp[(2) - (2)].word); > - (yyval.redirect) =3D make_redirection (source, r_reading_until, red= ir, 0); > -! push_heredoc ((yyval.redirect)); > - } > - break; > - =20 > - case 24: > -! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > - redir.filename =3D (yyvsp[(3) - (3)].word); > - (yyval.redirect) =3D make_redirection (source, r_reading_until, red= ir, 0); > -! push_heredoc ((yyval.redirect)); > - } > - break; > - =20 > - case 25: > -! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > - redir.filename =3D (yyvsp[(3) - (3)].word); > - (yyval.redirect) =3D make_redirection (source, r_reading_until, red= ir, REDIR_VARASSIGN); > -! push_heredoc ((yyval.redirect)); > - } > - break; > - =20 > - case 26: > -! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > - redir.filename =3D (yyvsp[(2) - (2)].word); > - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_un= til, redir, 0); > -! push_heredoc ((yyval.redirect)); > - } > - break; > - =20 > - case 27: > -! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > - redir.filename =3D (yyvsp[(3) - (3)].word); > - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_un= til, redir, 0); > -! push_heredoc ((yyval.redirect)); > - } > - break; > - =20 > - case 28: > -! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > - redir.filename =3D (yyvsp[(3) - (3)].word); > - (yyval.redirect) =3D make_redirection (source, r_deblank_reading_un= til, redir, REDIR_VARASSIGN); > -! push_heredoc ((yyval.redirect)); > - } > - break; > - =20 > - case 29: > -! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2363,2367 **** > - =20 > - case 30: > -! #line 567 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2368,2372 ---- > - =20 > - case 30: > -! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2372,2376 **** > - =20 > - case 31: > -! #line 573 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2377,2381 ---- > - =20 > - case 31: > -! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2381,2385 **** > - =20 > - case 32: > -! #line 579 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 0; > ---- 2386,2390 ---- > - =20 > - case 32: > -! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2390,2394 **** > - =20 > - case 33: > -! #line 585 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2395,2399 ---- > - =20 > - case 33: > -! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2399,2403 **** > - =20 > - case 34: > -! #line 591 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2404,2408 ---- > - =20 > - case 34: > -! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2408,2412 **** > - =20 > - case 35: > -! #line 597 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 1; > ---- 2413,2417 ---- > - =20 > - case 35: > -! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2417,2421 **** > - =20 > - case 36: > -! #line 603 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2422,2426 ---- > - =20 > - case 36: > -! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2426,2430 **** > - =20 > - case 37: > -! #line 609 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2431,2435 ---- > - =20 > - case 37: > -! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2435,2439 **** > - =20 > - case 38: > -! #line 615 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 0; > ---- 2440,2444 ---- > - =20 > - case 38: > -! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2444,2448 **** > - =20 > - case 39: > -! #line 621 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2449,2453 ---- > - =20 > - case 39: > -! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2453,2457 **** > - =20 > - case 40: > -! #line 627 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2458,2462 ---- > - =20 > - case 40: > -! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2462,2466 **** > - =20 > - case 41: > -! #line 633 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 1; > ---- 2467,2471 ---- > - =20 > - case 41: > -! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2471,2475 **** > - =20 > - case 42: > -! #line 639 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2476,2480 ---- > - =20 > - case 42: > -! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2480,2484 **** > - =20 > - case 43: > -! #line 645 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2485,2489 ---- > - =20 > - case 43: > -! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2489,2493 **** > - =20 > - case 44: > -! #line 651 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 1; > ---- 2494,2498 ---- > - =20 > - case 44: > -! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2498,2502 **** > - =20 > - case 45: > -! #line 657 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2503,2507 ---- > - =20 > - case 45: > -! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2507,2511 **** > - =20 > - case 46: > -! #line 663 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2512,2516 ---- > - =20 > - case 46: > -! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2516,2520 **** > - =20 > - case 47: > -! #line 669 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 0; > ---- 2521,2525 ---- > - =20 > - case 47: > -! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2525,2529 **** > - =20 > - case 48: > -! #line 675 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2530,2534 ---- > - =20 > - case 48: > -! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2534,2538 **** > - =20 > - case 49: > -! #line 681 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2539,2543 ---- > - =20 > - case 49: > -! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2543,2547 **** > - =20 > - case 50: > -! #line 687 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 1; > ---- 2548,2552 ---- > - =20 > - case 50: > -! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2552,2556 **** > - =20 > - case 51: > -! #line 693 "/usr/homes/chet/src/bash/src/parse.y" > - { > - source.dest =3D 1; > ---- 2557,2561 ---- > - =20 > - case 51: > -! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2561,2580 **** > - =20 > - case 52: > -! #line 701 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).= redirect =3D 0; } > - break; > - =20 > - case 53: > -! #line 703 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).= redirect =3D 0; } > - break; > - =20 > - case 54: > -! #line 705 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.element).redirect =3D (yyvsp[(1) - (1)].redirect); (yyval.e= lement).word =3D 0; } > - break; > - =20 > - case 55: > -! #line 709 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.redirect) =3D (yyvsp[(1) - (1)].redirect); > ---- 2566,2585 ---- > - =20 > - case 52: > -! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).= redirect =3D 0; } > - break; > - =20 > - case 53: > -! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).= redirect =3D 0; } > - break; > - =20 > - case 54: > -! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.element).redirect =3D (yyvsp[(1) - (1)].redirect); (yyval.e= lement).word =3D 0; } > - break; > - =20 > - case 55: > -! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.redirect) =3D (yyvsp[(1) - (1)].redirect); > -*************** > -*** 2583,2587 **** > - =20 > - case 56: > -! #line 713 "/usr/homes/chet/src/bash/src/parse.y" > - { > - register REDIRECT *t; > ---- 2588,2592 ---- > - =20 > - case 56: > -! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - register REDIRECT *t; > -*************** > -*** 2595,2619 **** > - =20 > - case 57: > -! #line 724 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_simple_command ((yyvsp[(1) - (1)].element= ), (COMMAND *)NULL); } > - break; > - =20 > - case 58: > -! #line 726 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_simple_command ((yyvsp[(2) - (2)].element= ), (yyvsp[(1) - (2)].command)); } > - break; > - =20 > - case 59: > -! #line 730 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D clean_simple_command ((yyvsp[(1) - (1)].comman= d)); } > - break; > - =20 > - case 60: > -! #line 732 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 61: > -! #line 734 "/usr/homes/chet/src/bash/src/parse.y" > - { > - COMMAND *tc; > ---- 2600,2624 ---- > - =20 > - case 57: > -! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_simple_command ((yyvsp[(1) - (1)].element= ), (COMMAND *)NULL); } > - break; > - =20 > - case 58: > -! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_simple_command ((yyvsp[(2) - (2)].element= ), (yyvsp[(1) - (2)].command)); } > - break; > - =20 > - case 59: > -! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D clean_simple_command ((yyvsp[(1) - (1)].comman= d)); } > - break; > - =20 > - case 60: > -! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 61: > -! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - COMMAND *tc; > -*************** > -*** 2634,2703 **** > - =20 > - case 62: > -! #line 750 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 63: > -! #line 752 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 64: > -! #line 756 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 65: > -! #line 758 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 66: > -! #line 760 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_while_command ((yyvsp[(2) - (5)].command)= , (yyvsp[(4) - (5)].command)); } > - break; > - =20 > - case 67: > -! #line 762 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_until_command ((yyvsp[(2) - (5)].command)= , (yyvsp[(4) - (5)].command)); } > - break; > - =20 > - case 68: > -! #line 764 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 69: > -! #line 766 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 70: > -! #line 768 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 71: > -! #line 770 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 72: > -! #line 772 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 73: > -! #line 774 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 74: > -! #line 776 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 75: > -! #line 780 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wor= d_lineno[word_top]); > ---- 2639,2708 ---- > - =20 > - case 62: > -! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 63: > -! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 64: > -! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 65: > -! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 66: > -! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_while_command ((yyvsp[(2) - (5)].command)= , (yyvsp[(4) - (5)].command)); } > - break; > - =20 > - case 67: > -! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_until_command ((yyvsp[(2) - (5)].command)= , (yyvsp[(4) - (5)].command)); } > - break; > - =20 > - case 68: > -! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 69: > -! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 70: > -! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 71: > -! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 72: > -! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 73: > -! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 74: > -! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 75: > -! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wor= d_lineno[word_top]); > -*************** > -*** 2707,2711 **** > - =20 > - case 76: > -! #line 785 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wor= d_lineno[word_top]); > ---- 2712,2716 ---- > - =20 > - case 76: > -! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wor= d_lineno[word_top]); > -*************** > -*** 2715,2719 **** > - =20 > - case 77: > -! #line 790 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wor= d_lineno[word_top]); > ---- 2720,2724 ---- > - =20 > - case 77: > -! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wor= d_lineno[word_top]); > -*************** > -*** 2723,2727 **** > - =20 > - case 78: > -! #line 795 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wor= d_lineno[word_top]); > ---- 2728,2732 ---- > - =20 > - case 78: > -! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wor= d_lineno[word_top]); > -*************** > -*** 2731,2735 **** > - =20 > - case 79: > -! #line 800 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REV= ERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].co= mmand), word_lineno[word_top]); > ---- 2736,2740 ---- > - =20 > - case 79: > -! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REV= ERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].co= mmand), word_lineno[word_top]); > -*************** > -*** 2739,2743 **** > - =20 > - case 80: > -! #line 805 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REV= ERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].co= mmand), word_lineno[word_top]); > ---- 2744,2748 ---- > - =20 > - case 80: > -! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REV= ERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].co= mmand), word_lineno[word_top]); > -*************** > -*** 2747,2751 **** > - =20 > - case 81: > -! #line 810 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WOR= D_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); > ---- 2752,2756 ---- > - =20 > - case 81: > -! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WOR= D_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); > -*************** > -*** 2755,2759 **** > - =20 > - case 82: > -! #line 815 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WOR= D_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); > ---- 2760,2764 ---- > - =20 > - case 82: > -! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WOR= D_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); > -*************** > -*** 2763,2767 **** > - =20 > - case 83: > -! #line 822 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word= _list), (yyvsp[(6) - (7)].command), arith_for_lineno); > ---- 2768,2772 ---- > - =20 > - case 83: > -! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word= _list), (yyvsp[(6) - (7)].command), arith_for_lineno); > -*************** > -*** 2771,2775 **** > - =20 > - case 84: > -! #line 827 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word= _list), (yyvsp[(6) - (7)].command), arith_for_lineno); > ---- 2776,2780 ---- > - =20 > - case 84: > -! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word= _list), (yyvsp[(6) - (7)].command), arith_for_lineno); > -*************** > -*** 2779,2783 **** > - =20 > - case 85: > -! #line 832 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word= _list), (yyvsp[(4) - (5)].command), arith_for_lineno); > ---- 2784,2788 ---- > - =20 > - case 85: > -! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word= _list), (yyvsp[(4) - (5)].command), arith_for_lineno); > -*************** > -*** 2787,2791 **** > - =20 > - case 86: > -! #line 837 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word= _list), (yyvsp[(4) - (5)].command), arith_for_lineno); > ---- 2792,2796 ---- > - =20 > - case 86: > -! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word= _list), (yyvsp[(4) - (5)].command), arith_for_lineno); > -*************** > -*** 2795,2799 **** > - =20 > - case 87: > -! #line 844 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), = word_lineno[word_top]); > ---- 2800,2804 ---- > - =20 > - case 87: > -! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), = word_lineno[word_top]); > -*************** > -*** 2803,2807 **** > - =20 > - case 88: > -! #line 849 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), = word_lineno[word_top]); > ---- 2808,2812 ---- > - =20 > - case 88: > -! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), = word_lineno[word_top]); > -*************** > -*** 2811,2815 **** > - =20 > - case 89: > -! #line 854 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), = word_lineno[word_top]); > ---- 2816,2820 ---- > - =20 > - case 89: > -! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), = word_lineno[word_top]); > -*************** > -*** 2819,2823 **** > - =20 > - case 90: > -! #line 859 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), = word_lineno[word_top]); > ---- 2824,2828 ---- > - =20 > - case 90: > -! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), = word_lineno[word_top]); > -*************** > -*** 2827,2831 **** > - =20 > - case 91: > -! #line 864 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), = REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)]= .command), word_lineno[word_top]); > ---- 2832,2836 ---- > - =20 > - case 91: > -! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), = REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)]= .command), word_lineno[word_top]); > -*************** > -*** 2835,2839 **** > - =20 > - case 92: > -! #line 869 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), = REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)]= .command), word_lineno[word_top]); > ---- 2840,2844 ---- > - =20 > - case 92: > -! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), = REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)]= .command), word_lineno[word_top]); > -*************** > -*** 2843,2847 **** > - =20 > - case 93: > -! #line 876 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (PA= TTERN_LIST *)NULL, word_lineno[word_top]); > ---- 2848,2852 ---- > - =20 > - case 93: > -! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (PA= TTERN_LIST *)NULL, word_lineno[word_top]); > -*************** > -*** 2851,2855 **** > - =20 > - case 94: > -! #line 881 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (7)].word), (yy= vsp[(5) - (7)].pattern), word_lineno[word_top]); > ---- 2856,2860 ---- > - =20 > - case 94: > -! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (7)].word), (yy= vsp[(5) - (7)].pattern), word_lineno[word_top]); > -*************** > -*** 2859,2863 **** > - =20 > - case 95: > -! #line 886 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (yy= vsp[(5) - (6)].pattern), word_lineno[word_top]); > ---- 2864,2868 ---- > - =20 > - case 95: > -! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (yy= vsp[(5) - (6)].pattern), word_lineno[word_top]); > -*************** > -*** 2867,2891 **** > - =20 > - case 96: > -! #line 893 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(1) - (5)].word), (y= yvsp[(5) - (5)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 97: > -! #line 896 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (6)].word), (y= yvsp[(6) - (6)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 98: > -! #line 899 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (4)].word), (y= yvsp[(4) - (4)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 99: > -! #line 903 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 100: > -! #line 905 "/usr/homes/chet/src/bash/src/parse.y" > - { > - COMMAND *tc; > ---- 2872,2896 ---- > - =20 > - case 96: > -! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(1) - (5)].word), (y= yvsp[(5) - (5)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 97: > -! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (6)].word), (y= yvsp[(6) - (6)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 98: > -! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (4)].word), (y= yvsp[(4) - (4)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 99: > -! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 100: > -! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - COMMAND *tc; > -*************** > -*** 2919,2923 **** > - =20 > - case 101: > -! #line 936 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_subshell_command ((yyvsp[(2) - (3)].comman= d)); > ---- 2924,2928 ---- > - =20 > - case 101: > -! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_subshell_command ((yyvsp[(2) - (3)].comman= d)); > -*************** > -*** 2927,2931 **** > - =20 > - case 102: > -! #line 943 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_coproc_command ("COPROC", (yyvsp[(2) - (2)= ].command)); > ---- 2932,2936 ---- > - =20 > - case 102: > -! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_coproc_command ("COPROC", (yyvsp[(2) - (2)= ].command)); > -*************** > -*** 2935,2939 **** > - =20 > - case 103: > -! #line 948 "/usr/homes/chet/src/bash/src/parse.y" > - { > - COMMAND *tc; > ---- 2940,2944 ---- > - =20 > - case 103: > -! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - COMMAND *tc; > -*************** > -*** 2955,2959 **** > - =20 > - case 104: > -! #line 965 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_coproc_command ((yyvsp[(2) - (3)].word)->w= ord, (yyvsp[(3) - (3)].command)); > ---- 2960,2964 ---- > - =20 > - case 104: > -! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_coproc_command ((yyvsp[(2) - (3)].word)->w= ord, (yyvsp[(3) - (3)].command)); > -*************** > -*** 2963,2967 **** > - =20 > - case 105: > -! #line 970 "/usr/homes/chet/src/bash/src/parse.y" > - { > - COMMAND *tc; > ---- 2968,2972 ---- > - =20 > - case 105: > -! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - COMMAND *tc; > -*************** > -*** 2983,2987 **** > - =20 > - case 106: > -! #line 987 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D make_coproc_command ("COPROC", clean_simple_com= mand ((yyvsp[(2) - (2)].command))); > ---- 2988,2992 ---- > - =20 > - case 106: > -! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_coproc_command ("COPROC", clean_simple_com= mand ((yyvsp[(2) - (2)].command))); > -*************** > -*** 2991,3105 **** > - =20 > - case 107: > -! #line 994 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (= yyvsp[(4) - (5)].command), (COMMAND *)NULL); } > - break; > - =20 > - case 108: > -! #line 996 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (7)].command), (= yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } > - break; > - =20 > - case 109: > -! #line 998 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (= yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } > - break; > - =20 > - case 110: > -! #line 1003 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_group_command ((yyvsp[(2) - (3)].command)= ); } > - break; > - =20 > - case 111: > -! #line 1007 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_arith_command ((yyvsp[(1) - (1)].word_lis= t)); } > - break; > - =20 > - case 112: > -! #line 1011 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(2) - (3)].command); } > - break; > - =20 > - case 113: > -! #line 1015 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (4)].command), (= yyvsp[(4) - (4)].command), (COMMAND *)NULL); } > - break; > - =20 > - case 114: > -! #line 1017 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (= yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } > - break; > - =20 > - case 115: > -! #line 1019 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (= yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } > - break; > - =20 > - case 117: > -! #line 1024 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyvsp[(2) - (2)].pattern)->next =3D (yyvsp[(1) - (2)].pattern); (= yyval.pattern) =3D (yyvsp[(2) - (2)].pattern); } > - break; > - =20 > - case 118: > -! #line 1028 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list= ), (yyvsp[(4) - (4)].command)); } > - break; > - =20 > - case 119: > -! #line 1030 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list= ), (COMMAND *)NULL); } > - break; > - =20 > - case 120: > -! #line 1032 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list= ), (yyvsp[(5) - (5)].command)); } > - break; > - =20 > - case 121: > -! #line 1034 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list= ), (COMMAND *)NULL); } > - break; > - =20 > - case 122: > -! #line 1038 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.pattern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 123: > -! #line 1040 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyvsp[(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (= yyval.pattern) =3D (yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 124: > -! #line 1042 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyval= .pattern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 125: > -! #line 1044 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyvsp= [(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) = =3D (yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 126: > -! #line 1046 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyval.pa= ttern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 127: > -! #line 1048 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyvsp[(2= ) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D (= yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 128: > -! #line 1052 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WO= RD_LIST *)NULL); } > - break; > - =20 > - case 129: > -! #line 1054 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(3) - (3)].word), (yy= vsp[(1) - (3)].word_list)); } > - break; > - =20 > - case 130: > -! #line 1063 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D (yyvsp[(2) - (2)].command); > ---- 2996,3110 ---- > - =20 > - case 107: > -! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (= yyvsp[(4) - (5)].command), (COMMAND *)NULL); } > - break; > - =20 > - case 108: > -! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (7)].command), (= yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } > - break; > - =20 > - case 109: > -! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (= yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } > - break; > - =20 > - case 110: > -! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_group_command ((yyvsp[(2) - (3)].command)= ); } > - break; > - =20 > - case 111: > -! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_arith_command ((yyvsp[(1) - (1)].word_lis= t)); } > - break; > - =20 > - case 112: > -! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(2) - (3)].command); } > - break; > - =20 > - case 113: > -! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (4)].command), (= yyvsp[(4) - (4)].command), (COMMAND *)NULL); } > - break; > - =20 > - case 114: > -! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (= yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } > - break; > - =20 > - case 115: > -! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (= yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } > - break; > - =20 > - case 117: > -! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(2) - (2)].pattern)->next =3D (yyvsp[(1) - (2)].pattern); (= yyval.pattern) =3D (yyvsp[(2) - (2)].pattern); } > - break; > - =20 > - case 118: > -! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list= ), (yyvsp[(4) - (4)].command)); } > - break; > - =20 > - case 119: > -! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list= ), (COMMAND *)NULL); } > - break; > - =20 > - case 120: > -! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list= ), (yyvsp[(5) - (5)].command)); } > - break; > - =20 > - case 121: > -! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list= ), (COMMAND *)NULL); } > - break; > - =20 > - case 122: > -! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 123: > -! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (= yyval.pattern) =3D (yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 124: > -! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyval= .pattern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 125: > -! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyvsp= [(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) = =3D (yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 126: > -! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyval.pa= ttern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 127: > -! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyvsp[(2= ) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D (= yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 128: > -! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WO= RD_LIST *)NULL); } > - break; > - =20 > - case 129: > -! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(3) - (3)].word), (yy= vsp[(1) - (3)].word_list)); } > - break; > - =20 > - case 130: > -! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D (yyvsp[(2) - (2)].command); > -*************** > -*** 3110,3114 **** > - =20 > - case 132: > -! #line 1072 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D (yyvsp[(2) - (2)].command); > ---- 3115,3119 ---- > - =20 > - case 132: > -! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D (yyvsp[(2) - (2)].command); > -*************** > -*** 3117,3121 **** > - =20 > - case 134: > -! #line 1079 "/usr/homes/chet/src/bash/src/parse.y" > - { > - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) > ---- 3122,3126 ---- > - =20 > - case 134: > -! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) > -*************** > -*** 3127,3141 **** > - =20 > - case 136: > -! #line 1090 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), AND_AND); } > - break; > - =20 > - case 137: > -! #line 1092 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), OR_OR); } > - break; > - =20 > - case 138: > -! #line 1094 "/usr/homes/chet/src/bash/src/parse.y" > - { > - if ((yyvsp[(1) - (4)].command)->type =3D=3D cm_connection) > ---- 3132,3146 ---- > - =20 > - case 136: > -! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), AND_AND); } > - break; > - =20 > - case 137: > -! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), OR_OR); } > - break; > - =20 > - case 138: > -! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(1) - (4)].command)->type =3D=3D cm_connection) > -*************** > -*** 3147,3181 **** > - =20 > - case 139: > -! #line 1101 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), ';'); } > - break; > - =20 > - case 140: > -! #line 1103 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), ';'); } > - break; > - =20 > - case 141: > -! #line 1105 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 144: > -! #line 1113 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.number) =3D '\n'; } > - break; > - =20 > - case 145: > -! #line 1115 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.number) =3D ';'; } > - break; > - =20 > - case 146: > -! #line 1117 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.number) =3D yacc_EOF; } > - break; > - =20 > - case 149: > -! #line 1131 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D (yyvsp[(1) - (1)].command); > ---- 3152,3186 ---- > - =20 > - case 139: > -! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), ';'); } > - break; > - =20 > - case 140: > -! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), ';'); } > - break; > - =20 > - case 141: > -! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 144: > -! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D '\n'; } > - break; > - =20 > - case 145: > -! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D ';'; } > - break; > - =20 > - case 146: > -! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D yacc_EOF; } > - break; > - =20 > - case 149: > -! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D (yyvsp[(1) - (1)].command); > -*************** > -*** 3193,3197 **** > - =20 > - case 150: > -! #line 1144 "/usr/homes/chet/src/bash/src/parse.y" > - { > - if ((yyvsp[(1) - (2)].command)->type =3D=3D cm_connection) > ---- 3198,3202 ---- > - =20 > - case 150: > -! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(1) - (2)].command)->type =3D=3D cm_connection) > -*************** > -*** 3212,3216 **** > - =20 > - case 151: > -! #line 1160 "/usr/homes/chet/src/bash/src/parse.y" > - { > - (yyval.command) =3D (yyvsp[(1) - (2)].command); > ---- 3217,3221 ---- > - =20 > - case 151: > -! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D (yyvsp[(1) - (2)].command); > -*************** > -*** 3228,3242 **** > - =20 > - case 152: > -! #line 1175 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), AND_AND); } > - break; > - =20 > - case 153: > -! #line 1177 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), OR_OR); } > - break; > - =20 > - case 154: > -! #line 1179 "/usr/homes/chet/src/bash/src/parse.y" > - { > - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) > ---- 3233,3247 ---- > - =20 > - case 152: > -! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), AND_AND); } > - break; > - =20 > - case 153: > -! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), OR_OR); } > - break; > - =20 > - case 154: > -! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) > -*************** > -*** 3248,3267 **** > - =20 > - case 155: > -! #line 1186 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (3)].command), (= yyvsp[(3) - (3)].command), ';'); } > - break; > - =20 > - case 156: > -! #line 1189 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 157: > -! #line 1193 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 158: > -! #line 1195 "/usr/homes/chet/src/bash/src/parse.y" > - { > - if ((yyvsp[(2) - (2)].command)) > ---- 3253,3272 ---- > - =20 > - case 155: > -! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (3)].command), (= yyvsp[(3) - (3)].command), ';'); } > - break; > - =20 > - case 156: > -! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 157: > -! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 158: > -! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(2) - (2)].command)) > -*************** > -*** 3272,3276 **** > - =20 > - case 159: > -! #line 1201 "/usr/homes/chet/src/bash/src/parse.y" > - { > - if ((yyvsp[(2) - (2)].command)) > ---- 3277,3281 ---- > - =20 > - case 159: > -! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(2) - (2)].command)) > -*************** > -*** 3281,3285 **** > - =20 > - case 160: > -! #line 1207 "/usr/homes/chet/src/bash/src/parse.y" > - { > - ELEMENT x; > ---- 3286,3290 ---- > - =20 > - case 160: > -! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - ELEMENT x; > -*************** > -*** 3301,3305 **** > - =20 > - case 161: > -! #line 1224 "/usr/homes/chet/src/bash/src/parse.y" > - { > - ELEMENT x; > ---- 3306,3310 ---- > - =20 > - case 161: > -! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - ELEMENT x; > -*************** > -*** 3322,3331 **** > - =20 > - case 162: > -! #line 1244 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), '|'); } > - break; > - =20 > - case 163: > -! #line 1246 "/usr/homes/chet/src/bash/src/parse.y" > - { > - /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ > ---- 3327,3336 ---- > - =20 > - case 162: > -! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), '|'); } > - break; > - =20 > - case 163: > -! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ > -*************** > -*** 3353,3372 **** > - =20 > - case 164: > -! #line 1269 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 165: > -! #line 1273 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE; } > - break; > - =20 > - case 166: > -! #line 1275 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } > - break; > - =20 > - case 167: > -! #line 1277 "/usr/homes/chet/src/bash/src/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } > - break; > ---- 3358,3377 ---- > - =20 > - case 164: > -! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 165: > -! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE; } > - break; > - =20 > - case 166: > -! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } > - break; > - =20 > - case 167: > -! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } > - break; > -*************** > -*** 3374,3378 **** > - =20 > - /* Line 1267 of yacc.c. */ > -! #line 3377 "y.tab.c" > - default: break; > - } > ---- 3379,3383 ---- > - =20 > - /* Line 1267 of yacc.c. */ > -! #line 3382 "y.tab.c" > - default: break; > - } > -*************** > -*** 3588,3592 **** > - =20 > - =20 > -! #line 1279 "/usr/homes/chet/src/bash/src/parse.y" > - =20 > - =20 > ---- 3593,3597 ---- > - =20 > - =20 > -! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - =20 > - =20 > -*************** > -*** 4949,4952 **** > ---- 4954,4972 ---- > - static int esacs_needed_count; > - =20 > -+ static void > -+ push_heredoc (r) > -+ REDIRECT *r; > -+ { > -+ if (need_here_doc >=3D HEREDOC_MAX) > -+ { > -+ last_command_exit_value =3D EX_BADUSAGE; > -+ need_here_doc =3D 0; > -+ report_syntax_error (_("maximum here-document count exceeded")); > -+ reset_parser (); > -+ exit_shell (last_command_exit_value); > -+ } > -+ redir_stack[need_here_doc++] =3D r; > -+ } > -+=20 > - void > - gather_here_documents () > -*************** > -*** 8542,8543 **** > ---- 8562,8564 ---- > - } > - #endif /* HANDLE_MULTIBYTE */ > -+=20 > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 27 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 28 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-029 b/src/patches/bash/bash43-029 > deleted file mode 100644 > index 93bd390a8..000000000 > --- a/src/patches/bash/bash43-029 > +++ /dev/null > @@ -1,59 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-029 > - > -Bug-Reported-by: Michal Zalewski > -Bug-Reference-ID: > -Bug-Reference-URL: > - > -Bug-Description: > - > -When bash is parsing a function definition that contains a here-document > -delimited by end-of-file (or end-of-string), it leaves the closing delimit= er > -uninitialized. This can result in an invalid memory access when the parsed > -function is later copied. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3.28/make_cmd.c 2011-12-16 08:08:01.000000000 -0500 > ---- make_cmd.c 2014-10-02 11:24:23.000000000 -0400 > -*************** > -*** 693,696 **** > ---- 693,697 ---- > - temp->redirector =3D source; > - temp->redirectee =3D dest_and_filename; > -+ temp->here_doc_eof =3D 0; > - temp->instruction =3D instruction; > - temp->flags =3D 0; > -*** ../bash-4.3.28/copy_cmd.c 2009-09-11 16:28:02.000000000 -0400 > ---- copy_cmd.c 2014-10-02 11:24:23.000000000 -0400 > -*************** > -*** 127,131 **** > - case r_reading_until: > - case r_deblank_reading_until: > -! new_redirect->here_doc_eof =3D savestring (redirect->here_doc_eof); > - /*FALLTHROUGH*/ > - case r_reading_string: > ---- 127,131 ---- > - case r_reading_until: > - case r_deblank_reading_until: > -! new_redirect->here_doc_eof =3D redirect->here_doc_eof ? savestring= (redirect->here_doc_eof) : 0; > - /*FALLTHROUGH*/ > - case r_reading_string: > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 28 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 29 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash43-030 b/src/patches/bash/bash43-030 > deleted file mode 100644 > index 78984da26..000000000 > --- a/src/patches/bash/bash43-030 > +++ /dev/null > @@ -1,2064 +0,0 @@ > - BASH PATCH REPORT > - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > -Bash-Release: 4.3 > -Patch-ID: bash43-030 > - > -Bug-Reported-by: Michal Zalewski > -Bug-Reference-ID: > -Bug-Reference-URL: > - > -Bug-Description: > - > -A combination of nested command substitutions and function importing from > -the environment can cause bash to execute code appearing in the environment > -variable value following the function definition. > - > -Patch (apply with `patch -p0'): > - > -*** ../bash-4.3.29/builtins/evalstring.c 2014-10-01 12:57:47.000000000 -04= 00 > ---- builtins/evalstring.c 2014-10-03 11:57:04.000000000 -0400 > -*************** > -*** 309,318 **** > - struct fd_bitmap *bitmap; > - =20 > -! if ((flags & SEVAL_FUNCDEF) && command->type !=3D cm_function_def) > - { > -! internal_warning ("%s: ignoring function definition attempt", from_f= ile); > -! should_jump_to_top_level =3D 0; > -! last_result =3D last_command_exit_value =3D EX_BADUSAGE; > -! break; > - } > - =20 > ---- 313,335 ---- > - struct fd_bitmap *bitmap; > - =20 > -! if (flags & SEVAL_FUNCDEF) > - { > -! char *x; > -!=20 > -! /* If the command parses to something other than a straight > -! function definition, or if we have not consumed the entire > -! string, or if the parser has transformed the function > -! name (as parsing will if it begins or ends with shell > -! whitespace, for example), reject the attempt */ > -! if (command->type !=3D cm_function_def || > -! ((x =3D parser_remaining_input ()) && *x) || > -! (STREQ (from_file, command->value.Function_def->name->word) =3D= =3D 0)) > -! { > -! internal_warning (_("%s: ignoring function definition attempt"),= from_file); > -! should_jump_to_top_level =3D 0; > -! last_result =3D last_command_exit_value =3D EX_BADUSAGE; > -! reset_parser (); > -! break; > -! } > - } > - =20 > -*************** > -*** 379,383 **** > - =20 > - if (flags & SEVAL_ONECMD) > -! break; > - } > - } > ---- 396,403 ---- > - =20 > - if (flags & SEVAL_ONECMD) > -! { > -! reset_parser (); > -! break; > -! } > - } > - } > -*** ../bash-4.3.29/parse.y 2014-10-01 12:58:43.000000000 -0400 > ---- parse.y 2014-10-03 14:48:59.000000000 -0400 > -*************** > -*** 2539,2542 **** > ---- 2539,2552 ---- > - } > - =20 > -+ char * > -+ parser_remaining_input () > -+ { > -+ if (shell_input_line =3D=3D 0) > -+ return 0; > -+ if (shell_input_line_index < 0 || shell_input_line_index >=3D shell_in= put_line_len) > -+ return '\0'; /* XXX */ > -+ return (shell_input_line + shell_input_line_index); > -+ } > -+=20 > - #ifdef INCLUDE_UNUSED > - /* Back the input pointer up by one, effectively `ungetting' a character= . */ > -*************** > -*** 4028,4033 **** > - /* reset_parser clears shell_input_line and associated variables */ > - restore_input_line_state (&ls); > -! if (interactive) > -! token_to_read =3D 0; > - =20 > - /* Need to find how many characters parse_and_execute consumed, update > ---- 4053,4058 ---- > - /* reset_parser clears shell_input_line and associated variables */ > - restore_input_line_state (&ls); > -!=20 > -! token_to_read =3D 0; > - =20 > - /* Need to find how many characters parse_and_execute consumed, update > -*** ../bash-4.3.29/shell.h 2014-10-01 12:57:39.000000000 -0400 > ---- shell.h 2014-10-03 14:49:12.000000000 -0400 > -*************** > -*** 181,184 **** > ---- 181,186 ---- > - =20 > - /* Let's try declaring these here. */ > -+ extern char *parser_remaining_input __P((void)); > -+=20 > - extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *)); > - extern void restore_parser_state __P((sh_parser_state_t *)); > -*** ../bash-4.3.28/y.tab.c 2014-10-01 13:09:46.000000000 -0400 > ---- y.tab.c 2014-10-04 19:26:22.000000000 -0400 > -*************** > -*** 169,173 **** > - =20 > - /* Copy the first part of user declarations. */ > -! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - =20 > - #include "config.h" > ---- 169,173 ---- > - =20 > - /* Copy the first part of user declarations. */ > -! #line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - =20 > - #include "config.h" > -*************** > -*** 498,502 **** > - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED > - typedef union YYSTYPE > -! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - WORD_DESC *word; /* the word that we read. */ > ---- 498,502 ---- > - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED > - typedef union YYSTYPE > -! #line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - WORD_DESC *word; /* the word that we read. */ > -*************** > -*** 2099,2103 **** > - { > - case 2: > -! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Case of regular command. Discard the error > ---- 2099,2103 ---- > - { > - case 2: > -! #line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - /* Case of regular command. Discard the error > -*************** > -*** 2113,2117 **** > - =20 > - case 3: > -! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Case of regular command, but not a very > ---- 2113,2117 ---- > - =20 > - case 3: > -! #line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - /* Case of regular command, but not a very > -*************** > -*** 2125,2129 **** > - =20 > - case 4: > -! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Error during parsing. Return NULL command. */ > ---- 2125,2129 ---- > - =20 > - case 4: > -! #line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - /* Error during parsing. Return NULL command. */ > -*************** > -*** 2143,2147 **** > - =20 > - case 5: > -! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Case of EOF seen by itself. Do ignoreeof or > ---- 2143,2147 ---- > - =20 > - case 5: > -! #line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - /* Case of EOF seen by itself. Do ignoreeof or > -*************** > -*** 2154,2168 **** > - =20 > - case 6: > -! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WO= RD_LIST *)NULL); } > - break; > - =20 > - case 7: > -! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(2) - (2)].word), (yy= vsp[(1) - (2)].word_list)); } > - break; > - =20 > - case 8: > -! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > ---- 2154,2168 ---- > - =20 > - case 6: > -! #line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WO= RD_LIST *)NULL); } > - break; > - =20 > - case 7: > -! #line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(2) - (2)].word), (yy= vsp[(1) - (2)].word_list)); } > - break; > - =20 > - case 8: > -! #line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2173,2177 **** > - =20 > - case 9: > -! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > ---- 2173,2177 ---- > - =20 > - case 9: > -! #line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2182,2186 **** > - =20 > - case 10: > -! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2182,2186 ---- > - =20 > - case 10: > -! #line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2191,2195 **** > - =20 > - case 11: > -! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2191,2195 ---- > - =20 > - case 11: > -! #line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2200,2204 **** > - =20 > - case 12: > -! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2200,2204 ---- > - =20 > - case 12: > -! #line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2209,2213 **** > - =20 > - case 13: > -! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2209,2213 ---- > - =20 > - case 13: > -! #line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2218,2222 **** > - =20 > - case 14: > -! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > ---- 2218,2222 ---- > - =20 > - case 14: > -! #line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2227,2231 **** > - =20 > - case 15: > -! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2227,2231 ---- > - =20 > - case 15: > -! #line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2236,2240 **** > - =20 > - case 16: > -! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2236,2240 ---- > - =20 > - case 16: > -! #line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2245,2249 **** > - =20 > - case 17: > -! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > ---- 2245,2249 ---- > - =20 > - case 17: > -! #line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2254,2258 **** > - =20 > - case 18: > -! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2254,2258 ---- > - =20 > - case 18: > -! #line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2263,2267 **** > - =20 > - case 19: > -! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2263,2267 ---- > - =20 > - case 19: > -! #line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2272,2276 **** > - =20 > - case 20: > -! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > ---- 2272,2276 ---- > - =20 > - case 20: > -! #line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2281,2285 **** > - =20 > - case 21: > -! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2281,2285 ---- > - =20 > - case 21: > -! #line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2290,2294 **** > - =20 > - case 22: > -! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2290,2294 ---- > - =20 > - case 22: > -! #line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2299,2303 **** > - =20 > - case 23: > -! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > ---- 2299,2303 ---- > - =20 > - case 23: > -! #line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2309,2313 **** > - =20 > - case 24: > -! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2309,2313 ---- > - =20 > - case 24: > -! #line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2319,2323 **** > - =20 > - case 25: > -! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2319,2323 ---- > - =20 > - case 25: > -! #line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2329,2333 **** > - =20 > - case 26: > -! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > ---- 2329,2333 ---- > - =20 > - case 26: > -! #line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2339,2343 **** > - =20 > - case 27: > -! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2339,2343 ---- > - =20 > - case 27: > -! #line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2349,2353 **** > - =20 > - case 28: > -! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2349,2353 ---- > - =20 > - case 28: > -! #line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2359,2363 **** > - =20 > - case 29: > -! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > ---- 2359,2363 ---- > - =20 > - case 29: > -! #line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2368,2372 **** > - =20 > - case 30: > -! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2368,2372 ---- > - =20 > - case 30: > -! #line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2377,2381 **** > - =20 > - case 31: > -! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2377,2381 ---- > - =20 > - case 31: > -! #line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2386,2390 **** > - =20 > - case 32: > -! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > ---- 2386,2390 ---- > - =20 > - case 32: > -! #line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2395,2399 **** > - =20 > - case 33: > -! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2395,2399 ---- > - =20 > - case 33: > -! #line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2404,2408 **** > - =20 > - case 34: > -! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2404,2408 ---- > - =20 > - case 34: > -! #line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2413,2417 **** > - =20 > - case 35: > -! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > ---- 2413,2417 ---- > - =20 > - case 35: > -! #line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2422,2426 **** > - =20 > - case 36: > -! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2422,2426 ---- > - =20 > - case 36: > -! #line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2431,2435 **** > - =20 > - case 37: > -! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2431,2435 ---- > - =20 > - case 37: > -! #line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2440,2444 **** > - =20 > - case 38: > -! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > ---- 2440,2444 ---- > - =20 > - case 38: > -! #line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2449,2453 **** > - =20 > - case 39: > -! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2449,2453 ---- > - =20 > - case 39: > -! #line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2458,2462 **** > - =20 > - case 40: > -! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2458,2462 ---- > - =20 > - case 40: > -! #line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2467,2471 **** > - =20 > - case 41: > -! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > ---- 2467,2471 ---- > - =20 > - case 41: > -! #line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2476,2480 **** > - =20 > - case 42: > -! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2476,2480 ---- > - =20 > - case 42: > -! #line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2485,2489 **** > - =20 > - case 43: > -! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2485,2489 ---- > - =20 > - case 43: > -! #line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2494,2498 **** > - =20 > - case 44: > -! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > ---- 2494,2498 ---- > - =20 > - case 44: > -! #line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2503,2507 **** > - =20 > - case 45: > -! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2503,2507 ---- > - =20 > - case 45: > -! #line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2512,2516 **** > - =20 > - case 46: > -! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2512,2516 ---- > - =20 > - case 46: > -! #line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2521,2525 **** > - =20 > - case 47: > -! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 0; > ---- 2521,2525 ---- > - =20 > - case 47: > -! #line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 0; > -*************** > -*** 2530,2534 **** > - =20 > - case 48: > -! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > ---- 2530,2534 ---- > - =20 > - case 48: > -! #line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D (yyvsp[(1) - (3)].number); > -*************** > -*** 2539,2543 **** > - =20 > - case 49: > -! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > ---- 2539,2543 ---- > - =20 > - case 49: > -! #line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.filename =3D (yyvsp[(1) - (3)].word); > -*************** > -*** 2548,2552 **** > - =20 > - case 50: > -! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > ---- 2548,2552 ---- > - =20 > - case 50: > -! #line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2557,2561 **** > - =20 > - case 51: > -! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - source.dest =3D 1; > ---- 2557,2561 ---- > - =20 > - case 51: > -! #line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - source.dest =3D 1; > -*************** > -*** 2566,2585 **** > - =20 > - case 52: > -! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).= redirect =3D 0; } > - break; > - =20 > - case 53: > -! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).= redirect =3D 0; } > - break; > - =20 > - case 54: > -! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.element).redirect =3D (yyvsp[(1) - (1)].redirect); (yyval.e= lement).word =3D 0; } > - break; > - =20 > - case 55: > -! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.redirect) =3D (yyvsp[(1) - (1)].redirect); > ---- 2566,2585 ---- > - =20 > - case 52: > -! #line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).= redirect =3D 0; } > - break; > - =20 > - case 53: > -! #line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.element).word =3D (yyvsp[(1) - (1)].word); (yyval.element).= redirect =3D 0; } > - break; > - =20 > - case 54: > -! #line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.element).redirect =3D (yyvsp[(1) - (1)].redirect); (yyval.e= lement).word =3D 0; } > - break; > - =20 > - case 55: > -! #line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.redirect) =3D (yyvsp[(1) - (1)].redirect); > -*************** > -*** 2588,2592 **** > - =20 > - case 56: > -! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - register REDIRECT *t; > ---- 2588,2592 ---- > - =20 > - case 56: > -! #line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - register REDIRECT *t; > -*************** > -*** 2600,2624 **** > - =20 > - case 57: > -! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_simple_command ((yyvsp[(1) - (1)].element= ), (COMMAND *)NULL); } > - break; > - =20 > - case 58: > -! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_simple_command ((yyvsp[(2) - (2)].element= ), (yyvsp[(1) - (2)].command)); } > - break; > - =20 > - case 59: > -! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D clean_simple_command ((yyvsp[(1) - (1)].comman= d)); } > - break; > - =20 > - case 60: > -! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 61: > -! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - COMMAND *tc; > ---- 2600,2624 ---- > - =20 > - case 57: > -! #line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_simple_command ((yyvsp[(1) - (1)].element= ), (COMMAND *)NULL); } > - break; > - =20 > - case 58: > -! #line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_simple_command ((yyvsp[(2) - (2)].element= ), (yyvsp[(1) - (2)].command)); } > - break; > - =20 > - case 59: > -! #line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D clean_simple_command ((yyvsp[(1) - (1)].comman= d)); } > - break; > - =20 > - case 60: > -! #line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 61: > -! #line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - COMMAND *tc; > -*************** > -*** 2639,2708 **** > - =20 > - case 62: > -! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 63: > -! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 64: > -! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 65: > -! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 66: > -! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_while_command ((yyvsp[(2) - (5)].command)= , (yyvsp[(4) - (5)].command)); } > - break; > - =20 > - case 67: > -! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_until_command ((yyvsp[(2) - (5)].command)= , (yyvsp[(4) - (5)].command)); } > - break; > - =20 > - case 68: > -! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 69: > -! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 70: > -! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 71: > -! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 72: > -! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 73: > -! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 74: > -! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 75: > -! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wor= d_lineno[word_top]); > ---- 2639,2708 ---- > - =20 > - case 62: > -! #line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 63: > -! #line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 64: > -! #line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 65: > -! #line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 66: > -! #line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_while_command ((yyvsp[(2) - (5)].command)= , (yyvsp[(4) - (5)].command)); } > - break; > - =20 > - case 67: > -! #line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_until_command ((yyvsp[(2) - (5)].command)= , (yyvsp[(4) - (5)].command)); } > - break; > - =20 > - case 68: > -! #line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 69: > -! #line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 70: > -! #line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 71: > -! #line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 72: > -! #line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 73: > -! #line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 74: > -! #line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 75: > -! #line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wor= d_lineno[word_top]); > -*************** > -*** 2712,2716 **** > - =20 > - case 76: > -! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wor= d_lineno[word_top]); > ---- 2712,2716 ---- > - =20 > - case 76: > -! #line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (6)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), wor= d_lineno[word_top]); > -*************** > -*** 2720,2724 **** > - =20 > - case 77: > -! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wor= d_lineno[word_top]); > ---- 2720,2724 ---- > - =20 > - case 77: > -! #line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wor= d_lineno[word_top]); > -*************** > -*** 2728,2732 **** > - =20 > - case 78: > -! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wor= d_lineno[word_top]); > ---- 2728,2732 ---- > - =20 > - case 78: > -! #line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (7)].word), add_= string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), wor= d_lineno[word_top]); > -*************** > -*** 2736,2740 **** > - =20 > - case 79: > -! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REV= ERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].co= mmand), word_lineno[word_top]); > ---- 2736,2740 ---- > - =20 > - case 79: > -! #line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REV= ERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].co= mmand), word_lineno[word_top]); > -*************** > -*** 2744,2748 **** > - =20 > - case 80: > -! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REV= ERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].co= mmand), word_lineno[word_top]); > ---- 2744,2748 ---- > - =20 > - case 80: > -! #line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (10)].word), REV= ERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].co= mmand), word_lineno[word_top]); > -*************** > -*** 2752,2756 **** > - =20 > - case 81: > -! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WOR= D_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); > ---- 2752,2756 ---- > - =20 > - case 81: > -! #line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WOR= D_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); > -*************** > -*** 2760,2764 **** > - =20 > - case 82: > -! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WOR= D_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); > ---- 2760,2764 ---- > - =20 > - case 82: > -! #line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_for_command ((yyvsp[(2) - (9)].word), (WOR= D_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); > -*************** > -*** 2768,2772 **** > - =20 > - case 83: > -! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word= _list), (yyvsp[(6) - (7)].command), arith_for_lineno); > ---- 2768,2772 ---- > - =20 > - case 83: > -! #line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word= _list), (yyvsp[(6) - (7)].command), arith_for_lineno); > -*************** > -*** 2776,2780 **** > - =20 > - case 84: > -! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word= _list), (yyvsp[(6) - (7)].command), arith_for_lineno); > ---- 2776,2780 ---- > - =20 > - case 84: > -! #line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (7)].word= _list), (yyvsp[(6) - (7)].command), arith_for_lineno); > -*************** > -*** 2784,2788 **** > - =20 > - case 85: > -! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word= _list), (yyvsp[(4) - (5)].command), arith_for_lineno); > ---- 2784,2788 ---- > - =20 > - case 85: > -! #line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word= _list), (yyvsp[(4) - (5)].command), arith_for_lineno); > -*************** > -*** 2792,2796 **** > - =20 > - case 86: > -! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word= _list), (yyvsp[(4) - (5)].command), arith_for_lineno); > ---- 2792,2796 ---- > - =20 > - case 86: > -! #line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_arith_for_command ((yyvsp[(2) - (5)].word= _list), (yyvsp[(4) - (5)].command), arith_for_lineno); > -*************** > -*** 2800,2804 **** > - =20 > - case 87: > -! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), = word_lineno[word_top]); > ---- 2800,2804 ---- > - =20 > - case 87: > -! #line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), = word_lineno[word_top]); > -*************** > -*** 2808,2812 **** > - =20 > - case 88: > -! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), = word_lineno[word_top]); > ---- 2808,2812 ---- > - =20 > - case 88: > -! #line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (6)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), = word_lineno[word_top]); > -*************** > -*** 2816,2820 **** > - =20 > - case 89: > -! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), = word_lineno[word_top]); > ---- 2816,2820 ---- > - =20 > - case 89: > -! #line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), = word_lineno[word_top]); > -*************** > -*** 2824,2828 **** > - =20 > - case 90: > -! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), = word_lineno[word_top]); > ---- 2824,2828 ---- > - =20 > - case 90: > -! #line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (7)].word), a= dd_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), = word_lineno[word_top]); > -*************** > -*** 2832,2836 **** > - =20 > - case 91: > -! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), = REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)]= .command), word_lineno[word_top]); > ---- 2832,2836 ---- > - =20 > - case 91: > -! #line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), = REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)]= .command), word_lineno[word_top]); > -*************** > -*** 2840,2844 **** > - =20 > - case 92: > -! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), = REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)]= .command), word_lineno[word_top]); > ---- 2840,2844 ---- > - =20 > - case 92: > -! #line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_select_command ((yyvsp[(2) - (10)].word), = REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)]= .command), word_lineno[word_top]); > -*************** > -*** 2848,2852 **** > - =20 > - case 93: > -! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (PA= TTERN_LIST *)NULL, word_lineno[word_top]); > ---- 2848,2852 ---- > - =20 > - case 93: > -! #line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (PA= TTERN_LIST *)NULL, word_lineno[word_top]); > -*************** > -*** 2856,2860 **** > - =20 > - case 94: > -! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (7)].word), (yy= vsp[(5) - (7)].pattern), word_lineno[word_top]); > ---- 2856,2860 ---- > - =20 > - case 94: > -! #line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (7)].word), (yy= vsp[(5) - (7)].pattern), word_lineno[word_top]); > -*************** > -*** 2864,2868 **** > - =20 > - case 95: > -! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (yy= vsp[(5) - (6)].pattern), word_lineno[word_top]); > ---- 2864,2868 ---- > - =20 > - case 95: > -! #line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_case_command ((yyvsp[(2) - (6)].word), (yy= vsp[(5) - (6)].pattern), word_lineno[word_top]); > -*************** > -*** 2872,2896 **** > - =20 > - case 96: > -! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(1) - (5)].word), (y= yvsp[(5) - (5)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 97: > -! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (6)].word), (y= yvsp[(6) - (6)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 98: > -! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (4)].word), (y= yvsp[(4) - (4)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 99: > -! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 100: > -! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - COMMAND *tc; > ---- 2872,2896 ---- > - =20 > - case 96: > -! #line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(1) - (5)].word), (y= yvsp[(5) - (5)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 97: > -! #line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (6)].word), (y= yvsp[(6) - (6)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 98: > -! #line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_function_def ((yyvsp[(2) - (4)].word), (y= yvsp[(4) - (4)].command), function_dstart, function_bstart); } > - break; > - =20 > - case 99: > -! #line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 100: > -! #line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - COMMAND *tc; > -*************** > -*** 2924,2928 **** > - =20 > - case 101: > -! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_subshell_command ((yyvsp[(2) - (3)].comman= d)); > ---- 2924,2928 ---- > - =20 > - case 101: > -! #line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_subshell_command ((yyvsp[(2) - (3)].comman= d)); > -*************** > -*** 2932,2936 **** > - =20 > - case 102: > -! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_coproc_command ("COPROC", (yyvsp[(2) - (2)= ].command)); > ---- 2932,2936 ---- > - =20 > - case 102: > -! #line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_coproc_command ("COPROC", (yyvsp[(2) - (2)= ].command)); > -*************** > -*** 2940,2944 **** > - =20 > - case 103: > -! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - COMMAND *tc; > ---- 2940,2944 ---- > - =20 > - case 103: > -! #line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - COMMAND *tc; > -*************** > -*** 2960,2964 **** > - =20 > - case 104: > -! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_coproc_command ((yyvsp[(2) - (3)].word)->w= ord, (yyvsp[(3) - (3)].command)); > ---- 2960,2964 ---- > - =20 > - case 104: > -! #line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_coproc_command ((yyvsp[(2) - (3)].word)->w= ord, (yyvsp[(3) - (3)].command)); > -*************** > -*** 2968,2972 **** > - =20 > - case 105: > -! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - COMMAND *tc; > ---- 2968,2972 ---- > - =20 > - case 105: > -! #line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - COMMAND *tc; > -*************** > -*** 2988,2992 **** > - =20 > - case 106: > -! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D make_coproc_command ("COPROC", clean_simple_com= mand ((yyvsp[(2) - (2)].command))); > ---- 2988,2992 ---- > - =20 > - case 106: > -! #line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D make_coproc_command ("COPROC", clean_simple_com= mand ((yyvsp[(2) - (2)].command))); > -*************** > -*** 2996,3110 **** > - =20 > - case 107: > -! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (= yyvsp[(4) - (5)].command), (COMMAND *)NULL); } > - break; > - =20 > - case 108: > -! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (7)].command), (= yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } > - break; > - =20 > - case 109: > -! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (= yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } > - break; > - =20 > - case 110: > -! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_group_command ((yyvsp[(2) - (3)].command)= ); } > - break; > - =20 > - case 111: > -! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_arith_command ((yyvsp[(1) - (1)].word_lis= t)); } > - break; > - =20 > - case 112: > -! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(2) - (3)].command); } > - break; > - =20 > - case 113: > -! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (4)].command), (= yyvsp[(4) - (4)].command), (COMMAND *)NULL); } > - break; > - =20 > - case 114: > -! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (= yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } > - break; > - =20 > - case 115: > -! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (= yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } > - break; > - =20 > - case 117: > -! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(2) - (2)].pattern)->next =3D (yyvsp[(1) - (2)].pattern); (= yyval.pattern) =3D (yyvsp[(2) - (2)].pattern); } > - break; > - =20 > - case 118: > -! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list= ), (yyvsp[(4) - (4)].command)); } > - break; > - =20 > - case 119: > -! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list= ), (COMMAND *)NULL); } > - break; > - =20 > - case 120: > -! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list= ), (yyvsp[(5) - (5)].command)); } > - break; > - =20 > - case 121: > -! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list= ), (COMMAND *)NULL); } > - break; > - =20 > - case 122: > -! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.pattern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 123: > -! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (= yyval.pattern) =3D (yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 124: > -! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyval= .pattern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 125: > -! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyvsp= [(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) = =3D (yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 126: > -! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyval.pa= ttern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 127: > -! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyvsp[(2= ) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D (= yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 128: > -! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WO= RD_LIST *)NULL); } > - break; > - =20 > - case 129: > -! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(3) - (3)].word), (yy= vsp[(1) - (3)].word_list)); } > - break; > - =20 > - case 130: > -! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D (yyvsp[(2) - (2)].command); > ---- 2996,3110 ---- > - =20 > - case 107: > -! #line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (= yyvsp[(4) - (5)].command), (COMMAND *)NULL); } > - break; > - =20 > - case 108: > -! #line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (7)].command), (= yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } > - break; > - =20 > - case 109: > -! #line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (= yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } > - break; > - =20 > - case 110: > -! #line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_group_command ((yyvsp[(2) - (3)].command)= ); } > - break; > - =20 > - case 111: > -! #line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_arith_command ((yyvsp[(1) - (1)].word_lis= t)); } > - break; > - =20 > - case 112: > -! #line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(2) - (3)].command); } > - break; > - =20 > - case 113: > -! #line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (4)].command), (= yyvsp[(4) - (4)].command), (COMMAND *)NULL); } > - break; > - =20 > - case 114: > -! #line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (6)].command), (= yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } > - break; > - =20 > - case 115: > -! #line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D make_if_command ((yyvsp[(2) - (5)].command), (= yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } > - break; > - =20 > - case 117: > -! #line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyvsp[(2) - (2)].pattern)->next =3D (yyvsp[(1) - (2)].pattern); (= yyval.pattern) =3D (yyvsp[(2) - (2)].pattern); } > - break; > - =20 > - case 118: > -! #line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list= ), (yyvsp[(4) - (4)].command)); } > - break; > - =20 > - case 119: > -! #line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(2) - (4)].word_list= ), (COMMAND *)NULL); } > - break; > - =20 > - case 120: > -! #line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list= ), (yyvsp[(5) - (5)].command)); } > - break; > - =20 > - case 121: > -! #line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.pattern) =3D make_pattern_list ((yyvsp[(3) - (5)].word_list= ), (COMMAND *)NULL); } > - break; > - =20 > - case 122: > -! #line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.pattern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 123: > -! #line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyvsp[(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (= yyval.pattern) =3D (yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 124: > -! #line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyval= .pattern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 125: > -! #line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_FALLTHROUGH; (yyvsp= [(2) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) = =3D (yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 126: > -! #line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyvsp[(1) - (2)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyval.pa= ttern) =3D (yyvsp[(1) - (2)].pattern); } > - break; > - =20 > - case 127: > -! #line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyvsp[(2) - (3)].pattern)->flags |=3D CASEPAT_TESTNEXT; (yyvsp[(2= ) - (3)].pattern)->next =3D (yyvsp[(1) - (3)].pattern); (yyval.pattern) =3D (= yyvsp[(2) - (3)].pattern); } > - break; > - =20 > - case 128: > -! #line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(1) - (1)].word), (WO= RD_LIST *)NULL); } > - break; > - =20 > - case 129: > -! #line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.word_list) =3D make_word_list ((yyvsp[(3) - (3)].word), (yy= vsp[(1) - (3)].word_list)); } > - break; > - =20 > - case 130: > -! #line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D (yyvsp[(2) - (2)].command); > -*************** > -*** 3115,3119 **** > - =20 > - case 132: > -! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D (yyvsp[(2) - (2)].command); > ---- 3115,3119 ---- > - =20 > - case 132: > -! #line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D (yyvsp[(2) - (2)].command); > -*************** > -*** 3122,3126 **** > - =20 > - case 134: > -! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) > ---- 3122,3126 ---- > - =20 > - case 134: > -! #line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) > -*************** > -*** 3132,3146 **** > - =20 > - case 136: > -! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), AND_AND); } > - break; > - =20 > - case 137: > -! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), OR_OR); } > - break; > - =20 > - case 138: > -! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(1) - (4)].command)->type =3D=3D cm_connection) > ---- 3132,3146 ---- > - =20 > - case 136: > -! #line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), AND_AND); } > - break; > - =20 > - case 137: > -! #line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), OR_OR); } > - break; > - =20 > - case 138: > -! #line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - if ((yyvsp[(1) - (4)].command)->type =3D=3D cm_connection) > -*************** > -*** 3152,3186 **** > - =20 > - case 139: > -! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), ';'); } > - break; > - =20 > - case 140: > -! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), ';'); } > - break; > - =20 > - case 141: > -! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 144: > -! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D '\n'; } > - break; > - =20 > - case 145: > -! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D ';'; } > - break; > - =20 > - case 146: > -! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D yacc_EOF; } > - break; > - =20 > - case 149: > -! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D (yyvsp[(1) - (1)].command); > ---- 3152,3186 ---- > - =20 > - case 139: > -! #line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), ';'); } > - break; > - =20 > - case 140: > -! #line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), ';'); } > - break; > - =20 > - case 141: > -! #line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 144: > -! #line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.number) =3D '\n'; } > - break; > - =20 > - case 145: > -! #line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.number) =3D ';'; } > - break; > - =20 > - case 146: > -! #line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.number) =3D yacc_EOF; } > - break; > - =20 > - case 149: > -! #line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D (yyvsp[(1) - (1)].command); > -*************** > -*** 3198,3202 **** > - =20 > - case 150: > -! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(1) - (2)].command)->type =3D=3D cm_connection) > ---- 3198,3202 ---- > - =20 > - case 150: > -! #line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - if ((yyvsp[(1) - (2)].command)->type =3D=3D cm_connection) > -*************** > -*** 3217,3221 **** > - =20 > - case 151: > -! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - (yyval.command) =3D (yyvsp[(1) - (2)].command); > ---- 3217,3221 ---- > - =20 > - case 151: > -! #line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - (yyval.command) =3D (yyvsp[(1) - (2)].command); > -*************** > -*** 3233,3247 **** > - =20 > - case 152: > -! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), AND_AND); } > - break; > - =20 > - case 153: > -! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), OR_OR); } > - break; > - =20 > - case 154: > -! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) > ---- 3233,3247 ---- > - =20 > - case 152: > -! #line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), AND_AND); } > - break; > - =20 > - case 153: > -! #line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), OR_OR); } > - break; > - =20 > - case 154: > -! #line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - if ((yyvsp[(1) - (3)].command)->type =3D=3D cm_connection) > -*************** > -*** 3253,3272 **** > - =20 > - case 155: > -! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (3)].command), (= yyvsp[(3) - (3)].command), ';'); } > - break; > - =20 > - case 156: > -! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 157: > -! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 158: > -! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(2) - (2)].command)) > ---- 3253,3272 ---- > - =20 > - case 155: > -! #line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (3)].command), (= yyvsp[(3) - (3)].command), ';'); } > - break; > - =20 > - case 156: > -! #line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 157: > -! #line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 158: > -! #line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - if ((yyvsp[(2) - (2)].command)) > -*************** > -*** 3277,3281 **** > - =20 > - case 159: > -! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - if ((yyvsp[(2) - (2)].command)) > ---- 3277,3281 ---- > - =20 > - case 159: > -! #line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - if ((yyvsp[(2) - (2)].command)) > -*************** > -*** 3286,3290 **** > - =20 > - case 160: > -! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - ELEMENT x; > ---- 3286,3290 ---- > - =20 > - case 160: > -! #line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - ELEMENT x; > -*************** > -*** 3306,3310 **** > - =20 > - case 161: > -! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - ELEMENT x; > ---- 3306,3310 ---- > - =20 > - case 161: > -! #line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - ELEMENT x; > -*************** > -*** 3327,3336 **** > - =20 > - case 162: > -! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), '|'); } > - break; > - =20 > - case 163: > -! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { > - /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ > ---- 3327,3336 ---- > - =20 > - case 162: > -! #line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D command_connect ((yyvsp[(1) - (4)].command), (= yyvsp[(4) - (4)].command), '|'); } > - break; > - =20 > - case 163: > -! #line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { > - /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ > -*************** > -*** 3358,3377 **** > - =20 > - case 164: > -! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 165: > -! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE; } > - break; > - =20 > - case 166: > -! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } > - break; > - =20 > - case 167: > -! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } > - break; > ---- 3358,3377 ---- > - =20 > - case 164: > -! #line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.command) =3D (yyvsp[(1) - (1)].command); } > - break; > - =20 > - case 165: > -! #line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE; } > - break; > - =20 > - case 166: > -! #line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } > - break; > - =20 > - case 167: > -! #line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - { (yyval.number) =3D CMD_TIME_PIPELINE|CMD_TIME_POSIX; } > - break; > -*************** > -*** 3593,3597 **** > - =20 > - =20 > -! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" > - =20 > - =20 > ---- 3593,3597 ---- > - =20 > - =20 > -! #line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y" > - =20 > - =20 > -*************** > -*** 4851,4854 **** > ---- 4851,4864 ---- > - } > - =20 > -+ char * > -+ parser_remaining_input () > -+ { > -+ if (shell_input_line =3D=3D 0) > -+ return 0; > -+ if (shell_input_line_index < 0 || shell_input_line_index >=3D shell_in= put_line_len) > -+ return '\0'; /* XXX */ > -+ return (shell_input_line + shell_input_line_index); > -+ } > -+=20 > - #ifdef INCLUDE_UNUSED > - /* Back the input pointer up by one, effectively `ungetting' a character= . */ > -*************** > -*** 6340,6345 **** > - /* reset_parser clears shell_input_line and associated variables */ > - restore_input_line_state (&ls); > -! if (interactive) > -! token_to_read =3D 0; > - =20 > - /* Need to find how many characters parse_and_execute consumed, update > ---- 6350,6355 ---- > - /* reset_parser clears shell_input_line and associated variables */ > - restore_input_line_state (&ls); > -!=20 > -! token_to_read =3D 0; > - =20 > - /* Need to find how many characters parse_and_execute consumed, update > -*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 > ---- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 > -*************** > -*** 26,30 **** > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 29 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > ---- 26,30 ---- > - looks for to find the patch level (for the sccs version string). */ > - =20 > -! #define PATCHLEVEL 30 > - =20 > - #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-001 b/src/patches/bash/bash50-001 > new file mode 100644 > index 000000000..169317ded > --- /dev/null > +++ b/src/patches/bash/bash50-001 > @@ -0,0 +1,166 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-001 > + > +Bug-Reported-by: axel(a)freakout.de > +Bug-Reference-ID: <201901082050.x08KoShS006731(a)bongo.freakout.de> > +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg0= 0079.html > + > +Bug-Description: > + > +Under certain circumstances, the glob expansion code did not remove > +backslashes escaping characters in directory names (or portions of a > +pattern preceding a slash). > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0/bashline.c 2018-11-27 13:20:16.000000000 -0500 > +--- bashline.c 2019-01-16 16:06:03.000000000 -0500 > +*************** > +*** 232,235 **** > +--- 232,236 ---- > + static int bash_possible_command_completions __P((int, int)); > + =20 > ++ static int completion_glob_pattern __P((char *)); > + static char *glob_complete_word __P((const char *, int)); > + static int bash_glob_completion_internal __P((int)); > +*************** > +*** 1742,1746 **** > + /* This could be a globbing pattern, so try to expand it using pathname > + expansion. */ > +! if (!matches && glob_pattern_p (text)) > + { > + matches =3D rl_completion_matches (text, glob_complete_word); > +--- 1743,1747 ---- > + /* This could be a globbing pattern, so try to expand it using pathname > + expansion. */ > +! if (!matches && completion_glob_pattern ((char *)text)) > + { > + matches =3D rl_completion_matches (text, glob_complete_word); > +*************** > +*** 1851,1855 **** > + } > + =20 > +! globpat =3D glob_pattern_p (hint_text); > + =20 > + /* If this is an absolute program name, do not check it against > +--- 1852,1856 ---- > + } > + =20 > +! globpat =3D completion_glob_pattern ((char *)hint_text); > + =20 > + /* If this is an absolute program name, do not check it against > +*************** > +*** 3714,3717 **** > +--- 3715,3773 ---- > + } > + =20 > ++ static int > ++ completion_glob_pattern (string) > ++ char *string; > ++ { > ++ register int c; > ++ char *send; > ++ int open; > ++=20 > ++ DECLARE_MBSTATE; > ++=20 > ++ open =3D 0; > ++ send =3D string + strlen (string); > ++=20 > ++ while (c =3D *string++) > ++ { > ++ switch (c) > ++ { > ++ case '?': > ++ case '*': > ++ return (1); > ++=20 > ++ case '[': > ++ open++; > ++ continue; > ++=20 > ++ case ']': > ++ if (open) > ++ return (1); > ++ continue; > ++=20 > ++ case '+': > ++ case '@': > ++ case '!': > ++ if (*string =3D=3D '(') /*)*/ > ++ return (1); > ++ continue; > ++=20 > ++ case '\\': > ++ if (*string =3D=3D 0) > ++ return (0); =20 > ++ } > ++=20 > ++ /* Advance one fewer byte than an entire multibyte character to > ++ account for the auto-increment in the loop above. */ > ++ #ifdef HANDLE_MULTIBYTE > ++ string--; > ++ ADVANCE_CHAR_P (string, send - string); > ++ string++; > ++ #else > ++ ADVANCE_CHAR_P (string, send - string); > ++ #endif > ++ } > ++ return (0); > ++ } > ++=20 > + static char *globtext; > + static char *globorig; > +*************** > +*** 3878,3882 **** > + } =20 > + =20 > +! if (t && glob_pattern_p (t) =3D=3D 0) > + rl_explicit_arg =3D 1; /* XXX - force glob_complete_word to append `= *' */ > + FREE (t); > +--- 3934,3938 ---- > + } =20 > + =20 > +! if (t && completion_glob_pattern (t) =3D=3D 0) > + rl_explicit_arg =3D 1; /* XXX - force glob_complete_word to append `= *' */ > + FREE (t); > +*** ../bash-5.0/lib/glob/glob_loop.c 2018-12-31 13:35:15.000000000 -0500 > +--- lib/glob/glob_loop.c 2019-01-09 09:44:36.000000000 -0500 > +*************** > +*** 55,59 **** > + =20 > + case L('\\'): > +- #if 0 > + /* Don't let the pattern end in a backslash (GMATCH returns no match > + if the pattern ends in a backslash anyway), but otherwise return 1, > +--- 55,58 ---- > +*************** > +*** 61,69 **** > + and it can be removed. */ > + return (*p !=3D L('\0')); > +- #else > +- /* The pattern may not end with a backslash. */ > +- if (*p++ =3D=3D L('\0')) > +- return 0; > +- #endif > + } > + =20 > +--- 60,63 ---- > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 0 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 1 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-002 b/src/patches/bash/bash50-002 > new file mode 100644 > index 000000000..3fc8272f8 > --- /dev/null > +++ b/src/patches/bash/bash50-002 > @@ -0,0 +1,113 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-002 > + > +Bug-Reported-by: Ante Peric > +Bug-Reference-ID: > +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg0= 0095.html > + > +Bug-Description: > + > +When an alias value ends with an unquoted literal tab (not part of a quoted > +string or comment), alias expansion cannot correctly detect the end of the > +alias value after expanding it. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0/parser.h 2018-12-28 19:11:18.000000000 -0500 > +--- parser.h 2019-01-11 15:13:03.000000000 -0500 > +*************** > +*** 48,51 **** > +--- 48,52 ---- > + #define PST_REDIRLIST 0x080000 /* parsing a list of redirections precedi= ng a simple command name */ > + #define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases= */ > ++ #define PST_ENDALIAS 0x200000 /* just finished expanding and consuming a= n alias */ > + =20 > + /* Definition of the delimiter stack. Needed by parse.y and bashhist.c.= */ > +*** ../bash-5.0/parse.y 2019-01-02 13:57:34.000000000 -0500 > +--- parse.y 2019-01-14 08:23:31.000000000 -0500 > +*************** > +*** 2558,2567 **** > + pushed_string_list->flags !=3D PSH_DPAREN && > + (parser_state & PST_COMMENT) =3D=3D 0 && > + shell_input_line_index > 0 && > +! shell_input_line[shell_input_line_index-1] !=3D ' ' && > + shell_input_line[shell_input_line_index-1] !=3D '\n' && > + shellmeta (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && > + (current_delimiter (dstack) !=3D '\'' && current_delimiter (dstack= ) !=3D '"')) > + { > + return ' '; /* END_ALIAS */ > + } > +--- 2558,2569 ---- > + pushed_string_list->flags !=3D PSH_DPAREN && > + (parser_state & PST_COMMENT) =3D=3D 0 && > ++ (parser_state & PST_ENDALIAS) =3D=3D 0 && /* only once */ > + shell_input_line_index > 0 && > +! shellblank (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && > + shell_input_line[shell_input_line_index-1] !=3D '\n' && > + shellmeta (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && > + (current_delimiter (dstack) !=3D '\'' && current_delimiter (dstack= ) !=3D '"')) > + { > ++ parser_state |=3D PST_ENDALIAS; > + return ' '; /* END_ALIAS */ > + } > +*************** > +*** 2572,2575 **** > +--- 2574,2578 ---- > + if (uc =3D=3D 0 && pushed_string_list && pushed_string_list->flags != =3D PSH_SOURCE) > + { > ++ parser_state &=3D ~PST_ENDALIAS; > + pop_string (); > + uc =3D shell_input_line[shell_input_line_index]; > +*** ../bash-5.0/y.tab.c 2019-01-02 13:57:43.000000000 -0500 > +--- y.tab.c 2019-01-14 08:39:23.000000000 -0500 > +*************** > +*** 4874,4883 **** > + pushed_string_list->flags !=3D PSH_DPAREN && > + (parser_state & PST_COMMENT) =3D=3D 0 && > + shell_input_line_index > 0 && > +! shell_input_line[shell_input_line_index-1] !=3D ' ' && > + shell_input_line[shell_input_line_index-1] !=3D '\n' && > + shellmeta (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && > + (current_delimiter (dstack) !=3D '\'' && current_delimiter (dstack= ) !=3D '"')) > + { > + return ' '; /* END_ALIAS */ > + } > +--- 4874,4885 ---- > + pushed_string_list->flags !=3D PSH_DPAREN && > + (parser_state & PST_COMMENT) =3D=3D 0 && > ++ (parser_state & PST_ENDALIAS) =3D=3D 0 && /* only once */ > + shell_input_line_index > 0 && > +! shellblank (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && > + shell_input_line[shell_input_line_index-1] !=3D '\n' && > + shellmeta (shell_input_line[shell_input_line_index-1]) =3D=3D 0 && > + (current_delimiter (dstack) !=3D '\'' && current_delimiter (dstack= ) !=3D '"')) > + { > ++ parser_state |=3D PST_ENDALIAS; > + return ' '; /* END_ALIAS */ > + } > +*************** > +*** 4888,4891 **** > +--- 4890,4894 ---- > + if (uc =3D=3D 0 && pushed_string_list && pushed_string_list->flags != =3D PSH_SOURCE) > + { > ++ parser_state &=3D ~PST_ENDALIAS; > + pop_string (); > + uc =3D shell_input_line[shell_input_line_index]; > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 1 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 2 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-003 b/src/patches/bash/bash50-003 > new file mode 100644 > index 000000000..f7e5677e5 > --- /dev/null > +++ b/src/patches/bash/bash50-003 > @@ -0,0 +1,239 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-003 > + > +Bug-Reported-by: Andrew Church > +Bug-Reference-ID: <5c534aa2.04371(a)msgid.achurch.org> > +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg0= 0276.html > + > +Bug-Description: > + > +There are several incompatibilities in how bash-5.0 processes pathname > +expansion (globbing) of filename arguments that have backslashes in the > +directory portion. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0-patched/lib/glob/glob_loop.c 2019-01-16 16:13:21.000000000= -0500 > +--- lib/glob/glob_loop.c 2019-02-01 09:45:11.000000000 -0500 > +*************** > +*** 27,34 **** > + register const GCHAR *p; > + register GCHAR c; > +! int bopen; > + =20 > + p =3D pattern; > +! bopen =3D 0; > + =20 > + while ((c =3D *p++) !=3D L('\0')) > +--- 27,34 ---- > + register const GCHAR *p; > + register GCHAR c; > +! int bopen, bsquote; > + =20 > + p =3D pattern; > +! bopen =3D bsquote =3D 0; > + =20 > + while ((c =3D *p++) !=3D L('\0')) > +*************** > +*** 56,66 **** > + case L('\\'): > + /* Don't let the pattern end in a backslash (GMATCH returns no match > +! if the pattern ends in a backslash anyway), but otherwise return 1, > +! since the matching engine uses backslash as an escape character > +! and it can be removed. */ > +! return (*p !=3D L('\0')); > + } > + =20 > +! return 0; > + } > + =20 > +--- 56,75 ---- > + case L('\\'): > + /* Don't let the pattern end in a backslash (GMATCH returns no match > +! if the pattern ends in a backslash anyway), but otherwise note that = > +! we have seen this, since the matching engine uses backslash as an > +! escape character and it can be removed. We return 2 later if we > +! have seen only backslash-escaped characters, so interested callers > +! know they can shortcut and just dequote the pathname. */ > +! if (*p !=3D L('\0')) > +! { > +! p++; > +! bsquote =3D 1; > +! continue; > +! } > +! else /* (*p =3D=3D L('\0')) */ > +! return 0; > + } > + =20 > +! return bsquote ? 2 : 0; > + } > + =20 > +*** ../bash-5.0-patched/lib/glob/glob.h 2013-10-28 14:46:12.000000000 -0400 > +--- lib/glob/glob.h 2019-03-07 11:06:47.000000000 -0500 > +*************** > +*** 31,34 **** > +--- 31,35 ---- > + #define GX_ADDCURDIR 0x200 /* internal -- add passed directory name */ > + #define GX_GLOBSTAR 0x400 /* turn on special handling of ** */ > ++ #define GX_RECURSE 0x800 /* internal -- glob_filename called recursively= */ > + =20 > + extern int glob_pattern_p __P((const char *)); > +*** ../bash-5.0-patched/lib/glob/glob.c 2018-09-20 10:53:23.000000000 -0400 > +--- lib/glob/glob.c 2019-03-07 14:23:43.000000000 -0500 > +*************** > +*** 1062,1066 **** > + unsigned int directory_len; > + int free_dirname; /* flag */ > +! int dflags; > + =20 > + result =3D (char **) malloc (sizeof (char *)); > +--- 1078,1082 ---- > + unsigned int directory_len; > + int free_dirname; /* flag */ > +! int dflags, hasglob; > + =20 > + result =3D (char **) malloc (sizeof (char *)); > +*************** > +*** 1111,1117 **** > + } > + =20 > + /* If directory_name contains globbing characters, then we > +! have to expand the previous levels. Just recurse. */ > +! if (directory_len > 0 && glob_pattern_p (directory_name)) > + { > + char **directories, *d, *p; > +--- 1127,1136 ---- > + } > + =20 > ++ hasglob =3D 0; > + /* If directory_name contains globbing characters, then we > +! have to expand the previous levels. Just recurse. > +! If glob_pattern_p returns !=3D [0,1] we have a pattern that has bac= kslash > +! quotes but no unquoted glob pattern characters. We dequote it below= . */ > +! if (directory_len > 0 && (hasglob =3D glob_pattern_p (directory_name))= =3D=3D 1) > + { > + char **directories, *d, *p; > +*************** > +*** 1176,1180 **** > + d[directory_len - 1] =3D '\0'; > + =20 > +! directories =3D glob_filename (d, dflags); > + =20 > + if (free_dirname) > +--- 1195,1199 ---- > + d[directory_len - 1] =3D '\0'; > + =20 > +! directories =3D glob_filename (d, dflags|GX_RECURSE); > + =20 > + if (free_dirname) > +*************** > +*** 1333,1336 **** > +--- 1352,1369 ---- > + return (NULL); > + } > ++ /* If we have a directory name with quoted characters, and we are > ++ being called recursively to glob the directory portion of a pathname, > ++ we need to dequote the directory name before returning it so the > ++ caller can read the directory */ > ++ if (directory_len > 0 && hasglob =3D=3D 2 && (flags & GX_RECURSE) = !=3D 0) > ++ { > ++ dequote_pathname (directory_name); > ++ directory_len =3D strlen (directory_name); > ++ } > ++=20 > ++ /* We could check whether or not the dequoted directory_name is a > ++ directory and return it here, returning the original directory_name > ++ if not, but we don't do that yet. I'm not sure it matters. */ > ++=20 > + /* Handle GX_MARKDIRS here. */ > + result[0] =3D (char *) malloc (directory_len + 1); > +*** ../bash-5.0-patched/pathexp.c 2018-04-29 17:44:48.000000000 -0400 > +--- pathexp.c 2019-01-31 20:19:41.000000000 -0500 > +*************** > +*** 66,74 **** > + register int c; > + char *send; > +! int open; > + =20 > + DECLARE_MBSTATE; > + =20 > +! open =3D 0; > + send =3D string + strlen (string); > + =20 > +--- 66,74 ---- > + register int c; > + char *send; > +! int open, bsquote; > + =20 > + DECLARE_MBSTATE; > + =20 > +! open =3D bsquote =3D 0; > + send =3D string + strlen (string); > + =20 > +*************** > +*** 101,105 **** > + globbing. */ > + case '\\': > +! return (*string !=3D 0); > + =20 > + case CTLESC: > +--- 101,112 ---- > + globbing. */ > + case '\\': > +! if (*string !=3D '\0' && *string !=3D '/') > +! { > +! bsquote =3D 1; > +! string++; > +! continue; > +! } > +! else if (*string =3D=3D 0) > +! return (0); > + =20 > + case CTLESC: > +*************** > +*** 118,122 **** > + #endif > + } > +! return (0); > + } > + =20 > +--- 125,130 ---- > + #endif > + } > +!=20 > +! return (bsquote ? 2 : 0); > + } > + =20 > +*** ../bash-5.0-patched/bashline.c 2019-01-16 16:13:21.000000000 -0500 > +--- bashline.c 2019-02-22 09:29:08.000000000 -0500 > +*************** > +*** 3753,3757 **** > + =20 > + case '\\': > +! if (*string =3D=3D 0) > + return (0); =20 > + } > +--- 3766,3770 ---- > + =20 > + case '\\': > +! if (*string++ =3D=3D 0) > + return (0); =20 > + } > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 2 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 3 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-004 b/src/patches/bash/bash50-004 > new file mode 100644 > index 000000000..fe3c764bd > --- /dev/null > +++ b/src/patches/bash/bash50-004 > @@ -0,0 +1,53 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-004 > + > +Bug-Reported-by: Daniel Kahn Gillmor > +Bug-Reference-ID: <87lg0g8aiw.fsf(a)fifthhorseman.net> > +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-04/msg0= 0076.html > + > +Bug-Description: > + > +In bash-5.0, the `wait' builtin without arguments waits for all children o= f the > +shell. This includes children it `inherited' at shell invocation time. This > +patch modifies the behavior to not wait for these inherited children, some > +of which might be long-lived. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0-patched/jobs.c 2018-12-06 11:44:34.000000000 -0500 > +--- jobs.c 2019-04-12 15:15:10.000000000 -0400 > +*************** > +*** 2489,2496 **** > + wait_procsubs (); > + reap_procsubs (); > +! #if 1 > + /* We don't want to wait indefinitely if we have stopped children. */ > +- /* XXX - should add a loop that goes through the list of process > +- substitutions and waits for each proc in turn before this code. */ > + if (any_stopped =3D=3D 0) > + { > +--- 2490,2495 ---- > + wait_procsubs (); > + reap_procsubs (); > +! #if 0 > + /* We don't want to wait indefinitely if we have stopped children. */ > + if (any_stopped =3D=3D 0) > + { > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 3 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 4 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-005 b/src/patches/bash/bash50-005 > new file mode 100644 > index 000000000..9b1cd75b0 > --- /dev/null > +++ b/src/patches/bash/bash50-005 > @@ -0,0 +1,110 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-005 > + > +Bug-Reported-by: Brad Spencer > +Bug-Reference-ID: <1b993ff2-ce4f-662a-6be4-393457362e47(a)blackberry.com> > +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg0= 0250.html > + > +Bug-Description: > + > +In certain cases, bash optimizes out a fork() call too early and prevents > +traps from running. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0-patched/command.h 2018-07-20 21:16:31.000000000 -0400 > +--- command.h 2019-02-20 11:09:36.000000000 -0500 > +*************** > +*** 187,190 **** > +--- 188,192 ---- > + #define CMD_LASTPIPE 0x2000 > + #define CMD_STDPATH 0x4000 /* use standard path for command lookup */ > ++ #define CMD_TRY_OPTIMIZING 0x8000 /* try to optimize this simple comman= d */ > + =20 > + /* What a command looks like. */ > +*** ../bash-5.0-patched/builtins/evalstring.c 2018-12-26 11:19:21.00000000= 0 -0500 > +--- builtins/evalstring.c 2019-01-29 14:15:19.000000000 -0500 > +*************** > +*** 101,104 **** > +--- 101,113 ---- > + } > + =20 > ++ int > ++ can_optimize_connection (command) > ++ COMMAND *command; > ++ { > ++ return (*bash_input.location.string =3D=3D '\0' && > ++ (command->value.Connection->connector =3D=3D AND_AND || command->valu= e.Connection->connector =3D=3D OR_OR || command->value.Connection->connector = =3D=3D ';') && > ++ command->value.Connection->second->type =3D=3D cm_simple); > ++ } > ++=20 > + void > + optimize_fork (command) > +*************** > +*** 106,110 **** > + { > + if (command->type =3D=3D cm_connection && > +! (command->value.Connection->connector =3D=3D AND_AND || command->v= alue.Connection->connector =3D=3D OR_OR) && > + should_suppress_fork (command->value.Connection->second)) > + { > +--- 115,120 ---- > + { > + if (command->type =3D=3D cm_connection && > +! (command->value.Connection->connector =3D=3D AND_AND || command->v= alue.Connection->connector =3D=3D OR_OR || command->value.Connection->connect= or =3D=3D ';') && > +! (command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) && > + should_suppress_fork (command->value.Connection->second)) > + { > +*************** > +*** 413,418 **** > + command->value.Simple->flags |=3D CMD_NO_FORK; > + } > +! else if (command->type =3D=3D cm_connection) > +! optimize_fork (command); > + #endif /* ONESHOT */ > + =20 > +--- 423,438 ---- > + command->value.Simple->flags |=3D CMD_NO_FORK; > + } > +!=20 > +! /* Can't optimize forks out here execept for simple commands. > +! This knows that the parser sets up commands as left-side heavy > +! (&& and || are left-associative) and after the single parse, > +! if we are at the end of the command string, the last in a > +! series of connection commands is > +! command->value.Connection->second. */ > +! else if (command->type =3D=3D cm_connection && can_optimize_conne= ction (command)) > +! { > +! command->value.Connection->second->flags |=3D CMD_TRY_OPTIMIZING; > +! command->value.Connection->second->value.Simple->flags |=3D CMD_TRY_= OPTIMIZING; > +! } > + #endif /* ONESHOT */ > + =20 > +*** ../bash-5.0-patched/execute_cmd.c 2018-12-05 09:05:14.000000000 -0500 > +--- execute_cmd.c 2019-01-25 15:59:00.000000000 -0500 > +*************** > +*** 2768,2771 **** > +--- 2768,2773 ---- > + (exec_result !=3D EXECUTION_SUCCESS))) > + { > ++ optimize_fork (command); > ++=20 > + second =3D command->value.Connection->second; > + if (ignore_return && second) > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 4 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 5 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-006 b/src/patches/bash/bash50-006 > new file mode 100644 > index 000000000..2ad1cd200 > --- /dev/null > +++ b/src/patches/bash/bash50-006 > @@ -0,0 +1,47 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-006 > + > +Bug-Reported-by: Tomas Mozes > +Bug-Reference-ID: > +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-03/msg0= 0037.html > + > +Bug-Description: > + > +Bash-5.0 did not build successfully if SYSLOG_HISTORY was defined without > +also defining SYSLOG_SHOPT. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0-patched/builtins/shopt.def 2018-10-05 14:49:02.000000000 -= 0400 > +--- builtins/shopt.def 2019-01-23 09:55:22.000000000 -0500 > +*************** > +*** 123,127 **** > + #endif > + =20 > +! #if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) > + extern int syslog_history; > + #endif > +--- 123,127 ---- > + #endif > + =20 > +! #if defined (SYSLOG_HISTORY) > + extern int syslog_history; > + #endif > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 5 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 6 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-007 b/src/patches/bash/bash50-007 > new file mode 100644 > index 000000000..b9eb4150a > --- /dev/null > +++ b/src/patches/bash/bash50-007 > @@ -0,0 +1,62 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-007 > + > +Bug-Reported-by: Grisha Levit > +Bug-Reference-ID: > +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-02/msg0= 0067.html > + > +Bug-Description: > + > +Running `exec' when job control was disabled, even temporarily, but after = it > +had been initialized, could leave the terminal in the wrong process group = for > +the executed process. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0-patched/jobs.c 2018-12-06 11:44:34.000000000 -0500 > +--- jobs.c 2019-04-12 15:15:10.000000000 -0400 > +*************** > +*** 4838,4850 **** > + { > + if (job_control) > +! { > +! terminate_stopped_jobs (); > + =20 > +! if (original_pgrp >=3D 0) > +! give_terminal_to (original_pgrp, 1); > +! } > + =20 > +! if (original_pgrp >=3D 0) > +! setpgid (0, original_pgrp); > + } > + =20 > +--- 4838,4848 ---- > + { > + if (job_control) > +! terminate_stopped_jobs (); > + =20 > +! if (original_pgrp >=3D 0 && terminal_pgrp !=3D original_pgrp) > +! give_terminal_to (original_pgrp, 1); > + =20 > +! if (original_pgrp >=3D 0 && setpgid (0, original_pgrp) =3D=3D 0) > +! shell_pgrp =3D original_pgrp; > + } > + =20 > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 6 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 7 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-008 b/src/patches/bash/bash50-008 > new file mode 100644 > index 000000000..b09d6b33a > --- /dev/null > +++ b/src/patches/bash/bash50-008 > @@ -0,0 +1,68 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-008 > + > +Bug-Reported-by: Michael Albinus > +Bug-Reference-ID: <87bm36k3kz.fsf(a)gmx.de> > +Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-02/msg= 00111.html > + > +Bug-Description: > + > +When HISTSIZE is set to 0, history expansion can leave the history length > +set to an incorrect value, leading to subsequent attempts to access invalid > +memory. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0-patched/bashhist.c 2018-07-05 22:41:14.000000000 -0400 > +--- bashhist.c 2019-02-20 16:20:04.000000000 -0500 > +*************** > +*** 561,573 **** > + if (!history_expansion_inhibited && history_expansion && history_expan= sion_p (line)) > + { > + /* If we are expanding the second or later line of a multi-line > + command, decrease history_length so references to history expansions > + in these lines refer to the previous history entry and not the > + current command. */ > + if (history_length > 0 && command_oriented_history && current_comm= and_first_line_saved && current_command_line_count > 1) > + history_length--; > + expanded =3D history_expand (line, &history_value); > + if (history_length >=3D 0 && command_oriented_history && current_c= ommand_first_line_saved && current_command_line_count > 1) > +! history_length++; > + =20 > + if (expanded) > +--- 561,576 ---- > + if (!history_expansion_inhibited && history_expansion && history_expan= sion_p (line)) > + { > ++ int old_len; > ++=20 > + /* If we are expanding the second or later line of a multi-line > + command, decrease history_length so references to history expansions > + in these lines refer to the previous history entry and not the > + current command. */ > ++ old_len =3D history_length; > + if (history_length > 0 && command_oriented_history && current_comm= and_first_line_saved && current_command_line_count > 1) > + history_length--; > + expanded =3D history_expand (line, &history_value); > + if (history_length >=3D 0 && command_oriented_history && current_c= ommand_first_line_saved && current_command_line_count > 1) > +! history_length =3D old_len; > + =20 > + if (expanded) > + > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 7 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 8 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-009 b/src/patches/bash/bash50-009 > new file mode 100644 > index 000000000..aef4ce7b5 > --- /dev/null > +++ b/src/patches/bash/bash50-009 > @@ -0,0 +1,42 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-009 > + > +Bug-Reported-by: chet.ramey(a)case.edu > +Bug-Reference-ID: > +Bug-Reference-URL: > + > +Bug-Description: > + > +The history file reading code doesn't close the file descriptor open to > +the history file when it encounters a zero-length file. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0-patched/lib/readline/histfile.c 2018-06-11 09:14:52.000000= 000 -0400 > +--- lib/readline/histfile.c 2019-05-16 15:55:57.000000000 -0400 > +*************** > +*** 306,309 **** > +--- 312,316 ---- > + { > + free (input); > ++ close (file); > + return 0; /* don't waste time if we don't have to */ > + } > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 8 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 9 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-010 b/src/patches/bash/bash50-010 > new file mode 100644 > index 000000000..bac7aa925 > --- /dev/null > +++ b/src/patches/bash/bash50-010 > @@ -0,0 +1,172 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-010 > + > +Bug-Reported-by: Thorsten Glaser > +Bug-Reference-ID: <156622962831.19438.16374961114836556294.reportbug(a)tgl= ase.lan.tarent.de> > +Bug-Reference-URL: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D935= 115 > + > +Bug-Description: > + > +Bash-5.0 changed the way assignment statements preceding special builtins > +and shell functions were handled in posix mode. They automatically created > +or modified global variables instead of modifying existing local variables > +as in bash-4.4. > + > +The bash-4.4 posix-mode semantics were buggy, and resulted in creating > +local variables where they were not intended and modifying global variables > +and local variables simultaneously. > + > +The bash-5.0 changes were intended to fix this issue, but did not preserve > +enough backwards compatibility. The posix standard also changed what it > +required in these cases, so bash-5.0 is not bound by the strict conformance > +requirements that existed in previous issues of the standard. > + > +This patch modifies the bash-5.0 posix mode behavior in an effort to resto= re > +some backwards compatibility and rationalize the behavior in the presence = of > +local variables. It > + > +1. Changes the assignment semantics to be more similar to standalone assig= nment > + statements: assignments preceding a function call or special builtin wh= ile > + executing in a shell function will modify the value of a local variable > + with the same name for the duration of the function's execution; > + > +2. Changes assignments preceding shell function calls or special builtins > + from within a shell function to no longer create or modify global varia= bles > + in the presence of a local variable with the same name; > + > +3. Assignment statements preceding a shell function call or special builtin > + at the global scope continue to modify the (global) calling environment, > + but are unaffected by assignments preceding function calls or special > + builtins within a function, as described in item 2. This is also similar > + to the behavior of a standalone assignment statement. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0-patched/variables.c 2018-12-18 11:07:21.000000000 -0500 > +--- variables.c 2019-08-22 10:53:44.000000000 -0400 > +*************** > +*** 4461,4467 **** > + =20 > + /* Take a variable from an assignment statement preceding a posix special > +! builtin (including `return') and create a global variable from it. Th= is > +! is called from merge_temporary_env, which is only called when in posix > +! mode. */ > + static void > + push_posix_temp_var (data) > +--- 4461,4467 ---- > + =20 > + /* Take a variable from an assignment statement preceding a posix special > +! builtin (including `return') and create a variable from it as if a > +! standalone assignment statement had been performed. This is called fr= om > +! merge_temporary_env, which is only called when in posix mode. */ > + static void > + push_posix_temp_var (data) > +*************** > +*** 4473,4486 **** > + var =3D (SHELL_VAR *)data; > + =20 > +! binding_table =3D global_variables->table; > +! if (binding_table =3D=3D 0) > +! binding_table =3D global_variables->table =3D hash_create (VARIABLES= _HASH_BUCKETS); > +!=20 > +! v =3D bind_variable_internal (var->name, value_cell (var), binding_tab= le, 0, ASS_FORCE|ASS_NOLONGJMP); > + =20 > + /* global variables are no longer temporary and don't need propagating= . */ > +! var->attributes &=3D ~(att_tempvar|att_propagate); > + if (v) > +! v->attributes |=3D var->attributes; > + =20 > + if (find_special_var (var->name) >=3D 0) > +--- 4473,4497 ---- > + var =3D (SHELL_VAR *)data; > + =20 > +! /* Just like do_assignment_internal(). This makes assignments preceding > +! special builtins act like standalone assignment statements when in > +! posix mode, satisfying the posix requirement that this affect the > +! "current execution environment." */ > +! v =3D bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONG= JMP); > +!=20 > +! /* If this modifies an existing local variable, v->context will be non= -zero. > +! If it comes back with v->context =3D=3D 0, we bound at the global c= ontext. > +! Set binding_table appropriately. It doesn't matter whether it's cor= rect > +! if the variable is local, only that it's not global_variables->tabl= e */ > +! binding_table =3D v->context ? shell_variables->table : global_variabl= es->table; > + =20 > + /* global variables are no longer temporary and don't need propagating= . */ > +! if (binding_table =3D=3D global_variables->table) > +! var->attributes &=3D ~(att_tempvar|att_propagate); > +!=20 > + if (v) > +! { > +! v->attributes |=3D var->attributes; > +! v->attributes &=3D ~att_tempvar; /* not a temp var now */ > +! } > + =20 > + if (find_special_var (var->name) >=3D 0) > +*************** > +*** 4576,4587 **** > + { > + int i; > + =20 > + tempvar_list =3D strvec_create (HASH_ENTRIES (temporary_env) + 1); > + tempvar_list[tvlist_ind =3D 0] =3D 0; > +! =20 > +! hash_flush (temporary_env, pushf); > +! hash_dispose (temporary_env); > + temporary_env =3D (HASH_TABLE *)NULL; > + =20 > + tempvar_list[tvlist_ind] =3D 0; > + =20 > +--- 4587,4601 ---- > + { > + int i; > ++ HASH_TABLE *disposer; > + =20 > + tempvar_list =3D strvec_create (HASH_ENTRIES (temporary_env) + 1); > + tempvar_list[tvlist_ind =3D 0] =3D 0; > +!=20 > +! disposer =3D temporary_env; > + temporary_env =3D (HASH_TABLE *)NULL; > + =20 > ++ hash_flush (disposer, pushf); > ++ hash_dispose (disposer); > ++=20 > + tempvar_list[tvlist_ind] =3D 0; > + =20 > +*** ../bash-5.0-patched/tests/varenv.right 2018-12-17 15:39:48.000000000 -= 0500 > +--- tests/varenv.right 2019-08-22 16:05:25.000000000 -0400 > +*************** > +*** 147,153 **** > + outside: declare -- var=3D"one" > + inside: declare -x var=3D"value" > +! outside: declare -x var=3D"value" > +! inside: declare -- var=3D"local" > +! outside: declare -x var=3D"global" > + foo=3D environment foo=3D > + foo=3Dfoo environment foo=3Dfoo > +--- 147,153 ---- > + outside: declare -- var=3D"one" > + inside: declare -x var=3D"value" > +! outside: declare -- var=3D"outside" > +! inside: declare -x var=3D"global" > +! outside: declare -- var=3D"outside" > + foo=3D environment foo=3D > + foo=3Dfoo environment foo=3Dfoo > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 9 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 10 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > diff --git a/src/patches/bash/bash50-011 b/src/patches/bash/bash50-011 > new file mode 100644 > index 000000000..a9ae690e0 > --- /dev/null > +++ b/src/patches/bash/bash50-011 > @@ -0,0 +1,59 @@ > + BASH PATCH REPORT > + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Bash-Release: 5.0 > +Patch-ID: bash50-011 > + > +Bug-Reported-by: Matt Whitlock > +Bug-Reference-ID:=09 > +Bug-Reference-URL: https://savannah.gnu.org/support/?109671 > + > +Bug-Description: > + > +The conditional command did not perform appropriate quoted null character > +removal on its arguments, causing syntax errors and attempts to stat > +invalid pathnames. > + > +Patch (apply with `patch -p0'): > + > +*** ../bash-5.0-patched/subst.c 2018-12-22 17:43:37.000000000 -0500 > +--- subst.c 2019-04-14 13:25:41.000000000 -0400 > +*************** > +*** 3626,3630 **** > + SPECIAL is 2, this is an rhs argument for the =3D~ operator, and shou= ld > + be quoted appropriately for regcomp/regexec. The caller is responsib= le > +! for removing the backslashes if the unquoted word is needed later. */= =20 > + char * > + cond_expand_word (w, special) > +--- 3642,3648 ---- > + SPECIAL is 2, this is an rhs argument for the =3D~ operator, and shou= ld > + be quoted appropriately for regcomp/regexec. The caller is responsib= le > +! for removing the backslashes if the unquoted word is needed later. In > +! any case, since we don't perform word splitting, we need to do quoted > +! null character removal. */ > + char * > + cond_expand_word (w, special) > +*************** > +*** 3647,3650 **** > +--- 3665,3670 ---- > + if (special =3D=3D 0) /* LHS */ > + { > ++ if (l->word) > ++ word_list_remove_quoted_nulls (l); > + dequote_list (l); > + r =3D string_list (l); > +*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 > +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 > +*************** > +*** 26,30 **** > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 10 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > +--- 26,30 ---- > + looks for to find the patch level (for the sccs version string). */ > + =20 > +! #define PATCHLEVEL 11 > + =20 > + #endif /* _PATCHLEVEL_H_ */ > --=20 > 2.16.4 --===============0987718953205991396==--