summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/FAQ35
-rw-r--r--debian/README122
-rw-r--r--debian/README.abs-guide26
-rw-r--r--debian/README.bash_completion18
-rw-r--r--debian/README.commands189
-rw-r--r--debian/bash-builtins.718
-rw-r--r--debian/bash-doc.doc-base.bash14
-rw-r--r--debian/bash-doc.doc-base.bashref10
-rw-r--r--debian/bash-static.overrides5
-rw-r--r--debian/bash-static.postinst13
-rw-r--r--debian/bash-static.postrm21
-rw-r--r--debian/bash.menu2
-rw-r--r--debian/bash.overrides5
-rw-r--r--debian/bash.postinst26
-rw-r--r--debian/bash.postrm22
-rw-r--r--debian/bash.preinst-lib.c131
-rw-r--r--debian/bash.preinst.c170
-rw-r--r--debian/bash.preinst.h37
-rw-r--r--debian/bash.prerm22
-rw-r--r--debian/bashbug.168
-rw-r--r--debian/changelog2318
-rw-r--r--debian/clear_console.150
-rw-r--r--debian/clear_console.c285
-rw-r--r--debian/compat1
-rw-r--r--debian/control72
-rw-r--r--debian/copyright224
-rw-r--r--debian/etc.bash.bashrc55
-rw-r--r--debian/etc.inputrc17
-rw-r--r--debian/etc.profile27
-rw-r--r--debian/inputrc.arrows30
-rw-r--r--debian/locale-gen30
-rw-r--r--debian/patches/bash-aliases-repeat.diff28
-rw-r--r--debian/patches/bash-default-editor.diff35
-rw-r--r--debian/patches/bash-minimal.dpatch62
-rw-r--r--debian/patches/bash-subst-param-length.diff13
-rw-r--r--debian/patches/bash43-001.diff52
-rw-r--r--debian/patches/bash43-002.diff52
-rw-r--r--debian/patches/bash43-003.diff42
-rw-r--r--debian/patches/bash43-004.diff41
-rw-r--r--debian/patches/bash43-005.diff55
-rw-r--r--debian/patches/bash43-006.diff42
-rw-r--r--debian/patches/bash43-007.diff48
-rw-r--r--debian/patches/bash43-008.diff153
-rw-r--r--debian/patches/bash43-009.diff55
-rw-r--r--debian/patches/bash43-010.diff153
-rw-r--r--debian/patches/bash43-011.diff42
-rw-r--r--debian/patches/bash43-012.diff44
-rw-r--r--debian/patches/bash43-013.diff58
-rw-r--r--debian/patches/bash43-014.diff101
-rw-r--r--debian/patches/bash43-015.diff54
-rw-r--r--debian/patches/bash43-016.diff129
-rw-r--r--debian/patches/bash43-017.diff47
-rw-r--r--debian/patches/bash43-018.diff44
-rw-r--r--debian/patches/bash43-019.diff83
-rw-r--r--debian/patches/bash43-020.diff103
-rw-r--r--debian/patches/bash43-021.diff52
-rw-r--r--debian/patches/bash43-022.diff53
-rw-r--r--debian/patches/bash43-023.diff86
-rw-r--r--debian/patches/bash43-024.diff51
-rw-r--r--debian/patches/bash43-025.diff119
-rw-r--r--debian/patches/bash43-026.diff58
-rw-r--r--debian/patches/bash43-027.diff178
-rw-r--r--debian/patches/bash43-028.diff1530
-rw-r--r--debian/patches/bash43-029.diff54
-rw-r--r--debian/patches/bash43-030.diff1404
-rw-r--r--debian/patches/bashbug-editor.diff12
-rw-r--r--debian/patches/bzero.diff13
-rw-r--r--debian/patches/deb-bash-config.diff52
-rw-r--r--debian/patches/deb-examples.diff14
-rw-r--r--debian/patches/exec-redirections-doc.diff29
-rw-r--r--debian/patches/input-err.diff15
-rw-r--r--debian/patches/man-arithmetic.diff16
-rw-r--r--debian/patches/man-bash.diff11
-rw-r--r--debian/patches/man-bashlogout.diff16
-rw-r--r--debian/patches/man-bashrc.diff66
-rw-r--r--debian/patches/man-builtin.dpatch29
-rw-r--r--debian/patches/man-fignore.diff17
-rw-r--r--debian/patches/man-nocaseglob.diff17
-rw-r--r--debian/patches/man-test.diff15
-rw-r--r--debian/patches/man-test2.diff46
-rw-r--r--debian/patches/man-vx-opts.dpatch34
-rw-r--r--debian/patches/no-brk-caching.diff47
-rw-r--r--debian/patches/pgrp-pipe.diff11
-rw-r--r--debian/patches/privmode.diff19
-rw-r--r--debian/patches/random.dpatch107
-rw-r--r--debian/patches/rbash-manpage.diff12
-rw-r--r--debian/patches/rl-del-backspace-policy.dpatch48
-rw-r--r--debian/patches/rl-examples-bdb.dpatch30
-rw-r--r--debian/patches/rl-header.dpatch28
-rw-r--r--debian/patches/rl-setenv.dpatch30
-rw-r--r--debian/patches/series51
-rw-r--r--debian/patches/use-system-texi2html.diff15
-rwxr-xr-xdebian/rules450
-rw-r--r--debian/run-my-gprof32
-rw-r--r--debian/skel.bash_logout7
-rw-r--r--debian/skel.bashrc113
-rw-r--r--debian/skel.profile22
-rw-r--r--debian/source/format1
-rw-r--r--debian/source/lintian-overrides2
-rw-r--r--debian/watch2
100 files changed, 10613 insertions, 0 deletions
diff --git a/debian/FAQ b/debian/FAQ
new file mode 100644
index 0000000..a866068
--- /dev/null
+++ b/debian/FAQ
@@ -0,0 +1,35 @@
+[ The original document has a license, which doesn't allow inclusion of the
+ FAQ in the main section of the Debian packages and therefore isn't
+ distributed in the Debian packages for bash. Pleae get it from the upstream
+ location.
+]
+
+-----------
+This is the Bash FAQ, version 3.20, for Bash version 2.05b.
+
+This document contains a set of frequently-asked questions concerning
+Bash, the GNU Bourne-Again Shell. Bash is a freely-available command
+interpreter with advanced features for both interactive use and shell
+programming.
+
+Another good source of basic information about shells is the collection
+of FAQ articles periodically posted to comp.unix.shell.
+
+Questions and comments concerning this document should be sent to
+chet@po.cwru.edu.
+
+This document is available for anonymous FTP with the URL
+
+ftp://ftp.cwru.edu/pub/bash/FAQ
+
+The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
+
+The original document has the following license:
+-----------
+This document is Copyright 1995-2002 by Chester Ramey.
+
+Permission is hereby granted, without written agreement and
+without license or royalty fees, to use, copy, and distribute
+this document for any purpose, provided that the above copyright
+notice appears in all copies of this document and that the
+contents of this document remain unaltered.
diff --git a/debian/README b/debian/README
new file mode 100644
index 0000000..bb5e878
--- /dev/null
+++ b/debian/README
@@ -0,0 +1,122 @@
+Bash Configuration for Debian
+-----------------------------
+
+A number of patches for the bash sources is applied for the Debian build
+of bash. See the details at the end of the file.
+
+The bash package was built using the following configuration options:
+
+ --with-curses \
+ --enable-largefile \
+
+bash-static additionally configured with --enable-static-link.
+
+The upstream ChangeLog can be found in the bash-doc package.
+
+
+A kind of FAQ for bash on Debian GNU/{Linux,Hurd}
+-------------------------------------------------
+
+1. symlinked directory completion behavior
+
+ Starting with readline-4.2a, completion on symlinks that point
+ to directories does not append the slash. To restore the behaviour
+ found in readline-4.2, add to /etc/inputrc or ~/.inputrc:
+
+ set mark-symlinked-directories on
+
+2. How can I make bash 8-bit clean so I can type hi-bit characters
+ directly?
+
+ Remove the comments from the indicated lines in /etc/inputrc.
+ It doesn't ship this way because otherwise the Meta bindings will not work.
+
+3. How to get rid off annoying beeps for ambiguous completions?
+
+ Put in /etc/inputrc (or in your ~/.inputrc):
+
+ set show-all-if-ambiguous on
+
+ Other people prefer:
+
+ set bell-style none
+
+4. bash doesn't display prompts correctly.
+
+ When using colors in prompts (or escape characters), then make sure
+ those characters are surrounded by \[ and \]. For more information
+ look at the man page bash(1) and search for PROMPTING.
+
+5. What is /etc/bash.bashrc? It doesn't seem to be documented.
+
+ The Debian version of bash is compiled with a special option
+ (-DSYS_BASHRC) that makes bash read /etc/bash.bashrc before ~/.bashrc
+ for interactive non-login shells. So, on Debian systems,
+ /etc/bash.bashrc is to ~/.bashrc as /etc/profile is to
+ ~/.bash_profile.
+
+6. bash does not check $PATH if hash fails
+
+ bash hashes the location of recently executed commands. When a command
+ is moved to a new location in the PATH, the command is still in the PATH
+ but the hash table still records the old location.
+
+ For performance reasons bash does not remove the command from the hash
+ and relook it up in PATH.
+
+ Use 'hash -r' manually or set a bash option: 'shopt -s checkhash'.
+
+7. Bourne-style shells have always accepted multiple directory name arguments
+ to cd. If the user doesn't like it, have him define a shell function:
+
+ cd()
+ {
+ case $# in
+ 0|1) ;;
+ *) echo "cd: too many arguments ; return 2 ;;
+ esac
+ builtin cd "$@"
+ }
+
+8. key bindings for ESC
+
+ Consider the following .inputrc:
+
+ set editing-mode vi
+
+ keymap vi
+ "\M-[D": backward-char
+ "\M-[C": forward-char
+ "\M-[A": previous-history
+ "\M-[B": next-history
+
+ And, just to be certain, set -o reports that vi is on.
+
+ However, ESC k does not send me to the previous line.
+
+ I'm guessing that this is a conflict between bash's concept of a meta
+ keymap and its concept of vi's command-mode character -- which is to
+ say that its data structures don't properly reflect its implementation.
+
+ Note that if I remove the meta prefix, leaving lines like:
+ "[A": previous-history
+
+ That vi command mode keys work fine, and I can use the arrow keys in vi
+ mode, *provided I'm already in command mode already*. In other words,
+ bash is doing something wrong here such that it doesn't see the escape
+ character at the beginning of the key sequence even when in vi insert mode.
+
+ Comment from the upstream author: "This guy destroyed the key binding for
+ ESC, which effectively disabled vi command mode. It's not as simple as he
+ paints it to be -- the binding for ESC in the vi insertion keymap *must*
+ be a function because of the other things needed when switching
+ from insert mode to command mode.
+
+ If he wants to change something in vi's command mode, he needs
+ to use `set keymap vi-command' and enter key bindings without
+ the \M- prefix (as he discovered)."
+
+
+Patches Applied to the Bash Sources
+-----------------------------------
+
diff --git a/debian/README.abs-guide b/debian/README.abs-guide
new file mode 100644
index 0000000..7a69558
--- /dev/null
+++ b/debian/README.abs-guide
@@ -0,0 +1,26 @@
+[ This is just a pointer to a document, which you might find helpful]
+
+ Advanced Bash-Scripting Guide
+
+ A complete guide to shell scripting, using Bash
+
+ Mendel Cooper - Brindlesoft
+
+ thegrendel@theriver.com
+
+
+This tutorial assumes no previous knowledge of scripting or programming, but
+progresses rapidly toward an intermediate/advanced level of instruction
+(...all the while sneaking in little snippets of UNIX wisdom and lore). It
+serves as a textbook, a manual for self-study, and a reference and source
+of knowledge on shell scripting techniques. The exercises and heavily-
+commented examples invite active reader participation, under the premise that
+the only way to really learn scripting is to write scripts.
+
+The guide is availabe at http://tldp.org/LDP/abs/html/
+
+The latest update of this document, as an archived "tarball" including both
+the SGML source and rendered HTML, may be downloaded from the author's home
+site (http://personal.riverusers.com/~thegrendel/abs-guide-2.1.tar.bz2). See
+the change log for a revision history
+(http://personal.riverusers.com/~thegrendel/Change.log).
diff --git a/debian/README.bash_completion b/debian/README.bash_completion
new file mode 100644
index 0000000..7be4235
--- /dev/null
+++ b/debian/README.bash_completion
@@ -0,0 +1,18 @@
+ Programmable Completion
+ =======================
+
+[BUG REPORTING: Please direct all enhancement requests directly to the
+ bash_completion maintainer, the completion script won't be changed for
+ Debian specific enhancements. If you find a real bug, report it the usual
+ way. The bash_completion author can be reached at
+ http://freshmeat.net/projects/bashcompletion/
+
+ If you find a newer version on freshmeat, you can replace it, if you did
+ not change the Debian version.
+]
+
+To enable programmable completion for bash on Debian, uncomment the
+bash_completion lines in /etc/bash.bashrc to source
+/usr/share/bash-completion/bash_completion.
+/usr/share/bash-completion/bash_completion sources ~/.bash_completion, if
+it exists.
diff --git a/debian/README.commands b/debian/README.commands
new file mode 100644
index 0000000..8e2aaf6
--- /dev/null
+++ b/debian/README.commands
@@ -0,0 +1,189 @@
+ This is a jumping-off reference point for new users who may be
+ completely unfamiliar with Linux commands. It does not contain all
+ the information you need about using the Linux console, but instead
+ just gives you enough information to get started finding the
+ information you need.
+
+Linux Commands
+
+ To run a command, type the command at the prompt, followed by any
+ necessary options, and then press the Enter or Return key.
+
+ Most commands operate silently unless they are specifically asked to
+ say what they are doing. If there is no error message, the command
+ should have worked.
+
+ The operation of most commands can be changed by putting command
+ options immediately after the command name. There are several styles
+ of options used, and you have to check the documentation for each
+ command to know what options it can take, and what they do.
+
+ Linux commands are case-sensitive, and almost always are all
+ lower-case. ls is a valid command; LS is not.
+
+ In most cases you can use the tab key to ask the command shell to
+ auto-complete the command, directory or filename you have started
+ to type. If a unique completion exists, the shell will type it. If
+ not, you can press tab a second time to obtain a list of the
+ possible auto-completions.
+
+Commands for Reading Documentation
+
+ In the following command examples, the [ ] characters are not
+ typed, they mean that whatever is enclosed is optional. For
+ example, you can also start `info' without any subject at all.
+
+ When a given keyboard shortcut is preceded by ctrl- or alt- , that
+ means hold the control or alt key down, and type the given key
+ while holding it down (the same way you use the shift key). A
+ shorthand notation for ctrl- is ^ (^C means ctrl-C).
+
+ man subject
+ man shows the manual page on the command (use q or ctrl-C to
+ get out of it if it doesn't terminate at the end of the
+ text).
+
+ info [subject]
+ A lot of Debian Linux documentation is provided in info
+ format. This is similar to a hypertext format, in that you
+ can jump to other sections of the documentation by following
+ links embedded in the text. An info tutorial is available
+ within info, using ctrl-h followed by h.
+
+ help [subject]
+ Use help for on-line help about the shell's built-in commands.
+ help by itself prints a list of subjects for which you can
+ ask for help.
+
+ pager filename
+ pager displays a plain text file one screen at a time.
+ Additional screens can be displayed by pressing the space
+ bar, and previous screens can be displayed by pressing the b
+ key. When finished viewing the help, press q to return to
+ the prompt.
+
+ Using -h --help with | pager
+ Most commands offer very brief built-in help by typing the
+ command followed by
+
+ -h or --help
+
+ If the help scrolls up beyond the top of the screen before
+ you can read it, add
+
+ | pager
+
+ to the end of the command.
+
+ zmore document.gz
+ zmore is a document pager -- it displays the contents of
+ compressed documentation on your disk, one screenful at a
+ time. Compression is signified by filenames ending in .gz .
+
+ lynx [document] or lynx [directory] or lynx [url]
+ lynx is a text-based web browser. It can display documents
+ (plain-text, compressed, or html), directory listings, and
+ urls such as www.google.com. It does not display images.
+
+Commands for Navigating Directories
+
+ pwd
+ Displays your current working directory. The p stands for
+ print, which is a carryover from when unix was designed,
+ before the advent of computer screens. Interactive computer
+ responses were printed on paper by a connected electric
+ typewriter instead of being displayed electronically.
+
+ cd [directory]
+ Change your current directory to the named directory. If you
+ don't specify directory, you will be returned to your home
+ directory. The `root' directory is signified by / at the
+ beginning of the directory path ( / also separates directory
+ and file names within the path). Thus paths beginning with /
+ are `absolute' paths; cd will take you to an absolute path
+ no matter what your current directory is. Paths not
+ beginning with / specify paths relative to your
+ current directory. cd .. means change to the parent
+ directory of your current working directory.
+
+ ls [directory]
+ ls lists the contents of directory. If you don't specify a
+ directory name, the current working directory's list is
+ displayed.
+
+ find directory -name filename
+ find tells you where filename is in the tree starting at
+ directory. This command has many other useful options.
+
+Documentation Indices
+
+ The standard doc-linux-text package installs compressed text linux
+ HOWTOs in
+
+ /usr/share/doc/HOWTO/en-txt/
+
+ Particularly helpful HOWTOs for new users are
+
+ /usr/share/doc/HOWTO/en-txt/Unix-and-Internet-Fundamentals-HOWTO.gz
+ /usr/share/doc/HOWTO/en-txt/mini/INDEX.gz
+ /usr/share/doc/HOWTO/en-txt/Reading-List-HOWTO.gz
+ /usr/share/doc/HOWTO/en-txt/META-FAQ.gz
+
+ Individual package documentation is installed in
+
+ /usr/share/doc/<package-name>
+
+ New user website references include
+
+ http://www.debian.org/doc/FAQ
+ http://www.linuxdoc.org/LDP/gs/gs.html
+
+Recording User Sessions
+
+ script filename
+ Use script to record everything that appears on the screen
+ (until the next exit) in filename. This is useful if you
+ need to record what's going on in order to include it in
+ your message when you ask for help. Use exit, logout or
+ ctrl-D to stop the recording session.
+
+Turning Echo On/Off
+
+ To turn off echoing of characters to the screen, you can use
+ ctrl-S. ctrl-Q starts the echo again. If your terminal suddenly
+ seems to become unresponsive, try ctrl-Q; you may have accidentally
+ typed ctrl-S which activated echo-off.
+
+Virtual Consoles
+
+ By default, six virtual consoles are provided. If you want to
+ execute another command without interrupting the operation of a
+ command you previously started, you can switch to another virtual
+ console (similar to a separate window). This is very handy for
+ displaying the documentation for a command in one console while
+ actually trying the command in another. Switch consoles 1 through 6
+ by using alt-F1 through alt-F6.
+
+Logging Out
+
+ exit or logout
+
+ Use exit or logout to terminate your session and log
+ out. You should be returned to the log-in prompt.
+
+Turning Off the Computer
+
+ Turning the computer on and off is really a system administration
+ subject, but I include it here because it is something that every
+ user who is his own administrator needs to know.
+
+ halt or shutdown -t 0 -h now
+ This command shuts the computer down safely. You can also
+ use ctrl-alt-del if your system is set up for that. (If you
+ are in X, ctrl-alt-del will be intercepted by X. Get out of
+ X first by using ctrl-alt-backspace.)
+
+
+To display this file one screen at a time, type
+
+pager /usr/share/doc/doc-linux-text/README.commands
diff --git a/debian/bash-builtins.7 b/debian/bash-builtins.7
new file mode 100644
index 0000000..69220eb
--- /dev/null
+++ b/debian/bash-builtins.7
@@ -0,0 +1,18 @@
+.\" This is a hack to force bash builtins into the whatis database
+.\" and to get the list of builtins to come up with the man command.
+.TH BASH-BUILTINS 7 "2001 October 29" "GNU Bash-2.05a"
+.SH NAME
+bash-builtins \- bash built-in commands, see \fBbash\fR(1)
+.SH SYNOPSIS
+bash defines the following built-in commands:
+:, ., [, alias, bg, bind, break, builtin, case, cd, command, compgen, complete,
+continue, declare, dirs, disown, echo, enable, eval, exec, exit,
+export, fc, fg, getopts, hash, help, history, if, jobs, kill,
+let, local, logout, popd, printf, pushd, pwd, read, readonly, return, set,
+shift, shopt, source, suspend, test, times, trap, type, typeset,
+ulimit, umask, unalias, unset, until, wait, while.
+.SH BASH BUILTIN COMMANDS
+.nr zZ 1
+.so man1/bash.1
+.SH SEE ALSO
+bash(1), sh(1)
diff --git a/debian/bash-doc.doc-base.bash b/debian/bash-doc.doc-base.bash
new file mode 100644
index 0000000..d37255a
--- /dev/null
+++ b/debian/bash-doc.doc-base.bash
@@ -0,0 +1,14 @@
+Document: bash
+Title: Bash Manual Page
+Author: Chet Ramey
+Abstract: Bash is an sh-compatible command language interpreter that executes
+ commands read from the standard input or from a file. Bash also
+ incorporates useful features from the Korn and C shells (ksh and csh).
+Section: Shells
+
+Format: html
+Index: /usr/share/doc/bash/bash.html
+Files: /usr/share/doc/bash/bash.html
+
+Format: pdf
+Files: /usr/share/doc/bash/bash.pdf
diff --git a/debian/bash-doc.doc-base.bashref b/debian/bash-doc.doc-base.bashref
new file mode 100644
index 0000000..8567b57
--- /dev/null
+++ b/debian/bash-doc.doc-base.bashref
@@ -0,0 +1,10 @@
+Document: bashref
+Title: Bash Reference Manual
+Author: Chet Ramey
+Abstract: Bash is an sh-compatible command language interpreter that executes
+ commands read from the standard input or from a file. Bash also
+ incorporates useful features from the Korn and C shells (ksh and csh).
+Section: Shells
+
+Format: pdf
+Files: /usr/share/doc/bash/bashref.pdf
diff --git a/debian/bash-static.overrides b/debian/bash-static.overrides
new file mode 100644
index 0000000..141d67d
--- /dev/null
+++ b/debian/bash-static.overrides
@@ -0,0 +1,5 @@
+# yes lintian, it's called -static
+bash-static binary: embedded-library
+
+# no, used conditionally
+bash-static binary: manpage-has-errors-from-man
diff --git a/debian/bash-static.postinst b/debian/bash-static.postinst
new file mode 100644
index 0000000..bb30da7
--- /dev/null
+++ b/debian/bash-static.postinst
@@ -0,0 +1,13 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = configure ] && dpkg --compare-versions "$2" le 3.2-4 \
+ && which add-shell >/dev/null
+then
+ add-shell /bin/bash-static
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/bash-static.postrm b/debian/bash-static.postrm
new file mode 100644
index 0000000..11c9ab4
--- /dev/null
+++ b/debian/bash-static.postrm
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+ upgrade|failed-upgrade|abort-install|abort-upgrade)
+ ;;
+ remove|purge|disappear)
+ if which remove-shell >/dev/null && [ -f /etc/shells ]; then
+ remove-shell /bin/bash-static
+ fi
+ ;;
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/bash.menu b/debian/bash.menu
new file mode 100644
index 0000000..eb84b2d
--- /dev/null
+++ b/debian/bash.menu
@@ -0,0 +1,2 @@
+?package(bash):needs="text" section="Applications/Shells" title="Bash" command="/bin/bash --login"
+?package(bash):needs="text" section="Applications/Shells" title="Sh" command="/bin/sh --login"
diff --git a/debian/bash.overrides b/debian/bash.overrides
new file mode 100644
index 0000000..ddb81f7
--- /dev/null
+++ b/debian/bash.overrides
@@ -0,0 +1,5 @@
+# no, used conditionally
+bash binary: manpage-has-errors-from-man
+
+# we have NEWS, CHANGES and changelog ...
+bash binary: wrong-name-for-upstream-changelog
diff --git a/debian/bash.postinst b/debian/bash.postinst
new file mode 100644
index 0000000..b803c95
--- /dev/null
+++ b/debian/bash.postinst
@@ -0,0 +1,26 @@
+#! /bin/bash
+
+set -e
+
+# This should never happen.
+if [ ! -e /bin/sh ]; then
+ ln -s bash /bin/sh
+fi
+
+update-alternatives --install \
+ /usr/share/man/man7/builtins.7.gz \
+ builtins.7.gz \
+ /usr/share/man/man7/bash-builtins.7.gz \
+ 10 \
+ || true
+
+if [ "$1" = configure ] && dpkg --compare-versions "$2" le 3.2-3 \
+ && which add-shell >/dev/null
+then
+ add-shell /bin/bash
+ add-shell /bin/rbash
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/bash.postrm b/debian/bash.postrm
new file mode 100644
index 0000000..fcdbda8
--- /dev/null
+++ b/debian/bash.postrm
@@ -0,0 +1,22 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+ upgrade|failed-upgrade|abort-install|abort-upgrade)
+ ;;
+ remove|purge|disappear)
+ if which remove-shell >/dev/null && [ -f /etc/shells ]; then
+ remove-shell /bin/bash
+ remove-shell /bin/rbash
+ fi
+ ;;
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/bash.preinst-lib.c b/debian/bash.preinst-lib.c
new file mode 100644
index 0000000..87497b6
--- /dev/null
+++ b/debian/bash.preinst-lib.c
@@ -0,0 +1,131 @@
+/*
+ * This file is in the public domain.
+ * You may freely use, modify, distribute, and relicense it.
+ */
+
+#include "bash.preinst.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <spawn.h>
+
+extern char **environ;
+
+__attribute__((format(printf, 1, 0)))
+static void vreportf(const char *err, va_list params, int errnum)
+{
+ fprintf(stderr, "bash.preinst: ");
+ vfprintf(stderr, err, params);
+ if (errnum)
+ fprintf(stderr, ": %s", strerror(errnum));
+ fprintf(stderr, "\n");
+}
+
+__attribute__((format(printf, 1, 2)))
+NORETURN void die_errno(const char *fmt, ...)
+{
+ va_list params;
+ va_start(params, fmt);
+ vreportf(fmt, params, errno);
+ va_end(params);
+ exit(1);
+}
+
+__attribute__((format(printf, 1, 2)))
+NORETURN void die(const char *fmt, ...)
+{
+ va_list params;
+ va_start(params, fmt);
+ vreportf(fmt, params, 0);
+ va_end(params);
+ exit(1);
+}
+
+int exists(const char *file)
+{
+ struct stat sb;
+ if (!lstat(file, &sb))
+ return 1;
+ if (errno == ENOENT)
+ return 0;
+ die_errno("cannot get status of %s", file);
+}
+
+void set_cloexec(int fd)
+{
+ int flags = fcntl(fd, F_GETFD);
+ if (flags < 0 || fcntl(fd, F_SETFD, flags | FD_CLOEXEC))
+ die_errno("cannot set close-on-exec flag");
+}
+
+void xpipe(int pipefd[2])
+{
+ if (pipe(pipefd))
+ die_errno("cannot create pipe");
+ set_cloexec(pipefd[0]);
+ set_cloexec(pipefd[1]);
+}
+
+void wait_or_die(pid_t child, const char *name, int flags)
+{
+ int status;
+ if (waitpid(child, &status, 0) != child)
+ die_errno("cannot wait for %s", name);
+ if ((WIFEXITED(status) && WEXITSTATUS(status) == 0) ||
+ ((flags & ERROR_OK) && WIFEXITED(status)) ||
+ ((flags & SIGPIPE_OK) &&
+ WIFSIGNALED(status) && WTERMSIG(status) == SIGPIPE))
+ return;
+
+ if (WIFEXITED(status))
+ die("%s exited with status %d", name, WEXITSTATUS(status));
+ if (WIFSIGNALED(status))
+ die("%s killed by signal %d", name, WTERMSIG(status));
+ if (WIFSTOPPED(status))
+ die("%s stopped by signal %d", name, WSTOPSIG(status));
+ die("waitpid is confused (status=%d)", status);
+}
+
+pid_t spawn(const char * const cmd[], int out, int err)
+{
+ pid_t child;
+ posix_spawn_file_actions_t redir;
+
+ if (posix_spawn_file_actions_init(&redir) ||
+ (out >= 0 && posix_spawn_file_actions_adddup2(&redir, out, 1)) ||
+ (err >= 0 && posix_spawn_file_actions_adddup2(&redir, err, 2)) ||
+ posix_spawnp(&child, cmd[0], &redir, NULL,
+ (char **) cmd, environ) ||
+ posix_spawn_file_actions_destroy(&redir))
+ die_errno("cannot run %s", cmd[0]);
+ return child;
+}
+
+void run(const char * const cmd[])
+{
+ pid_t child = spawn(cmd, -1, -1);
+ wait_or_die(child, cmd[0], 0);
+}
+
+FILE *spawn_pipe(pid_t *pid, const char * const cmd[], int errfd)
+{
+ int pipefd[2];
+ FILE *f;
+
+ xpipe(pipefd);
+ *pid = spawn(cmd, pipefd[1], errfd);
+ if (close(pipefd[1]) || (errfd != -1 && close(errfd)))
+ die_errno("cannot close unneeded fd");
+
+ f = fdopen(pipefd[0], "r");
+ if (!f)
+ die_errno("cannot stream read end of pipe");
+ return f;
+}
diff --git a/debian/bash.preinst.c b/debian/bash.preinst.c
new file mode 100644
index 0000000..14baeab
--- /dev/null
+++ b/debian/bash.preinst.c
@@ -0,0 +1,170 @@
+/*
+ * This file is in the public domain.
+ * You may freely use, modify, distribute, and relicense it.
+ */
+
+#include "bash.preinst.h"
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+static void backup(const char *file, const char *dest)
+{
+ const char * const cmd[] = {"cp", "-dp", file, dest, NULL};
+ if (exists(file))
+ run(cmd);
+}
+
+static void force_symlink(const char *target, const char *link,
+ const char *temp)
+{
+ /*
+ * Forcibly create a symlink to "target" from "link".
+ * This is performed in two stages with an
+ * intermediate temporary file because symlink(2) cannot
+ * atomically replace an existing file.
+ */
+ if ((unlink(temp) && errno != ENOENT) ||
+ symlink(target, temp) ||
+ rename(temp, link))
+ die_errno("cannot create symlink %s -> %s", link, target);
+}
+
+static void reset_diversion(const char *package, const char *file,
+ const char *distrib)
+{
+ const char * const remove_old_diversion[] =
+ {"dpkg-divert", "--package", "bash", "--remove", file, NULL};
+ const char * const new_diversion[] =
+ {"dpkg-divert", "--package", package,
+ "--divert", distrib, "--add", file, NULL};
+ run(remove_old_diversion);
+ run(new_diversion);
+}
+
+static int has_binsh_line(FILE *file)
+{
+ char item[sizeof("/bin/sh\n")];
+
+ while (fgets(item, sizeof(item), file)) {
+ int ch;
+
+ if (!memcmp(item, "/bin/sh\n", strlen("/bin/sh\n") + 1))
+ return 1;
+ if (strchr(item, '\n'))
+ continue;
+
+ /* Finish the line. */
+ for (ch = 0; ch != '\n' && ch != EOF; ch = fgetc(file))
+ ; /* just reading */
+ if (ch == EOF)
+ break;
+ }
+ if (ferror(file))
+ die_errno("cannot read pipe");
+ return 0;
+}
+
+static int binsh_in_filelist(const char *package)
+{
+ const char * const cmd[] = {"dpkg-query", "-L", package, NULL};
+ pid_t child;
+ int sink;
+ FILE *in;
+ int found;
+
+ /*
+ * dpkg -L $package 2>/dev/null | ...
+ *
+ * Redirection of stderr is for quieter output
+ * when $package is not installed. If opening /dev/null
+ * fails, no problem; leave stderr alone in that case.
+ */
+ sink = open("/dev/null", O_WRONLY);
+ if (sink >= 0)
+ set_cloexec(sink);
+ in = spawn_pipe(&child, cmd, sink);
+
+ /* ... | grep "^/bin/sh\$" */
+ found = has_binsh_line(in);
+ if (fclose(in))
+ die_errno("cannot close read end of pipe");
+
+ /*
+ * dpkg -L will error out if $package is not already installed.
+ *
+ * We stopped reading early if we found a match, so
+ * tolerate SIGPIPE in that case.
+ */
+ wait_or_die(child, "dpkg-query -L", ERROR_OK |
+ (found ? SIGPIPE_OK : 0));
+ return found;
+}
+
+static int undiverted(const char *path)
+{
+ const char * const cmd[] =
+ {"dpkg-divert", "--listpackage", path, NULL};
+ pid_t child;
+ char packagename[sizeof("bash\n")];
+ size_t len;
+ FILE *in = spawn_pipe(&child, cmd, -1);
+ int diverted = 1;
+
+ /* Is $path diverted by someone other than bash? */
+
+ len = fread(packagename, 1, sizeof(packagename), in);
+ if (ferror(in))
+ die_errno("cannot read from dpkg-divert");
+ if (len == 0)
+ diverted = 0; /* No diversion. */
+ if (len == strlen("bash\n") && !memcmp(packagename, "bash\n", len))
+ diverted = 0; /* Diverted by bash. */
+
+ if (fclose(in))
+ die_errno("cannot close read end of pipe");
+ wait_or_die(child, "dpkg-divert", ERROR_OK | SIGPIPE_OK);
+ return !diverted;
+}
+
+int main(int argc, char *argv[])
+{
+ /* /bin/sh needs to point to a valid target. */
+
+ if (access("/bin/sh", X_OK)) {
+ backup("/bin/sh", "/bin/sh.distrib");
+ backup("/usr/share/man/man1/sh.1.gz",
+ "/usr/share/man/man1/sh.distrib.1.gz");
+
+ force_symlink("bash", "/bin/sh", "/bin/sh.temp");
+ force_symlink("bash.1.gz", "/usr/share/man/man1/sh.1.gz",
+ "/usr/share/man/man1/sh.1.gz.temp");
+ }
+ if (!binsh_in_filelist("bash"))
+ /* Ready. */
+ return 0;
+
+ /*
+ * In bash (<= 4.1-3), the bash package included symlinks for
+ * /bin/sh and the sh(1) manpage in its data.tar.
+ *
+ * Unless we are careful, unpacking the new version of bash
+ * will remove them. So we tell dpkg that the files from bash
+ * to be removed are elsewhere, using a diversion on behalf of
+ * another package.
+ *
+ * Based on an idea by Michael Stone.
+ * “You're one sick individual.” -- Anthony Towns
+ * http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=85;bug=34717
+ */
+ if (undiverted("/bin/sh"))
+ reset_diversion("dash", "/bin/sh", "/bin/sh.distrib");
+ if (undiverted("/usr/share/man/man1/sh.1.gz"))
+ reset_diversion("dash", "/usr/share/man/man1/sh.1.gz",
+ "/usr/share/man/man1/sh.distrib.1.gz");
+ return 0;
+}
diff --git a/debian/bash.preinst.h b/debian/bash.preinst.h
new file mode 100644
index 0000000..82faf49
--- /dev/null
+++ b/debian/bash.preinst.h
@@ -0,0 +1,37 @@
+#ifndef BASH_PREINST_H
+#define BASH_PREINST_H
+
+/*
+ * This file is in the public domain.
+ * You may freely use, modify, distribute, and relicense it.
+ */
+
+#define _XOPEN_SOURCE 700
+#include <stdio.h>
+#include <stdarg.h>
+#include <sys/types.h>
+
+#if !defined(__GNUC__) && !defined(__attribute__)
+# define __attribute__(x)
+#endif
+#define NORETURN __attribute__((__noreturn__))
+#define PRINTFLIKE __attribute__((format(printf, 1, 2)))
+
+enum wait_or_die_flags {
+ ERROR_OK = 1,
+ SIGPIPE_OK = 2
+};
+
+extern NORETURN PRINTFLIKE void die_errno(const char *fmt, ...);
+extern NORETURN PRINTFLIKE void die(const char *fmt, ...);
+
+extern int exists(const char *path);
+extern void set_cloexec(int fd);
+extern void xpipe(int pipefd[2]);
+
+extern void wait_or_die(pid_t child, const char *desc, int flags);
+extern pid_t spawn(const char * const cmd[], int outfd, int errfd);
+extern void run(const char * const cmd[]); /* spawn and wait */
+extern FILE *spawn_pipe(pid_t *pid, const char * const cmd[], int errfd);
+
+#endif
diff --git a/debian/bash.prerm b/debian/bash.prerm
new file mode 100644
index 0000000..52052a2
--- /dev/null
+++ b/debian/bash.prerm
@@ -0,0 +1,22 @@
+#! /bin/bash
+
+set -e
+
+case "$1" in
+ upgrade)
+ update-alternatives --remove builtins.7.gz \
+ /usr/share/man/man7/bash-builtins.7.gz
+ ;;
+
+ remove|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
diff --git a/debian/bashbug.1 b/debian/bashbug.1
new file mode 100644
index 0000000..d620e63
--- /dev/null
+++ b/debian/bashbug.1
@@ -0,0 +1,68 @@
+.TH "BASHBUG" "1" "11 December 2007" "GNU Bash 3\.1" "bashbug"
+.nh
+.ad l
+.SH "NAME"
+bashbug - report a bug in bash
+.SH "SYNOPSIS"
+.HP 8
+\fBbashbug\fR [\fB\-\-help\fR] [\fB\-\-version\fR] [\fB\fIbug\-report\-email\-addresses\fR\fR]
+.SH "DESCRIPTION"
+.PP
+
+\fBbashbug\fR
+is a utility for reporting bugs in Bash to the maintainers\.
+.PP
+
+\fBbashbug\fR
+will start up your preferred editor with a preformatted bug report template for you to fill in\. Save the file and quit the editor once you have completed the missing fields\.
+\fBbashbug\fR
+will notify you of any problems with the report and ask for confirmation before sending it\. By default the bug report is mailed to both the GNU developers and the Debian Bash maintainers\. The recipients can be changed by giving a comma separated list of
+\fIbug\-report\-email\-addresses\fR\.
+.PP
+If you invoke
+\fBbashbug\fR
+by accident, just quit your editor\. You will always be asked for confirmation before a bug report is sent\.
+.SH "OPTIONS"
+.PP
+.PP
+\fB\-\-help\fR
+.RS
+Show a brief usage message and exit\.
+.RE
+.PP
+\fB\-\-version\fR
+.RS
+Show the version of
+\fBbashbug\fR
+and exit\.
+.RE
+.PP
+\fBbug\-report\-email\-addresses\fR
+.RS
+Comma separated list of recipients\' email addresses\. By default the report is mailed to both the GNU developers and the Debian Bash maintainers\.
+.RE
+.SH "ENVIRONMENT"
+.PP
+.PP
+\fBDEFEDITOR\fR
+.RS
+Editor to use for editing the bug report\.
+.RE
+.PP
+\fBEDITOR\fR
+.RS
+Editor to use for editing the bug report (overridden by
+\fBDEFEDITOR\fR)\.
+.RE
+.SH "SEE ALSO"
+.PP
+
+\fBbash\fR(1),
+\fBreportbug\fR(1),
+\fBupdate-alternatives\fR(8)
+for preferred editor\.
+.SH "AUTHOR"
+.PP
+This manual page was written by Christer Andersson
+<klamm@comhem\.se>
+for the Debian project (but may be used by others)\.
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..8809884
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,2318 @@
+bash (4.3-11) unstable; urgency=medium
+
+ * Apply upstream patches 028 - 030.
+ * Remove the parser-oob patch.
+
+ -- Matthias Klose <doko@debian.org> Tue, 07 Oct 2014 16:20:35 +0200
+
+bash (4.3-10) unstable; urgency=medium
+
+ * Apply upstream patches 026 and 027.
+ * Remove patches CVE-2014-6271 and variables-affix.
+
+ -- Matthias Klose <doko@ubuntu.com> Tue, 30 Sep 2014 13:36:38 +0200
+
+bash (4.3-9.2) unstable; urgency=high
+
+ * Non-maintainer upload by the Security Team.
+ * Add variables-affix.patch patch.
+ Apply patch from Florian Weimer to add prefix and suffix for environment
+ variable names which contain shell functions.
+ * Add parser-oob.patch patch.
+ Fixes two out-of-bound array accesses in the bash parser.
+
+ -- Thijs Kinkhorst <thijs@debian.org> Thu, 25 Sep 2014 21:27:16 +0000
+
+bash (4.3-9.1) unstable; urgency=high
+
+ * Non-maintainer upload by the security team
+ * Apply upstream patch bash43-025, fixing CVE-2014-6271.
+
+ -- Florian Weimer <fw@deneb.enyo.de> Wed, 24 Sep 2014 20:29:30 +0200
+
+bash (4.3-9) unstable; urgency=medium
+
+ * Apply upstream patches 023 - 024, fixing the issues:
+ - bash does not correctly parse process substitution constructs that
+ contain unbalanced parentheses as part of the contained command.
+ - 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='bar[1]' ; echo ${!foo}).
+ * debian/skel.bashrc: Add GCC_COLORS setting (disabled by default).
+
+ -- Matthias Klose <doko@debian.org> Thu, 21 Aug 2014 22:58:16 +0200
+
+bash (4.3-8) unstable; urgency=medium
+
+ * Apply upstream patches 012 - 022, fixing the issues:
+ - 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.
+ - Using reverse-i-search when horizontal scrolling is enabled does not
+ redisplay the entire line containing the successful search results.
+ - Under certain circumstances, $@ is expanded incorrectly in contexts
+ where word splitting is not performed.
+ - When completing directory names, the directory name is dequoted twice.
+ This causes problems for directories with single and double quotes in
+ their names.
+ - An extended glob pattern containing a slash (`/') causes the globbing
+ code to misinterpret it as a directory separator.
+ - 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.
+ - 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.
+ - The -t timeout option to `read' does not work when the -e option is used.
+ LP: #1317476.
+ - When PS2 contains a command substitution, here-documents entered in an
+ interactive shell can sometimes cause a segmentation fault.
+ - 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
+ free and a segmentation fault. Closes: #747341.
+ - Using nested pipelines within loops with the `lastpipe' option set can
+ result in a segmentation fault.
+ * Fix typo in package description. Closes: #707810.
+
+ -- Matthias Klose <doko@debian.org> Sun, 03 Aug 2014 18:14:31 +0200
+
+bash (4.3-7) unstable; urgency=medium
+
+ * Apply upstream patches 009 - 011 (replacing local patches):
+ - Fix a problem with unsigned sign extension when attempting to reallocate
+ 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.
+ - Change the behavior of programmable completion to compensate for two
+ assumptions made by the bash-completion package.
+ - 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.
+
+ -- Matthias Klose <doko@debian.org> Wed, 16 Apr 2014 23:10:28 +0200
+
+bash (4.3-6) unstable; urgency=medium
+
+ * Apply upstream patches 001 - 008:
+ - 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'.
+ - A change to save state while running the DEBUG trap caused pipelines to
+ hang on systems which need process group synchronization while building
+ pipelines.
+ - When in callback mode, some readline commands can cause readline
+ to segfault by passing invalid contexts to callback functions.
+ - The `.' command in vi mode cannot undo multi-key commands beginning with
+ `c', `d', and `y' (command plus motion specifier).
+ - When in Posix mode, bash did not correctly interpret the ANSI-C-style
+ $'...' quoting mechanism when performing pattern substitution word
+ expansions within double quotes.
+ - 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.
+ - Using compound assignments for associative arrays like
+ assoc=( [x]= [y]=bar )
+ left the value corresponding to the key `x' NULL. This caused
+ subsequent lookups to interpret it as unset.
+ - Some extended glob patterns incorrectly matched filenames with a leading
+ dot, regardless of the setting of the `dotglob' option.
+ * Replace already applied patches by the upstream patch files.
+
+ -- Matthias Klose <doko@debian.org> Mon, 07 Apr 2014 22:20:10 +0200
+
+bash (4.3-5) unstable; urgency=medium
+
+ * Fix a display issue when a multiline command is aborted with ^C.
+ * Fix a crash after a failed history expansion. LP: #1294669.
+
+ -- Matthias Klose <doko@debian.org> Sat, 29 Mar 2014 19:10:21 +0100
+
+bash (4.3-4) unstable; urgency=high
+
+ * Fix an issue with an associative array expanding to the
+ empty string if the associated value is the empty string.
+ * Fix an issue, when invoked as sh, bash doesn't interpret C-style escapes
+ within double-quoted substitution expansions ("${var/$'what'/ever}").
+ * Fix an issue with the extglob option to not expand hidden files.
+ * Update the pcomplete-dequote patch.
+
+ -- Matthias Klose <doko@debian.org> Fri, 21 Mar 2014 15:20:45 +0100
+
+bash (4.3-3) unstable; urgency=medium
+
+ * Fix an issue with with empty completions and bash-completion.
+ Closes: #741060 . LP: #1291586.
+ * Fix an issue with updating terminal titles using trap commands.
+ LP: #1294167.
+ * Fix an issue in vi-mode, not re-doing the latest "dw", "dl", "D", ...
+ commands.
+ * Fix segfault in _rl_dispatch_callback(). Closes: #741555.
+
+ -- Matthias Klose <doko@debian.org> Wed, 19 Mar 2014 18:54:13 +0100
+
+bash (4.3-2) unstable; urgency=medium
+
+ * Build-depend on texlive-fonts-recommended.
+ * Work around a build failure of bash static on ppc64el.
+ * Only include the documentation into the bash-doc package. Closes:
+
+ -- Matthias Klose <doko@debian.org> Wed, 05 Mar 2014 05:05:16 +0100
+
+bash (4.3-1) unstable; urgency=medium
+
+ * Bash 4.3 release.
+ * Update debian/copyright.
+
+ -- Matthias Klose <doko@debian.org> Mon, 03 Mar 2014 08:16:58 +0100
+
+bash (4.3~rc2-1) experimental; urgency=medium
+
+ * New upstream version 4.3 rc2.
+
+ -- Matthias Klose <doko@debian.org> Wed, 05 Feb 2014 15:20:17 +0100
+
+bash (4.3~rc1-1) experimental; urgency=medium
+
+ * New upstream version 4.3 rc1.
+
+ -- Matthias Klose <doko@debian.org> Fri, 27 Dec 2013 23:01:38 +0100
+
+bash (4.3~beta2-1) experimental; urgency=low
+
+ * New upstream version 4.3 beta2.
+
+ -- Matthias Klose <doko@debian.org> Wed, 23 Oct 2013 13:59:32 +0200
+
+bash (4.2+dfsg-1) unstable; urgency=low
+
+ * Apply upstream patches 038 - 045, fixes for
+ - If a backslash-newline (which is removed) with no other input is given as
+ input to `read', the shell tries to dereference a null pointer and
+ segfaults.
+ - Under certain circumstances, bash attempts to expand variables in
+ arithmetic expressions even when evaluation is being suppressed.
+ - Output redirection applied to builtin commands missed I/O errors if
+ they happened when the file descriptor was closed, rather than on write
+ (e.g., like with an out-of-space error on a remote NFS file system).
+ - Process substitution incorrectly inherited a flag that inhibited using the
+ (local) temporary environment for variable lookups if it was providing
+ the filename to a redirection. The intent the flag is to enforce the
+ Posix command expansion ordering rules.
+ - Compilation failed after specifying the `--enable-minimal-config' option
+ to configure (more specifically, specifying `--disable-alias').
+ - When SIGCHLD is trapped, and a SIGCHLD trap handler runs when a pending
+ `read -t' invocation times out and generates SIGALRM, bash can crash with
+ a segmentation fault.
+ - When converting a multibyte string to a wide character string as part of
+ pattern matching, bash does not handle the end of the string correctly,
+ causing the search for the NUL to go beyond the end of the string and
+ reference random memory. Depending on the contents of that memory, bash
+ can produce errors or crash.
+ - The <&n- and >&n- redirections, which move one file descriptor to another,
+ leave the file descriptor closed when applied to builtins or compound
+ commands.
+ * Fix parallel build (Steven Chamberlain). Closes: #694659.
+ * Fix german translations. Closes: #688571.
+ * Fix typo in man page. Closes: #696706.
+
+ -- Matthias Klose <doko@debian.org> Sat, 30 Mar 2013 14:56:51 +0100
+
+bash (4.2+dfsg-0.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Remove unused and non DFSG-compliant bash-4.2/lib/readline/doc from
+ source. (Closes: #695709)
+
+ -- David Prévot <taffit@debian.org> Sat, 29 Dec 2012 21:19:34 -0400
+
+bash (4.2-5.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * debian/bash.preinst-lib.c: typo in fcntl argument (Closes: #679198).
+
+ -- Nicolas Boulenguez <nicolas@debian.org> Tue, 11 Dec 2012 22:02:44 +0100
+
+bash (4.2-5) unstable; urgency=low
+
+ * Apply upstream patch 037, fix for
+ - Attempting to redo (using `.') the vi editing mode `cc', `dd', or `yy'
+ commands leads to an infinite loop.
+
+ -- Matthias Klose <doko@debian.org> Fri, 03 Aug 2012 01:21:14 +0200
+
+bash (4.2-4) unstable; urgency=high
+
+ * Apply upstream patches 030 - 036, fixes for
+ - When attempting to glob strings in a multibyte locale, and those strings
+ contain invalid multibyte characters that cause mbsnrtowcs to return 0,
+ the globbing code loops infinitely.
+ - A change between bash-4.1 and bash-4.2 to prevent the readline input hook
+ from being called too frequently had the side effect of causing delays
+ when reading pasted input on systems such as Mac OS X. This patch fixes
+ those delays while retaining the bash-4.2 behavior.
+ - Bash-4.2 has problems with DEL characters in the expanded value of
+ variables used in the same quoted string as variables that expand
+ to nothing.
+ - Bash uses a static buffer when expanding the /dev/fd prefix for the test
+ and conditional commands, among other uses, when it should use a dynamic
+ buffer to avoid buffer overflow.
+ - In bash-4.2, the history code would inappropriately add a semicolon to
+ multi-line compound array assignments when adding them to the history.
+ - When given a number of lines to read, `mapfile -n lines' reads
+ one too many.
+ - Bash-4.2 produces incorrect word splitting results when expanding
+ double-quoted $@ in the same string as and adjacent to other variable
+ expansions. The $@ should be split, the other expansions should not.
+
+ -- Matthias Klose <doko@debian.org> Thu, 12 Jul 2012 23:58:51 +0200
+
+bash (4.2-3) unstable; urgency=low
+
+ * Apply upstream patches 025 - 029, fixes for
+ - When used in a shell function, `declare -g -a array=(compound assignment)'
+ creates a local variable instead of a global one.
+ - The `lastpipe' option does not behave correctly on machines where the
+ open file limit is less than 256.
+ - When the `extglob' shell option is enabled, pattern substitution does not
+ work correctly in the presence of multibyte characters.
+ - When using a word expansion for which the right hand side is evaluated,
+ certain expansions of quoted null strings include spurious ^? characters.
+ - Bash-4.2 tries to leave completed directory names as the user typed them,
+ without expanding them to a full pathname. One effect of this is that
+ shell variables used in pathnames being completed (e.g., $HOME) are left
+ unchanged, but the `$' is quoted by readline because it is a special
+ character to the shell. This patch introduces two things:
+ - A new shell option, `direxpand', which, if set, attempts to emulate the
+ bash-4.1 behavior of expanding words to full pathnames during
+ completion;
+ - A set of heuristics that reduce the number of times special characters
+ such as `$' are quoted when the directory name is not expanded.
+ * Mark bash and bash-static as Multi-Arch: foreign . Closes: #674120.
+ * Avoid warning for unset debian_chroot with -u (Marko Mäkelä).
+ Closes: #659940.
+ * Fix string expansion: \u and \U for code points U+0080 to U+00FF (Darran
+ Salt). Closes: #661386.
+ * Search $- for `i' for the interactivity test. Closes: #482194.
+ * Search for bash_completion in /usr/share/bash-completion too.
+ Closes: #655071, #655208.
+
+ -- Matthias Klose <doko@debian.org> Sun, 01 Jul 2012 13:45:35 +0200
+
+bash (4.2-2) unstable; urgency=low
+
+ * Fix command-not-found location. Closes: #529313.
+ * Print a replacement error message if command-not-found was removed
+ after bashrc was loaded. Closes: #631023. LP: #561155.
+ * skel.bashrc: Document and prepare enabling the globstar feature (Fabian
+ Greffrath). Closes: #627926.
+ * Apply upstream patches 021 - 024.
+
+ -- Matthias Klose <doko@debian.org> Fri, 30 Mar 2012 19:20:04 +0200
+
+bash (4.2-1) unstable; urgency=low
+
+ [ Matthias Klose ]
+ * New upstream version.
+ * Apply upstream patches 001 - 020.
+ * Fix parsing of double doublequotes. LP: #780441.
+ * /etc/bash.bashrc:
+ - Fix quoting issue calling command-not-found. LP: #754859. Closes: #587185.
+ * Don't cache the value of brk between sbrk calls (Samuel Thibault).
+ Closes: #614815.
+ * Remove the bashdb and bash-completion packaging rules and files.
+ * Just link with libtinfo instead of libncurses if available.
+ * Make lintian happy.
+ * Use quilt to apply patches.
+ * Fix build error with -Werror=format-security (Pierre Chifflier).
+ Closes: #641350.
+ * Fix build for the binary target, without calling the build target.
+ Closes: #602159.
+ * Fix cross builds (Steve McIntyre). Closes: #629929.
+
+ [ Jonathan Nieder ]
+ * Update copyright file. Many files that were GPL-2+ were relicensed
+ under GPL-3+ in bash 4.0-rc1. Closes: #632177.
+ * debian/rules: Use "rm -rf" instead of rmdir to remove usr/share/info
+ directory in "with_gfdl = no" build. This prevents build failures when
+ using the unmodified upstream tarball.
+ * bash.preinst: Tidy up a little.
+ - Remove codepath that would rename .bash_profile → .profile if .profile
+ was unmodified from the gutsy → hardy transition. Closes: #602244
+ - Remove commented experiment from bash-completion transition.
+ - Remove misleading "dpkg --assert-support-predepends" check.
+ Closes: #602456.
+ - Move utility functions to a separate bash.preinst-lib.c and corresponding
+ declarations to bash.preinst.h.
+ * Remove /bin/sh symlink and /usr/share/man/man1/sh.1.gz from bash package
+ contents. Closes: #602483.
+ - debian/rules: Do not install /bin/sh and sh.1.gz symlinks.
+ - bash.preinst:
+ - Make sure /bin/sh is present and points to an executable, forcibly
+ creating symlinks /bin/sh -> bash and /usr/share/man/man1/sh.1.gz ->
+ bash.1.gz if not.
+ - Divert /bin/sh and sh.1.gz on behalf of dash if we are upgrading from
+ a bash version with /bin/sh in the files list and bash's copy of
+ /bin/sh is not already diverted. This ensures unpacking bash will not
+ cause /bin/sh to go missing.
+ * bash.postinst: Simplify comment that contained an implementation detail
+ about how /bin/sh is provided.
+ * Use dpkg-buildflags to retrieve compiler options, including hardening flags.
+ Build-Depends: dpkg-dev (>= 1.16.1) (Steve Langasek). Closes: #629929.
+ * Pass --host to configure only when cross-compiling, --build always, as
+ recommended in autotools documentation (Steve Langasek).
+
+ * Merge from Ubuntu (closes: #648578):
+ - /etc/skel/.bashrc:
+ - Don't set HISTCONTROL twice. Thanks to Kevin Knerr. LP: #465500.
+ - Set HISTFILESIZE to 2000 and HISTSIZE to 1000. LP: #544542.
+ - README.Debian: Remove obsolete entry "Why is bash configured
+ with --disable-net-redirections?"
+
+ -- Matthias Klose <doko@debian.org> Wed, 30 Nov 2011 07:29:05 +0100
+
+bash (4.1-3) unstable; urgency=low
+
+ * Apply upstream patches 003, 004, 005.
+ * Fix crash in declare builtin.
+ * /etc/skel/.bashrc:
+ - Enable sourcing of ~/.bash_aliases by default. Closes: #569798.
+ - Find command-not-found script. Closes: #529313.
+ * README.Debian:
+ - Remove references to --disable-net-redirections, bash-minimal.
+ - Mention that the upstream changelog can be found in the bash-doc
+ package. Closes: #551019.
+
+ -- Matthias Klose <doko@debian.org> Sat, 10 Apr 2010 10:35:29 +0200
+
+bash (4.1-2) unstable; urgency=low
+
+ * Apply upstream patches 001, 002.
+
+ -- Matthias Klose <doko@debian.org> Fri, 12 Mar 2010 02:08:45 +0100
+
+bash (4.1-1) unstable; urgency=low
+
+ * New upstream version 4.1.
+ * Stop building the bash-minimal package, not needed anymore with
+ dash being the default shell.
+
+ -- Matthias Klose <doko@debian.org> Sat, 02 Jan 2010 13:49:24 +0100
+
+bash (4.1~rc1-1) unstable; urgency=low
+
+ * New upstream version 4.1, release candidate 1.
+
+ -- Matthias Klose <doko@debian.org> Wed, 30 Dec 2009 15:41:40 +0100
+
+bash (4.0-7) unstable; urgency=medium
+
+ * Re-add the sh and sh(1) symlinks. Closes: #546516.
+
+ -- Matthias Klose <doko@debian.org> Mon, 14 Sep 2009 08:11:58 +0200
+
+bash (4.0-6) unstable; urgency=medium
+
+ * Pre-depend on dash, instead of just depending on it.
+ Closes: #546504, #546516, #546518.
+ * Update and set homepage attribute. Closes: #546377, #546381.
+
+ -- Matthias Klose <doko@debian.org> Sun, 13 Sep 2009 13:35:38 +0200
+
+bash (4.0-5) unstable; urgency=low
+
+ * Re-add dependency on dash, lost with the upload of 4.0.
+ * Don't configure with --disable-net-redirections.
+ * Fix name of system wide bash_logout in bash(1). Closes: #546200.
+ * Stop shipping the sh and sh(1) symlinks. Closes: #545103.
+ * Apply upstream patches 029 - 033.
+
+ -- Matthias Klose <doko@debian.org> Sun, 13 Sep 2009 12:55:54 +0200
+
+bash (4.0-4) unstable; urgency=low
+
+ * Apply upstream patches 024 - 028.
+ - patch 028 closes: #519165. bash-4.0 reverted to the historical
+ shell behavior of raising an error when $@ or $* was expanded
+ after `set -u' had been executed and there were no positional
+ parameters. The Posix working group has since clarified the
+ standard's position on the issue, and $@ and $* are now the only
+ variables, parameters, or special parameters that do not raise an
+ error when unset if set -u is enabled.
+ * Enable net redirections, now that bash isn't the default shell
+ anymore.
+ * Changes to the skeleton .bashrc:
+ - Fix example lines in /etc/bash.bashrc to enable bash completion.
+ Closes: #523706, #522857.
+ - Don't export HISTCONTROL in bashrc. Closes: #540371.
+ - Support user dircolors settings in ~/.dircolors. Closes: #506213.
+
+ -- Matthias Klose <doko@debian.org> Sun, 23 Aug 2009 16:09:36 +0200
+
+bash (4.0-3) experimental; urgency=low
+
+ * Apply upstream patches 011 - 024.
+
+ -- Matthias Klose <doko@debian.org> Sun, 17 May 2009 15:29:21 +0200
+
+bash (4.0-2) experimental; urgency=low
+
+ * Apply upstream patches 001 - 010. Closes: #518289.
+ * Fix insecure temp file handling in examples scripts. Closes: #509279.
+ * /etc/skel.bashrc: Only source bash_completion, if posix mode is turned
+ off. Closes: #498474.
+
+ -- Matthias Klose <doko@debian.org> Sat, 21 Mar 2009 15:06:46 +0100
+
+bash (4.0-1) experimental; urgency=low
+
+ * New upstream version 4.0.
+
+ -- Matthias Klose <doko@debian.org> Sun, 01 Mar 2009 10:56:15 +0100
+
+bash (4.0-0ubuntu1) jaunty; urgency=low
+
+ * New upstream version 4.0 beta.
+
+ -- Matthias Klose <doko@ubuntu.com> Sat, 29 Nov 2008 18:20:35 +0100
+
+bash (3.2-6) unstable; urgency=medium
+
+ * bash. Depend on dash to install dash as a required package.
+
+ -- Matthias Klose <doko@debian.org> Mon, 20 Jul 2009 23:56:24 +0000
+
+bash (3.2-5) unstable; urgency=low
+
+ * Apply upstream fixes 040 - 048.
+
+ -- Matthias Klose <doko@debian.org> Sun, 01 Mar 2009 10:20:52 +0100
+
+bash (3.2-4) unstable; urgency=low
+
+ * bash-minimal, bash-static: Only call `add-shell' on new installations.
+ * Only call remove-shell on package removal or purge.
+
+ -- Matthias Klose <doko@debian.org> Mon, 12 May 2008 18:49:07 +0200
+
+bash (3.2-3) unstable; urgency=low
+
+ * /etc/skel/.bashrc: Overwrite SHELL for calling lesspipe. Closes: #385168.
+ * Only call `add-shell' on new installations. Closes: #477750.
+ * Apply upstream fixes 034 - 039.
+ * Add explicit copyright notice to clear_console(1).
+
+ -- Matthias Klose <doko@debian.org> Sun, 20 Apr 2008 13:31:10 +0200
+
+bash (3.2-2) unstable; urgency=low
+
+ * Add a shopt option compat31 to fall back to the behaviour of bash-3.1
+ and earlier versions, in that quoting the string argument to the [[
+ command's =~ +operator does not force string matching.
+
+ * Merge from Ubuntu:
+ - Remove /etc/skel/.bash_profile, if it is unmodified; if modified and
+ /etc/skel/.profile is unmodifed, move .bash_profile to .profile.
+ - /etc/skel/.bashrc: Add an option to blurt a terminal window with a
+ colored prompt.
+ - /etc/skel/.bashrc: Add color support for grep and friends (commented
+ out by default). Closes: #420659.
+ - /etc/skel/.profile: Avoid the use of `~'.
+ - Don't run command-not-found from the shell scripts when it has been
+ removed in the meantime.
+ * /etc/skel/.bashrc:
+ - Comment out the lesspipe settings. Closes: #470453.
+ - Don't use PROMPT_COMMAND to set the title of an xterm. Closes: #420656.
+ - Don't second-guess terminal handling in dircolors. Closes: #473870.
+ - Don't overwrite GNU Midnight Commander's setting of HISTCONTROL to
+ `ignorespace'. Closes: #440102.
+ - Add a comment about setting HISTSIZE and HISTFILESIZE. Closes: #449587.
+ - Append to the history file, don't overwrite it. Closes: #452459.
+ - Use dir and vdir commands for dir vdir aliases. Closes: #420661.
+ * /etc/skel/.profile:
+ - Add comment about setting the umask for ssh logins. Closes: #314533.
+
+ * Added code to defer the initialization of HISTSIZE until the history file
+ is loaded. Closes: #383762.
+ * Fix typos in README.Debian and preinst. Closes: #374452.
+ * Mention `exec' builtin in the section `redirection'. Closes: #378067.
+ * Add bashbug(1). Closes: #442477.
+ * Fix typos in bash(1). Closes: #390493, #426687.
+ * Fix bug in Bash_aliases example. Closes: #423488.
+ * Fix typo in help message for caller builtin. Closes: #452656.
+
+ -- Matthias Klose <doko@debian.org> Sun, 20 Apr 2008 11:20:08 +0200
+
+bash (3.2-1) experimental; urgency=low
+
+ * New upstream version (including upstream patches 01 - 33). Closes: #431620.
+ - Added write error reporting to printf builtin. Closes: #414285.
+ - Fixed a bug that caused `unset LANG' to not properly reset the locale.
+ Closes: #364861.
+ - Describe expansion of pattern in case statement. Closes: #342225.
+ - Improved handling of non-printable characters in prompt. Closes: #352234,
+ #362010, #397086, #418961, #471490.
+ - Fix typos in documentation. Closes: #382892.
+
+ The syntax of regexes in Bash 3.2 was changed so that single quotes no
+ longer surround regexes. e.g, a regex of the form
+ if [[ "foo.tex" =~ '^(.*)\.tex$' ]]
+ becomes
+ if [[ "foo.tex" =~ ^(.*)\.tex$ ]]
+
+ * Merge from Ubuntu:
+ - debian/skel.bashrc: Check for dircolors before using it.
+ - debian/skel.bashrc: Set HISTCONTROL to ignoreboth.
+ - Include correct bash.pot file.
+ - Move CWRU/changelog from the bash to the bash-doc package (we already
+ have the CHANGES files).
+ - debian/etc.bash.bashrc: Install command-not-found handler if available.
+
+ -- Matthias Klose <doko@debian.org> Sun, 10 Feb 2008 23:49:35 +0100
+
+bash (3.1dfsg-9) unstable; urgency=low
+
+ * Remove bash-completion from the source.
+ * Remove the conflict with bash-completion, recommend bash-completion.
+ * Fix quotes in man page. Closes: #402845.
+ * clear_console: Don't segv if stdin isn't a tty. Closes: #451819.
+ * clear_console(1): Fix synopsis. Closes: #441242.
+ * Clarify bash-doc package description: Closes: #394275.
+
+ -- Matthias Klose <doko@debian.org> Sat, 09 Feb 2008 10:14:22 +0100
+
+bash (3.1dfsg-8) unstable; urgency=high
+
+ * bash-doc: Install copyright file when building without the
+ gfdl'ed docs. Closes: #402471.
+
+ -- Matthias Klose <doko@debian.org> Mon, 11 Dec 2006 22:08:10 +0100
+
+bash (3.1dfsg-7) unstable; urgency=medium
+
+ * Restore the bash(1) manual page. Closes: #392989.
+
+ -- Matthias Klose <doko@debian.org> Sun, 22 Oct 2006 13:41:59 +0000
+
+bash (3.1dfsg-6) unstable; urgency=low
+
+ * Remove the texinfo documentation from the package. Closes: #357260.
+ * Remove the FAQ from the package.
+
+ -- Matthias Klose <doko@debian.org> Thu, 12 Oct 2006 22:35:46 +0200
+
+bash (3.1-5) unstable; urgency=low
+
+ * Work around the broken remove-shell, not checking for the existance
+ of /etc/shells (closes: #337097).
+ * Force rebuild of bashref.info (closes: #354303, #357258).
+ * Apply upstream patches 015, 016, 017, fixing
+ - a problem with the extended globbing code prevented dots from matching
+ filenames when used in some extended matching patterns.
+ - core dumps when attempting to perform globbing in directories with
+ very large numbers of files.
+ - Array expansion failure with an arithmetic syntax error when the
+ subscript appears within double quotes. Closes: #358831.
+ * Add copyrights for contributed files (Joost van Baal). Closes: #357607.
+ * bash_completion:
+ - Add apt-cache madison completion: Closes: #342073, #359021.
+ - Complete files with spaces for bzip2. Closes: #356218.
+ - Complete whatis and apropos like man. Closes: #352145.
+ - Ignore stderr in apt-cache completion. Closes: #367198.
+ - Add flv|FLV files completion for mplayer. Closes: #364509, #373904.
+ - Add dvi|DVI files completion for evince. Ubuntu #49880.
+ * Fix typos in man page. Closes: #360543.
+
+ [ Ian Jackson ]
+ * Make bash die if it cannot read its input file. Closes: #320036.
+ (This is not an ideal fix because, for example, the exit status is
+ still wrong - it should be 127, not 2. Also, the filename is not
+ printed. Unfortunately the code is badly tangled making this small
+ fix the most appropriate approach.)
+
+ -- Matthias Klose <doko@debian.org> Wed, 5 Jul 2006 06:56:54 +0200
+
+bash (3.1-4) unstable; urgency=low
+
+ * Update upstream patch 010, apply upstream patches 012, 013, 014.
+ * bash-default-editor.dpatch: Fix typo (closes: #356308).
+ * clear_console: Add FreeBSD support (Aurelian Jarno). Closes: #355336.
+ * clear_console: Only get rid of any history in the scrollback, if
+ not running in a pseudo tty (closes: #355815).
+ * bash_completion:
+ - Fix error in minicom completion (closes: #357241).
+
+ -- Matthias Klose <doko@debian.org> Thu, 23 Mar 2006 01:16:22 +0100
+
+bash (3.1-3) unstable; urgency=low
+
+ * Apply upstream patches 006, 007, 008, 009, 010 and 011.
+ * Define PGRP_PIPE to avoid race condition; monitor mode causes emacs as
+ $EDITOR to hang on kernel 2.6 (Jim Paris). Closes: #224543.
+ * Fix read memleak when reading from non-blocking fd (Tim Waugh).
+ * Recognize 'exec -l /bin/bash' as login shell (Tim Waugh).
+ * Fix parameter expansion: Array member length expansion fails with nested
+ index expression (Jan C. Nordholz). Closes: #345861.
+ * Add swedish translation of message strings. Closes: #349677.
+
+ Merge from Ubuntu:
+ * clear_console: New helper program to clear the console, including
+ the scrollback buffer.
+ * /etc/skel/.bash_logout: Install it again and use clear_console.
+ Ubuntu #29405. Closes: #331504.
+ * /etc/skel/.bashrc: Enable bash_completion.
+ Ubuntu #11414, #25096.
+ * bash_completion:
+ - Fix ssh completion to match lines starting with `Hostname' as well.
+ Closes: #343312.
+ * Add ulimit options -e and -r.
+
+ * Update bash_completion to 20060301:
+ - Completion for minicom(1), mtr(8), sysctl(8), smartctl(8), vncviewer(1),
+ invoke-rc.d, update-rc.d and dpkg-source has been added.
+ Closes: #323824, #327414.
+ - gdb completion of second parameter was broken when first parameter
+ contained white space.
+ - gdb completion wasn't completing second parameter correctly when it was
+ a file, rather than a PID.
+ - Ruby ri completion has been broken for some time. This is now fixed.
+ - Various fixes to work around change in how POSIX quoting is handled in
+ bash 3.1.
+ - subversion completion has been reimplemented from scratch and integrated
+ into the main file.
+ - iconv(1) completion has been improved.
+ - yum(8) completion has been updated for current version of yum.
+ - ant completion will now make use of complete-ant-cmd.pl, if available.
+ - cvs(1) completion has been improved with 'update' and 'stat' completion.
+ - 'aptitude show' now works in the same way as 'apt-cache show'.
+ - make(1) now also completes on file names.
+ - MPlayer will now also complete on .flac, .mpc and .3gp files.
+ Closes: #340452.
+ - wine will now also complete on .exe.so files.
+ - unzip will now also complete on oowriter's .ott files.
+ - xine et al will now complete on .mng files.
+ - The list of programs completing on .dvi files has been expanded.
+ - The range of files on which timidity and evince complete has been
+ expanded. Closes: #351848.
+ - mkisofs completion now defaults to treating results as file names.
+ - $DEBUG has been renamed $BASH_COMPLETION_DEBUG to avoid namespace clashes
+ with other software.
+ - man(1) completion now works correctly on OpenBSD.
+ - svk and Mercurial completion have been added to contribs. Closes: #324169.
+ - Many other small optimisations and fixes. Closes: #325056.
+
+ -- Matthias Klose <doko@debian.org> Sat, 4 Mar 2006 01:54:25 +0100
+
+bash (3.1-2) unstable; urgency=low
+
+ * Apply upstream patches 002 - 005.
+
+ -- Matthias Klose <doko@debian.org> Tue, 10 Jan 2006 00:19:25 +0100
+
+bash (3.1-0ubuntu3) dapper; urgency=low
+
+ * Document supported ulimit options.
+ * Fix parsing problems with compound assignments
+ * Fix readline callback interface.
+ * Fix ssh command completion (closes: #343312).
+
+ -- Matthias Klose <doko@ubuntu.com> Fri, 23 Dec 2005 11:31:36 +0100
+
+bash (3.1-0ubuntu2) dapper; urgency=low
+
+ * command-not-found handler: Print error message, when command not found.
+ Ubuntu #5120.
+ * fix ssh command completion.
+
+ -- Matthias Klose <doko@ubuntu.com> Sun, 11 Dec 2005 16:14:14 +0100
+
+bash (3.1-1) unstable; urgency=low
+
+ * New upstream version (final 3.1 release).
+ - Fixed a small memory leak in the programmable completion code.
+ Closes: #338822.
+ * Generate the locales needed for the testsuite, build-depend on locales.
+ * Improve check for existance of /dev/stdin during build. Closes: #333935.
+ * Fix bash_completion, sudo completion does not protect empty arguments.
+ Closes: #329148.
+ * /etc/bash.bashrc: Don't change the xterm title by default, keep the
+ default for /etc/skel/.bashrc. Closes: #313617, #314614.
+
+ -- Matthias Klose <doko@debian.org> Sat, 10 Dec 2005 00:56:28 +0100
+
+bash (3.0+3.1rc1-1) unstable; urgency=low
+
+ * New upstream version (3.1-rc1).
+ * Remove patches applied upstream: rl-del-backspace-policy, bad-interp.
+
+ -- Matthias Klose <doko@debian.org> Fri, 11 Nov 2005 12:59:32 +0000
+
+bash (3.0+3.1b1-1) unstable; urgency=low
+
+ * New upstream version (3.1-beta1).
+ * Remove bash's dependency on passwd, add one to debianutils (>= 2.15).
+
+ -- Matthias Klose <doko@debian.org> Thu, 13 Oct 2005 15:49:49 +0200
+
+bash (3.0+3.1a1-1) unstable; urgency=low
+
+ * New upstream version (3.1-alpha1).
+ - Fix "cd -P" hanging (closes: #316407).
+ - Fixed exit status code so that a suspended job returns 128+signal as its
+ exit status (preventing commands after it in `&&' lists from being
+ executed). Closes: #288319.
+ - The globbing code now uses malloc, with its better failure properties,
+ rather than alloca(). Closes: #238226.
+ - In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin
+ doesn't try to interpret any options at all, as POSIX requires.
+ Closes: #303649.
+ - Some changes to the display code to improve display and redisplay of
+ multibyte characters. Closes: #309654.
+ - Fixed a bug that caused bash to close fd 2 if an `exec' failed and the
+ shell didn't exit. Closes: #310308.
+ - Fix segmentation fault if execve'd with NULL argv. Closes: #316206.
+ - Fix segfault, if free is called with already freed block argument.
+ Closes: #317324.
+ - Fix garbage in bash(1), section SIGNALS. Closes: #327035.
+ - Fixed vi-mode searching so that failure preserves the current line rather
+ than the last line in the history list. Closes: #297330.
+ - Fix segfault on variable assignment. Closes: #291840.
+ - Fixed parser to generate an error when the pipeline `argument'
+ to `!' or `time' is NULL. Closes: #273324, #342228.
+ - A bare `%' once again expands to the current job when used as a job
+ specifier, updated the help for `%'. Closes: #262095.
+ - Fix tilde expansion for some cases where it was performed
+ inappropriately. Closes: #263023.
+ - Replicate first character of $PS4, not only the first byte.
+ Closes: #288125.
+ - bashref.texi: Remove blank lines from contents. Closes: #307264.
+ * Remove patches applied upstream:
+ - bash30*, wcontinued, man-cdpath, update-multibyte-ifs, histtimeformat,
+ spelingm.
+ - rl-examples, rl-setenv, rl-display, rl-self-insert.
+ * Update patches:
+ - deb-bash-config, man-test, man-test2.
+ * bash(1): Fix /etc/bash.logout file name (closes: #289355).
+ * Document, that bash is configured using --disable-net-redirections.
+ Closes: #313538.
+ * Use `command -v editor`, as an editor, if available. Closes: #296603.
+
+ -- Matthias Klose <doko@debian.org> Fri, 9 Sep 2005 21:09:46 +0200
+
+bash (3.0-17) unstable; urgency=low
+
+ * Check that the device files /dev/std{in,out,err} are present at
+ build time. Closes: #327477.
+ * Remove html completion for w3m, users claim w3m to be a general viewer.
+ * /etc/bash.bashrc: Avoid stat on /etc/debian_chroot, if not necessary.
+ Closes: #303712.
+ * debian/patches/wcontinued.dpatch: Update, fixing hangs in
+ bash_completion (Junichi Uekawa). Closes: #318301.
+ * Build-depend on texinfo (>= 4.8). Closes: #316066.
+
+ -- Matthias Klose <doko@debian.org> Thu, 13 Oct 2005 11:24:21 +0000
+
+bash (3.0-16ubuntu3) breezy; urgency=low
+
+ * Don't install .bash_logout again, doesn't clear the buffer and
+ ps is not in required.
+
+ -- Matthias Klose <doko@ubuntu.com> Wed, 5 Oct 2005 13:29:22 +0200
+
+bash (3.0-16ubuntu2) breezy; urgency=low
+
+ * Fix segmentation fault due to gcc optimization and longjmp. Patch
+ by Jim Paris. Debian #331381.
+ * Don't overwrite PROMPT_COMMAND in /etc/bash.bashrc. Ubuntu #15122.
+ Closes #330889.
+ * Install skeleton .bash_logout to clear the screen, when logging out
+ from the console. Ubuntu #10149.
+
+ -- Matthias Klose <doko@ubuntu.com> Tue, 4 Oct 2005 18:01:26 +0200
+
+bash (3.0-16ubuntu1) breezy; urgency=low
+
+ * bash_completion changes:
+ - Add completion for evince.
+ - Fix completion for aptitude (Ubuntu 12549).
+ Closes: #293979, #325045, #327413.
+ - Add completion for *.flac files in mplayer (closes: #304778).
+ - Add completion for *.ott files for unzip and zipinfo (closes: #322481).
+ - Add html completion for w3m.
+
+ -- Matthias Klose <doko@ubuntu.com> Fri, 9 Sep 2005 20:33:31 +0200
+
+bash (3.0-16) unstable; urgency=low
+
+ * Update to bash_completion 20050721 (v1.827).
+ - Fix function name in aptitude completion (closes: #304624, #320390).
+ * In PROMPT_COMMAND, use ~ instead of the complete path.
+ * Adjust for dpkg-dev (>= 1.13.9). Closes: #313546.
+
+ -- Matthias Klose <doko@debian.org> Mon, 5 Sep 2005 18:37:19 +0200
+
+bash (3.0-15) unstable; urgency=low
+
+ * glibc-2.3.5 defines WCONTINUED, which is available only since
+ Linux 2.6.10. On older kernels waitpid() returns -1 with errno
+ set to EINVAL if WCONTINUED is supplied in options. Retry without
+ WCONTINUED set in that case.
+
+ -- Matthias Klose <doko@debian.org> Wed, 25 May 2005 12:38:09 +0000
+
+bash (3.0-14ubuntu1) breezy; urgency=low
+
+ * Configure the static build --without-bash-malloc.
+
+ -- Matthias Klose <doko@ubuntu.com> Sat, 21 May 2005 07:28:25 +0000
+
+bash (3.0-15) unstable; urgency=low
+
+ * Print out bad interpreter names with trailing ^M (DOS line endings).
+ Closes: #282762.
+
+ -- Matthias Klose <doko@debian.org> Sun, 23 Jan 2005 20:24:58 +0100
+
+bash (3.0-14) unstable; urgency=low
+
+ * Fix re-read-init-file (C-xC-r) not to read /etc/inputrc twice,
+ but /etc/inputrc and ~/.inputrc. Thanks to Vasco Pedro.
+ * Fix bug in readline's self-insert command (closes: #290103).
+ * Fix bash-builtins package description (closes: #290258).
+ * Add cross build support (closes: #283732).
+ * Update to bash_completion 20050121 (v1.786).
+ - Improve ssh2 known hosts completion. (closes: #282767).
+ - Pass over switches to metacommands like sudo, nice, exec, etc.
+ (closes: #289847)
+ - Trivial fix to allow python to be called with a path component without
+ bash displaying a bad subscript error. (closes: #290748)
+ - unzip should also work on .sxw files. (closes: #286738).
+ - Lots of commands that use _longopts() don't use filenames at all, so
+ these shouldn't be mapped with '-o filenames'. (closes: #283069, which
+ related only to wget).
+ - Make dd treat completions as filenames, which is bad for options, but
+ good for filename arguments to 'if' and 'of'. (closes: #287286).
+ - Fix lvresize errors when running as non-root (closes: #285604).
+
+ -- Matthias Klose <doko@debian.org> Sat, 22 Jan 2005 23:08:57 +0100
+
+bash (3.0-13) unstable; urgency=low
+
+ * Update to bash_completion 20050103 (v1.772).
+ * Fix segfault in the ``reverse-search-history'' feature of the readline
+ library, if the search string matches a previously entered command (ie
+ history) and must overflow the current screen width. Closes: #288940.
+
+ -- Matthias Klose <doko@debian.org> Wed, 12 Jan 2005 08:11:36 +0100
+
+bash (3.0-12) unstable; urgency=low
+
+ * debian/skel.bashrc: Quote dircolors invocation (closes: #285840).
+
+ -- Matthias Klose <doko@debian.org> Sun, 19 Dec 2004 17:48:17 +0100
+
+bash (3.0-11) unstable; urgency=low
+
+ * Adjustments to the skeleton files.
+ * Fix spelling errors in the docs (closes: #281842).
+
+ -- Matthias Klose <doko@debian.org> Wed, 17 Nov 2004 06:37:48 +0100
+
+bash (3.0-10) unstable; urgency=low
+
+ * Apply upstream patch 015-016.
+
+ -- Matthias Klose <doko@debian.org> Thu, 11 Nov 2004 07:15:34 +0100
+
+bash (3.0-9) unstable; urgency=low
+
+ * Apply upstream patch 001-014.
+ * Document handling of parameters of the test builtin (closes: #173273).
+
+ -- Matthias Klose <doko@debian.org> Fri, 29 Oct 2004 23:57:19 +0200
+
+bash (3.0-8) unstable; urgency=low
+
+ * Add a comment to /etc/bash.bashrc that the file is not read by
+ login shells (closes: #271413).
+ * Sync builtin CDPATH documentation with man page (closes: #259767).
+ * Document conditional file expressions acting on the target of
+ symbolic links as well (except -h, -L). Closes: #231267.
+ * Update to bash_completion 20041017 (v1.758).
+ - Unset `have' variable at end of sourcing (closes: #273809).
+ - Fix scp completion breakage when filenames contained an ampersand.
+ Closes: #262354.
+
+ -- Matthias Klose <doko@debian.org> Sun, 17 Oct 2004 09:31:03 +0200
+
+bash (3.0-7) unstable; urgency=low
+
+ * Apply upstream patches 001-013, remove patches collected from the net.
+ * Patch bash30-003 restores a measure of backwards compatibility for the
+ `trap signum' syntax (closes: #261948).
+ * Trim skeleton files.
+
+ -- Matthias Klose <doko@debian.org> Sun, 19 Sep 2004 09:06:36 +0200
+
+bash (3.0-6) unstable; urgency=low
+
+ * Fixed in bash-3.0:
+ - New option pipefail. If set, the return value of a pipeline is the
+ value of the last (rightmost) command to exit with a non-zero status,
+ or zero if all commands in the pipeline exit successfully. This option
+ is disabled by default. The two oldest outstanding bash reports are
+ gone (closes: #7047, #10494).
+ - "$( substitution strangeness (closes: #187983).
+ - timestamp support in history (closes: #161057).
+ * Various updates from the net:
+ - Fix a bug in array expansion.
+ - Fix a bug in brace expansion.
+ - Handle multibyte characters in IFS values.
+ - Fix a bug, when pipefail option is set.
+ - History saved-line handling (closes: #253766, #268922).
+ - Fix parameter expansion with UTF-8 and ${#var} or ${var: -1}.
+ * Apply patch to fix non POSIX function name and avoid use of global
+ variables (Stephen Gildea). Closes: #262105.
+ * Add command_not_found_handle in non POSIX interactive shells.
+ Closes: #243015.
+ * Check for /usr/sbin/remove-shell before using it (closes: #265982).
+ * bash-builtins: Install missing header files (closes: #265259).
+ * Clarify documentation about substring expansion (closes: #192831, #203767).
+ * Fix completion on ~/../``/<tab> (closes: #261142).
+ * Clarify documentation about case-insensitive pathname expansion.
+ Closes: #141292.
+ * Apply patch to fix the display of UTF-8 characters.
+ Closes: #224916, #257540.
+
+ -- Matthias Klose <doko@debian.org> Sat, 4 Sep 2004 10:21:23 +0200
+
+bash (3.0-5) unstable; urgency=medium
+
+ * Fix segfault and wrong behaviour running the firehol script.
+ Closes: #262438, #262642.
+ * Add history scrolling patch patch (closes: #263064).
+ * Strip bash binary, leftover from debugging (closes: #263451).
+ * `cd -' printing the directory in non-interactive mode, non-POSIX mode
+ is new behaviour, not a bug (closes: #262619).
+ * Address build failure calling the 'binary' target directly instead of
+ dpkg-buildpackage (closes: #263797).
+ * Remove kfreebsd-gnu hack to disable bash malloc (closes: #263005).
+
+ -- Matthias Klose <doko@debian.org> Fri, 6 Aug 2004 07:10:24 +0200
+
+bash (3.0-4) unstable; urgency=low
+
+ * Revert substitution patch trying to fix completion on ~/../``/<tab>.
+ Reopens: #261142. Closes: #261955, #262338, #262602.
+
+ -- Matthias Klose <doko@debian.org> Sun, 1 Aug 2004 12:36:57 +0200
+
+bash (3.0-3) unstable; urgency=high
+
+ * Revert the following upstream change (until sarge is released):
+ The historical behavior of `trap' that allows a missing `action' argument
+ to cause each specified signal's handling to be reset to its default is
+ now only supported when `trap' is given a single non-option argument.
+ Addresses: #261948.
+ * Fix line wrapping (closes: #261957).
+
+ -- Matthias Klose <doko@debian.org> Fri, 30 Jul 2004 16:17:22 +0200
+
+bash (3.0-2) unstable; urgency=medium
+
+ * Fix typo in bash-minimal's postinst. Closes: #260506.
+ * Fixed in bash-3.0:
+ - pwd builtin exiting with write error. Closes: #243872.
+
+ -- Matthias Klose <doko@debian.org> Thu, 29 Jul 2004 07:13:13 +0200
+
+bash (3.0-1) unstable; urgency=medium
+
+ * New upstream release.
+ * Bugs fixed in this release (and the alpha/beta releases and release
+ candidates):
+ - Fixed a bug that caused the prompt to overwrite previous output when the
+ output doesn't contain a newline and the locale supports multibyte
+ characters. This same change fixes the problem of readline redisplay
+ slowing down dramatically as the line gets longer in multibyte locales.
+ Closed: #179883.
+ - The shell no longer seg faults if the expanded value of $PS4 is null
+ and `set -x' is enabled. Closes: #165533.
+ - Don't define a default DEFAULT_MAIL_DIRECTORY, because it can cause
+ a timeout on NFS mounts. Closes: #211426.
+ - Fixed a bad interaction between alias and completion. Closes: #186218.
+ - Fix initialization of local variables with "$@". Closes: #180290.
+ - Fixed segfault in "read -a foo <<< $(echo)". Closes: #167003.
+ - Fixed the history word tokenizer to handle <( and >( better when used as
+ part of bash. Closes: #165212.
+ - Fixed EINTR signal killing redirection. Closes: #164134.
+ - Fixed infinite loop with IFS="<non-ws-char>" and compgen -W.
+ Closes: #162952.
+ - Fixed the internal logout code so that shells that time out waiting for
+ input (using $TMOUT) run ~/.bash_logout. Closes: #152847.
+ - Speedups to the multibyte character redisplay code. Closes: #197965.
+ - Better error message on wrong kill arguments. Closes: #193570.
+ - Overwriting of prompt. Closes: #176968.
+ - The shell now reports on processes that dump core due to signals when
+ invoked as `-c command'. Closes: #211693.
+ - Fixed ferror beeing called w/o always first calling clearerr
+ results in spurious errors reported. Closes: #195116.
+ - Add missing trailing slash on directory completion. Closes: #178828.
+ - Fix different behaviour for builtin and external commands together
+ with arithmetic expansion. Closes: #173744.
+ - Fixed a bug that caused redirections accompanying a null command
+ to persist in the current shell. Closes: #173148.
+ - Fixed a bug that caused a leading `-' in the shell's name to cause it to
+ not be recognized as a restricted shell. Closes: #170298.
+ - Fix segfault in ill formed paramter expansion. Closes: #162773.
+ - Fixed a bug in brace expansion that caused a quoted `$' preceding an
+ open brace to inhibit brace expansion. Closes: #157954.
+ - Removed the attempts to avoid adding a slash at the end of a completed
+ executable name if there was a directory with the same name in the
+ current directory. Closes: #155134, #189006.
+ - Fix error message for circular alias expansions. Closes: #173588.
+ - Fixed a bug that caused some key bindings set in an inputrc to be ignored
+ at shell startup. Closes: #110969.
+ - Fix segfault on bad array subscripts. Closes: #232653.
+ - Fix "set completion-ignore-case on" breaking some tab completion.
+ Closes: #224303.
+ - Flag an error when a user uses "% DIGITS" instead of "%DIGITS", and
+ don't give him a different job instead. Closes: #173854.
+ - For 'cd filename' say 'not a directory', not 'no such file or directory'
+ when filename exists and is not a directory. Closes: #219958.
+ - Expansion results are the same for ${1:+"$@"} and "$@" if IFS is not
+ the default.
+ - The locale code does a better job of recomputing the various locale
+ variable values when LC_ALL is unset. Closes: #160932.
+ - Fix substitution error triggering an assertion. Closes: #251801.
+ * Documentation updated in this release (and the alpha/beta releases):
+ - Fix documentation about exit status of unset builtin. Closes: #183352.
+ - Clarify documentation for arguments of wait builtin. Closes: #174133.
+ - Document ${!prefix@} expansion. Closes: #168318.
+ - Fix documentation of GLOBIGNORE behaviour. Closes: #168267.
+ - Document the use of $EMACS. Closes: #174744.
+ - Improve documentation of the value of arithmetic expressions.
+ Closes: #168321.
+ - Make docs more explicit about variable indirection in shell parameter
+ expansion. Closes: #167002.
+ - Documentation for values of various assignments updated. Closes: #168331.
+ - In section "Shell Functions", add documentation for syntax,
+ which bash accepts. Closes: #172971.
+ - Fix documentation of the PATH variable. Closes: #155369.
+ - Document SHELL variable in section "Shell Variables". Closes: #249657.
+ - Remove reference to missing section in rbash(1). Closes: #249219.
+ * Fix another segfault in completion code. Closes: #261142.
+
+ -- Matthias Klose <doko@debian.org> Tue, 27 Jul 2004 21:23:42 +0200
+
+bash (2.05b-2-22) unstable; urgency=low
+
+ * Brown paperbag ... Fix typo in bash-minimal's postinst.
+
+ -- Matthias Klose <doko@debian.org> Tue, 20 Jul 2004 23:04:56 +0200
+
+bash (2.05b-2-21) unstable; urgency=low
+
+ * Remove the pre-dependency on passwd.
+ * Explicitely check for the existance of /usr/sbin/add-shell.
+ * Reassign #257744 to debootstrap to correctly handle the installation.
+
+ -- Matthias Klose <doko@debian.org> Mon, 19 Jul 2004 22:57:19 +0200
+
+bash (2.05b-2-20) unstable; urgency=medium
+
+ * Make passwd a pre-dependency (closes: #257744).
+
+ -- Matthias Klose <doko@debian.org> Sat, 17 Jul 2004 06:56:38 +0200
+
+bash (2.05b-2-19) unstable; urgency=low
+
+ * Build using gcc, not gcc-3.4 (closes: #259208).
+
+ -- Matthias Klose <doko@debian.org> Tue, 13 Jul 2004 21:25:28 +0200
+
+bash (2.05b-2-18) unstable; urgency=low
+
+ * Tighten dependency on passwd (closes: #257717).
+ * Update to bash_completion 20040711 (v1.737).
+ - Fix mutt folder completion (closes: #248635).
+ * Fix tab completion on relative path directories (closes: #189006).
+ * Modify lib/malloc/malloc.c to make it compile with gcc-3.4 (Andreas
+ Jochens). Closes: #258456.
+
+ -- Matthias Klose <doko@debian.org> Tue, 13 Jul 2004 06:15:46 +0200
+
+bash (2.05b-2-17) unstable; urgency=low
+
+ * Add dependencies on passwd (closes: #257630).
+
+ -- Matthias Klose <doko@debian.org> Sun, 4 Jul 2004 22:56:17 +0200
+
+bash (2.05b-2-16) unstable; urgency=low
+
+ * Handle shells using add-shell/remove-shell (closes: #254476).
+ * Update to bash_completion 20040704 (v1.731).
+ - Add autocompletion for dpkg -P, --purge (closes: #241042, #249934).
+ - Fix mutt folder completion (closes: #248635).
+ - Add autossh to ssh completions (closes: #252090).
+ - Emacs completion does not discard .tar* archives (closes: #252347).
+ - Add MS filename extensions to OpenOffice (closes: #252635).
+ - Add completion for tar.Z files (closes: #254896).
+ - Fix problems with sed-4.1 (closes: #256000).
+ - Fix dpkg completion with multiple arguments (closes: #257544).
+ * Fix formatting in bash(1). Closes: #248344.
+
+ -- Matthias Klose <doko@debian.org> Sun, 4 Jul 2004 16:07:24 +0200
+
+bash (2.05b-2-15) unstable; urgency=low
+
+ * Fix a bug that caused a leading `-' in the shell's name to cause it to
+ not be recognized as a restricted shell (closes: #170298).
+ * Fix option in menu file (closes: #162152).
+ * Backout patches/random patch (closes: #242111).
+ * Update to bash_completion 20040331 (v1.700).
+ * Update skeleton files and /etc/bash.bashrc to include the contents
+ of /etc/debian_chroot in the prompt, if the file exists.
+ * Add openoffice completions (closes: #244611).
+ * Remove ee (eeyes) completion (closes: #240668). eeyes isn't distributed
+ anymore.
+ * bash(1): Document ~/.bash_login and ~/.profile in FILES section.
+ Closes: #204766.
+ * Apply patch from http://www.savarese.org/posix/ to improve the mail
+ checking code so it won't check (and possibly cause an NFS file system
+ mount) until MAILPATH or MAIL is given a value. Closes: #211426.
+ * Add missing dependency in debian/rules (closes: #247413).
+
+ -- Matthias Klose <doko@debian.org> Sat, 8 May 2004 18:36:41 +0200
+
+bash (2.05b-2-14) unstable; urgency=low
+
+ * Add bash reference manual in PDF format (closes: #202849).
+ * Remove FAQ; the license doesn't allow modification (closes: #231157).
+ * debian/copyright: Name the copyright holders (closes: #233716).
+ * Update to bash_completion 20040214 (v1.690).
+ - Make xspec parsing immune to comments (closes: #226812).
+ - Another fix to sudo completion: "sudo completion is virtually
+ impossible to get right. It's just a question of choosing what
+ aspect of it is the least annoying to leave broken. :-("
+ Closes: #223094.
+ - xine can also complete on .asx files (closes: #231356).
+ - Speedup dpkg completion (closes: #232585).
+ - Fix chsh completion (closes: #232214).
+ * Disable the GNU/kFreeBSD kludge (--without-bash-malloc). Closes: #234137.
+
+ -- Matthias Klose <doko@debian.org> Sun, 22 Feb 2004 13:31:03 +0100
+
+bash (2.05b-2-13) unstable; urgency=medium
+
+ * Apply patch to speedup display of characters under multibyte locales.
+ Thanks to Denis Barbier. Closes: #197965.
+ * Update to bash_completion 20040101 (v1.672).
+ - Closes: #215030, #224981.
+ - Include completion for sitecopy in contrib directory (closes: #223294).
+ * Fix typo in man page (closes: #224477).
+ * Don't build bashdb anymore. Not ready for use. Closes: #224573, #224566.
+ * Document /etc/bash.bashrc in bash man page (closes: #216403).
+
+ -- Matthias Klose <doko@debian.org> Sat, 24 Jan 2004 21:20:25 +0100
+
+bash (2.05b-2-12) unstable; urgency=low
+
+ * Update to bash_completion 20031022 (v1.644).
+ * Fix "suspend" segfaults in non-interactive shells (closes: #217188).
+ * Rename bashdb's gud.el to gud-bashdb.el (closes: #220002).
+
+ -- Matthias Klose <doko@debian.org> Mon, 10 Nov 2003 23:53:35 +0100
+
+bash (2.05b-2-11) unstable; urgency=medium
+
+ * Tighten automake build dependency (closes: #215350).
+ * Add dependency line for bashdb (closes: #215634).
+ * /etc/skel/.bashrc: set xterm's title as we do for PS1 (closes: #176734).
+ * Remove build dependency on readline (closes: #215165).
+ * Update to bash_completion 20031007 (v1.630).
+
+ -- Matthias Klose <doko@debian.org> Tue, 14 Oct 2003 20:37:23 +0200
+
+bash (2.05b-2-10) unstable; urgency=low
+
+ * Update to bash_completion 20030911 (v1.624).
+
+ -- Matthias Klose <doko@debian.org> Mon, 22 Sep 2003 11:43:39 +0200
+
+bash (2.05b-2-9.1) unstable; urgency=low
+
+ * Added build dependency on texi2html (closes: #211151).
+ * Create site-lisp directory in bashdb target.
+
+ -- Herbert Xu <herbert@debian.org> Thu, 18 Sep 2003 18:39:51 +1000
+
+bash (2.05b-2-9) unstable; urgency=low
+
+ * Recompilation fixes segfaults in bash-static (closes: #205185).
+ * Build debugger enabled bash binary (bash-bashdb). Closes: #195877.
+ * Update to bash_completion 20030821 (v1.617). Closes: #203859, #205741.
+ * Adjust config.guess triplet for GNU/FreeBSD (closes: #194182).
+ * Fix package description (closes: #202344).
+
+ -- Matthias Klose <doko@debian.org> Mon, 8 Sep 2003 23:34:50 +0200
+
+bash (2.05b-2-8.1) unstable; urgency=low
+
+ * Fixed versioned dependency of bash-builtins (closes: #196421).
+ * Call dh_fixperms in bash-minimal.
+
+ -- Herbert Xu <herbert@debian.org> Sat, 7 Jun 2003 12:44:18 +1000
+
+bash (2.05b-2-8) unstable; urgency=low
+
+ * Apply upstream patches 005, 006, 007.
+ 006 addresses the LSB 1.3 test suite failures (closes: #184888).
+ 007 addresses ~ command working with UTF-8 locales (closes: #179946).
+ * Build a minimal shell in package bash-minimal (closes: #176164).
+ Sort of fix for reports complaining that /bin/sh does have
+ additional features compiled in (closes: #183185).
+ * Build a static shell in package bash-static (closes: #138089).
+ * Update to bash_completion 20030527 (v1.571) (closes: #167852, #171523,
+ #184738, #185711, #189535, #192282).
+ * /etc/skel.profile: Export MANPATH (commented out). Closes: #180717.
+ * Add menu entry for bash (closes: #187596).
+ *
+ * Install info docs as bashref.info, symlink to bash.info (closes: #174674).
+ * Fix segfault with builtin shift, no arguments and "shopt -s shift_verbose".
+ Closes: #159996.
+ * Update config.{sub,guess} (closes: #179737).
+ * Fix apt-cache search completion (closes: #184144).
+ * Configure --without-bash-malloc on GNU/FreeBSD (closes: #194182).
+
+ -- Matthias Klose <doko@debian.org> Thu, 29 May 2003 17:00:53 +0200
+
+bash (2.05b-7) unstable; urgency=medium
+
+ * Fix rbash man page (closes: #181248).
+ * On m68k-linux, bash is miscompiled using gcc-3.2 and gcc-snapshot.
+ Revert back to gcc-2.95.
+
+ -- Matthias Klose <doko@debian.org> Fri, 28 Feb 2003 00:54:22 +0100
+
+bash (2.05b-6) unstable; urgency=low
+
+ * First upload compiled using gcc-3.2 as the default compiler.
+ * Update to bash_completion 20030126 (v1.520) (closes: #168478, #145481,
+ #150628, #158039, #168700, #169232, #169586, #171161, #171420, #171523,
+ #173096, #177654).
+
+ -- Matthias Klose <doko@debian.org> Mon, 27 Jan 2003 21:08:19 +0100
+
+bash (2.05b-5) unstable; urgency=high
+
+ * Build-depend on bison-1.35 (closes: #167635).
+
+ -- Matthias Klose <doko@debian.org> Mon, 4 Nov 2002 09:30:39 +0100
+
+bash (2.05b-4) unstable; urgency=low
+
+ * Ignore *~ and *.bak files in /etc/bash_completion.d/ (closes: #161027).
+ * debian/patches/rl-mbutil.dpatch: Fix segfault in mbutil.c.
+ * Update to bash_completion 20021026 (v1.462) (closes: #161671, #162161,
+ #163096, #163097, #164890, #165937).
+ * Apply fix for debian/bash.preinst.c (closes: #162424).
+ * Avoid warning in s390 build (closes: #160731).
+ * /etc/skel.bashrc: Add commented example to set the `checkwinsize'
+ option (maybe closes: #161984).
+ * Install builtins manpage as bash-builtins(7), add an alternative
+ builtins(7) with priority 10 (closes: #166082).
+ * Fix typo in documentation of deprecated arithmethic expansion.
+ Closes: #161386.
+ * rl-8bit-init.dpatch: Apply (closes: #164809).
+ * README.Debian: Removed invalid entry about ssh (closes: #159754).
+
+ -- Matthias Klose <doko@debian.org> Tue, 24 Sep 2002 12:40:35 +0200
+
+bash (2.05b-3) unstable; urgency=low
+
+ * Apply upstream patch 003 (Fix completing executable names).
+ Closes: #155134, #159466.
+ * Apply upstream patch 004.
+ * Fix completion by TAB in quoted sequence(`...`) with Multibyte Locale.
+ Patch from Satoshi Koike (closes: #155436).
+ * Update to bash_completion 20020909 (v1.410) (closes: #154595, #155211,
+ #155706).
+ * Don't set umask in /etc/skel/.bash_profile (closes: #155973).
+ * Drop suggestion of grep-dctrl (closes: #156351).
+
+ -- Matthias Klose <doko@debian.org> Fri, 9 Aug 2002 05:30:24 +0200
+
+bash (2.05b-2) unstable; urgency=medium
+
+ * Apply upstream patches:
+ - Fix a command completion problem (closes: #154273).
+ - Fix a segfault (closes: #154123).
+ - Fix for repeating an edit in vi mode.
+ * Fix typo in /etc/skel/.bashrc (closes: #153856).
+ * Update to bash_completion 20020727 (v1.390) (closes: #148873, #153045).
+ * Install info docs in "Shells" section (closes: #154618).
+
+ -- Matthias Klose <doko@debian.org> Fri, 2 Aug 2002 19:24:28 +0200
+
+bash (2.05b-1) unstable; urgency=low
+
+ * New upstream version:
+ - Fixed a problem with process substitution that resulted in incorrect
+ behavior when the number of process substitutions in an individual
+ command approached 64 (closes: #149229).
+ - Added putenv, setenv, unsetenv to getenv replacement (closes: #149262).
+ - Fixed bug, where bash incorrectly reports failure to execute a script.
+ Closes: #126620, #140819.
+ - Fixes an `out of memmory in pipe' error (closes: #134004).
+ - Fixed a bug that could cause the -O expand_aliases invocation option
+ to not take effect (closes: #122362).
+ - New code to handle multibyte characters (obsoletes and closes: #25131,
+ #118724).
+ - Fixed the /= and %= arithmetic operators to catch division by zero.
+ Closes: #148950.
+ - Fixed abort in completion of absolute filenames (closes: #136625).
+ - Fixed "declare -f"'s handling of here-documents (closes: #127452).
+ - Documentation for `==' adds hint for POSIX compliance (closes: #137741).
+ - Not reproducible anymore with new upstream version. Upstream regards
+ these as fixed (closes: #142906, #143811, #144375).
+ - Fix bug in `compgen -W' (closes: #143518).
+ - Fix memory corruption error printing error message (closes: #145229).
+ - Unreproducible with the new upstream version (closes: #135062).
+ - Fixed a bug that caused a syntax error when a command was terminated by
+ EOF (closes: #147258).
+ - Fixed a problem which caused the display to be messed up when the last
+ line of a multi-line prompt (possibly containing invisible characters)
+ was longer than the screen width (closes: #137268).
+ - The `home' and `end' keys are now bound to beginning-of-line and
+ end-of-line, respectively, if the corresponding termcap capabilities
+ are present (closes: #89026, #89034, #98029, #107453, #107897, #116943,
+ #119491, #128687, #130029).
+ - Fixed a bug that could cause the -O expand_aliases invocation option
+ to not take effect (closes: 148505).
+ - Bash now correctly honors setting LANG to some value when LC_ALL does not
+ already have a value (closes: #145597).
+ - The `unset' builtin no longer returns a failure status when asked to
+ unset a previously-unset variable or function (closes: #98743).
+ - Changes to make reading and writing the history file a little faster, and
+ to cope with huge history files without calling abort(3) from xmalloc.
+ Closes: #61006.
+ * Fixed in earlier versions of bash:
+ - Fixed a bug that caused SIGINT to kill shell scripts after the script
+ called `wait' (closes: #14658).
+ - Handling of ANSI sequences in PS1 (closes: #60914).
+ - ctrl+z when running while-loop puts bash in broken state (closes: #98521).
+ * Fix build error (closes: #151681).
+ * bash suggests bash-doc (closes: #152353).
+ * /etc/skel/.bashrc: Only enable color support for ls, when $TERM != dumb.
+ Closes: #143361.
+ * Report is missing any information. Bug submitter didn't respond.
+ Closes: #130051.
+ * Close a report for a sefault in bash-2.03, which cannot be reproduced
+ anymore in newer versions (2.05) (closes: #58404).
+ * Add the README.commands document to the doc directory. Reassign #106170
+ to doc-linux-text.
+ * Update to bash_completion 20020716 (v1.383) (closes: #145938).
+
+ -- Matthias Klose <doko@debian.org> Fri, 19 Jul 2002 22:33:25 +0200
+
+bash (2.05a-12) unstable; urgency=low
+
+ * Update to bash_completion 20020528 (v1.335) (closes: #141970, #142015,
+ #142859, #144335, #146152, #146309, #146693).
+ Put the the contributed completion files into /usr/share/doc.
+ * Suggest grep-dctrl, which is called by the completion code. Added
+ note to README.bash_completion, that the completion code depends on it.
+ Closes: #146152.
+ * Mention bash_completion in the package description (closes: #146878).
+ * Fix brace expansion (Fix by Richard Kettlewell <rjk@greenend.org.uk>).
+ Forwarded. Closes: #144983.
+
+ -- Matthias Klose <doko@debian.org> Thu, 30 May 2002 23:50:40 +0200
+
+bash (2.05a-11) unstable; urgency=medium
+
+ * Don't mishandle negative pid in `kill' builtin (closes: #133927, #137742).
+ * builtins(1) doesn't document `for' (closes: #118755).
+ * Add /usr/share/bash_completion directory to source package specific
+ completion files.
+ * Update to bash_completion 20020408 (v1.264).
+ Closes: #133109, #139375, #139675, #134713, #141134.
+ * Add completion to /etc/skel/.bashrc (commented out). Closes: #138921.
+
+ -- Matthias Klose <doko@debian.org> Mon, 8 Apr 2002 20:51:41 +0200
+
+bash (2.05a-10) unstable; urgency=medium
+
+ * Init seed of random generator in subshells (patch from Miha Tomsic).
+ * Update to bash_completion 20020330 (v1.237).
+ Closes: #138673, #138707, #139110 and #139675.
+ * Strip bash(1) again (closes: #138902).
+
+ -- Matthias Klose <doko@debian.org> Sun, 31 Mar 2002 08:08:26 +0200
+
+bash (2.05a-9) unstable; urgency=low
+
+ * Fix bug reading /etc/bash_completion.d files.
+
+ -- Matthias Klose <doko@debian.org> Sat, 16 Mar 2002 00:54:28 +0100
+
+bash (2.05a-8) unstable; urgency=low
+
+ * A last bash_completion bug fix upload (updated to v1.195,
+ see changelog.bash_completion.gz for details).
+ All files in /etc/bash_completion.d are read before ~/.bash_completion
+ is read. Files containing a dot are ignored.
+ Included completion extensions (closes: #129661, #137725, #137732).
+
+ -- Matthias Klose <doko@debian.org> Tue, 12 Mar 2002 23:25:21 +0100
+
+bash (2.05a-7) unstable; urgency=low
+
+ * A bash_completion bug fix upload (updated to v1.180,
+ see changelog.bash_completion.gz for details). Really closes: #133825.
+
+ -- Matthias Klose <doko@debian.org> Thu, 7 Mar 2002 00:06:14 +0100
+
+bash (2.05a-6) unstable; urgency=medium
+
+ * Configure --without-bash-malloc. At least on hppa, this fixes an error,
+ which shows up when building gcc or kernels:
+ malloc: /build/buildd/bash-2.05a/unwind_prot.c:284: assertion botched
+ free: called with unallocated block argument
+ * A bash_completion bug fix upload (updated to v1.163,
+ see changelog.bash_completion.gz for details).
+ Closes: #133111, #133112, #133116, #133825, #134296.
+ * Updated service completion patch (Ian Macdonald).
+
+ -- Matthias Klose <doko@debian.org> Sat, 2 Mar 2002 00:27:22 +0100
+
+bash (2.05a-5) unstable; urgency=medium
+
+ * A bash_completion bug fix upload (updated to v1.93,
+ see changelog.bash_completion.gz for details).
+ Closes: #129106, #130167, #129033, #129228, #129451, #129884, #132309,
+ #132529, #132552, #132553.
+ Ian even added completion for Quake! Horrible ...
+ * Include service completion patch.
+ * README.bash_completion: Fix reference to /etc/bash.bashrc (closes: #129816).
+
+ -- Matthias Klose <doko@debian.org> Wed, 6 Feb 2002 22:22:09 +0100
+
+bash (2.05a-4) unstable; urgency=high
+
+ * Fix for causing a segmentation fault when some special shell variables
+ are declared as array (therefore urgency high).
+ * Apply patch for function prototypes (closes: #124004, #124362).
+ * Capitalize `POSIX' in package description (closes: #124439).
+ * Add (commented) setting of MANPATH to /etc/skel/.bash_profile
+ (closes: #123792).
+ * Update builtins(1) (closes: #125673).
+ * Taken from the current upstream sources: Make the symlinked directory
+ completion behavior introduced in readline-4.2a a user-settable option.
+ If `mark-symlinked-directories' is set to `on', the symlinked directory
+ completion behavior is disabled, and symlinks that point to directories
+ have a slash appended.
+ * Add a script for programmable bash completion (version 1.53) from
+ http://www.caliban.org/bash/index.shtml#completion. Add commented
+ code into /etc/bash.bashrc and (closes: #127645).
+ * Install the changelog _and_ the CHANGES file to the doc dir.
+ * bash(1): mention quoting when assigning to FIGNORE (closes: #115290).
+
+ -- Matthias Klose <doko@debian.org> Sat, 12 Jan 2002 16:00:08 +0100
+
+bash (2.05a-3) unstable; urgency=low
+
+ * Include version.h in /usr/include/bash (closes: #120069).
+ * Link statically with readline and history to speed up link time
+ (and was done in bash-2.03). Closes: #107160.
+ * Add comment to set HISTCONTROL in /etc/skel/.bashrc (closes: #118132).
+
+ -- Matthias Klose <doko@debian.org> Sat, 8 Dec 2001 12:29:28 +0100
+
+bash (2.05a-2) unstable; urgency=high
+
+ * Update config.{sub,guess} from ftp://ftp.gnu.org/pub/gnu/config/.
+
+ -- Matthias Klose <doko@debian.org> Fri, 16 Nov 2001 19:07:06 +0100
+
+bash (2.05a-1) unstable; urgency=medium
+
+ * New upstream release.
+ * This is mainly a bugfix and code cleanup release (as you can see
+ from the version number as well). Fixes 64bit issues and index
+ overflow errors. Fixes the following Debian reports:
+ - Segmentation fault in script from report (closes: #119250).
+ - Extensions to the printf command (closes: #72320).
+ - Accept an empty list of items in a for loop (as ash does).
+ Closes: #91983.
+ - A bug that caused redirections with (...) subshells to be performed in
+ the wrong order was fixed (closes: #97551).
+ - Correctly handle errors from pipelines in andor lists (closes: #102196).
+ - Subshells of login shells no longer source ~/.bash_logout when they exit
+ (closes: #117701).
+ - Don't pass unset shell variable in the environment (closes: #117673).
+ * Upstream integrates the following Debian patches:
+ - debian/patches/mailcheck.dpatch: check for mail in the maildir format.
+ - debian/patches/gnu-source.dpatch: define GNU_SOURCE and include
+ strsignal prototype.
+ - Don't include -I/usr/include in CFLAGS.
+ - debian/patches/print-cmd.dpatch: Fixed an unassigned variable problem
+ in the redirection printing code.
+ - debian/patches/64bit.dpatch: 64-bit uncleanliness.
+ * Unable to reproduce behaviour with beta1, rc1 and final version from
+ report (closes: #110483, #110484).
+ * Point to the bash-doc package for example startup files (closes: #117642).
+ * The man page is precises: comments start with a word beginning with a `#'.
+ With '\ #', the doesn't start a word. Closes: #115118.
+
+ -- Matthias Klose <doko@debian.org> Wed, 14 Nov 2001 22:13:21 +0100
+
+bash (2.05a-0rc1) unstable; urgency=low
+
+ * New upstream (bugfix) release (release candidate).
+ * Add README.abs-guide, a pointer to the `Advanced Bash Scripting Guide'.
+
+ -- Matthias Klose <doko@debian.org> Fri, 2 Nov 2001 10:59:11 +0100
+
+bash (2.05a-0beta1) unstable; urgency=low
+
+ * New upstream (bugfix) release.
+ * Configured with --enable-largefile.
+ * Bugs fixed in this version. Closes: #72320, #91983, #97551, #102196,
+ #105231, #110483, #110484.
+ * Remove debian/patches/mailcheck.dpatch, included upstream.
+ * Closes: #61006. Logging history commands in the history cannot work.
+ * Not a bug (closes: #100743, #110604).
+
+ -- Matthias Klose <doko@debian.org> Thu, 11 Oct 2001 23:05:20 +0200
+
+bash (2.05-10) unstable; urgency=medium
+
+ * Rebuild with released libreadline library (closes: #113182).
+
+ -- Matthias Klose <doko@debian.org> Sun, 23 Sep 2001 01:16:48 +0200
+
+bash (2.05-9) unstable; urgency=medium
+
+ * Remove files left from test build (closes: #110307, #109807).
+ * Apply patches from reports (closes: #110275, #110276).
+ * Fix include of rbash man page (closes: #113111).
+
+ -- Matthias Klose <doko@debian.org> Sat, 22 Sep 2001 11:26:44 +0200
+
+bash (2.05-8) unstable; urgency=low
+
+ * Apply patch (Eric Gillespie) to define GNU_SOURCE and include
+ strsignal prototype (closes: #109807).
+ * Fix include of builtins man page (closes: #109917).
+
+ -- Matthias Klose <doko@debian.org> Sun, 26 Aug 2001 08:35:47 +0200
+
+bash (2.05-7) unstable; urgency=high
+
+ * Remove config.{cache,status} from source package (#107679).
+ (high urgency for hurd).
+ * /etc/skel/.bashrc: Fix dircolors invocation (closes: #107373).
+ Add commented code to set xterm's title to the prompt.
+
+ -- Matthias Klose <doko@debian.org> Mon, 6 Aug 2001 23:33:41 +0200
+
+bash (2.05-6) unstable; urgency=low
+
+ * Apply upstream patches p5, p6.
+ * Include missing header files in builtins package (closes: #105302).
+ * Don't list names of built-in commands in NAME section of builtins(1).
+ (closes: #99532).
+ * Document deprecated syntax of arithmetic evaluation (closes: #94266,
+ #95502).
+ * README.Debian: Document unsetting of SSH_CLIENT (closes: #88032).
+
+ -- Matthias Klose <doko@debian.org> Sat, 21 Jul 2001 18:41:10 +0200
+
+bash (2.05-5) unstable; urgency=low
+
+ * The behavior of range specificiers within bracket matching expressions
+ in the pattern matcher (e.g., [A-Z]) depends on the current locale,
+ specifically the value of the LC_COLLATE environment variable.
+ See /usr/share/doc/COMPAT.gz, 14. Closes #95285.
+ * Tagging reports as 'wontfix' and closing reports:
+ - exit status of pipes (#7047, #10494).
+ - completion behaviour on ':' (#78991).
+ - */text* completion (#21645).
+ * Documentation of command hashing is documented (#76135).
+
+ -- Matthias Klose <doko@debian.org> Thu, 26 Apr 2001 09:03:37 +0200
+
+bash (2.05-4) unstable; urgency=low
+
+ * Apply upstream patches p1-p4 (closes #92455).
+ * Fixed in bash-2.05-alpha1: closes #47588.
+
+ -- Matthias Klose <doko@debian.org> Wed, 25 Apr 2001 19:32:36 +0200
+
+bash (2.05-3) unstable; urgency=low
+
+ * Add 'Replaces: bash-doc (<= 2.05-1)' (closes: #93799).
+
+ -- Matthias Klose <doko@debian.org> Fri, 13 Apr 2001 01:15:19 +0200
+
+bash (2.05-2) unstable; urgency=medium
+
+ * Tighten build dependency (fixes #93509). Only an issue for upgrades
+ from bash-2.05-0, therefore urgency=medium.
+ * Remove changelog from bash package (also in bash-doc). Reported as
+ #93446, #93454, #93455.
+ * Fixed in bash-2.04, wrong example in report (#33822).
+ * Documented behaviour (ulimit, #72898).
+ * Use of redirection for #92324.
+ * sed, awk, ... builtins should be provided by the specific package.
+ there are other ways to make system scripts faster (ash, perl,
+ python, ...) (#61648).
+ * Unable to reproduce #34977 submitted for version 2.02.1, bug submitter
+ didn't respond to inquiries. Closing ...
+ * http://metalab.unc.edu/pub/Linux/docs/HOWTO/other-formats/html_single/Text-Terminal-HOWTO.html
+ as explanation for C-s behaviour (#68387, not sure why I missed this
+ for so long).
+ * Part one of the report is Posix.2 behaviour; part 2 (cd-ing relatively
+ from a subdirectory into a specified root-level directory) already
+ fixed in bash-2.04. #65316.
+ * Closing #13645. "The `-l' option should never have been documented, and it
+ was a mistake to include it in the first place -- it screws up the grammar.
+ Old Bourne shells and test commands had it because there was no other
+ way to find the length of a variable's value. Since bash has
+ ${#variable}, there's no need for it. POSIX.2 says, in the rationale,
+ that implementation is irregular and that the shell supports it directly
+ * Unable to reproduce #19211 submitted for version 2.01 in current
+ versions (2.04, 2.05).
+ * Close #2301, safe creation of temp files is documented in bash(1):
+ "If the redirection operator is >, and the noclobber option to the set
+ builtin has been enabled, the redirection will fail if the file whose
+ name results from the expansion of word exists and is a regular file.
+ If the redirection operator is >|, or the redirection operator is > and
+ the noclobber option to the set builtin command is not enabled, the
+ redirection is attempted even if the file named by word exists."
+ * Fixed upstream in 2.05: #84743.
+ * #76596: Bourne-style shells have always accepted multiple directory name
+ arguments to cd. If the user doesn't like it, have him define a shell
+ function (see README.Debian).
+ * bash already has enabled the system wide /etc/bash.bashrc (#82117).
+ * #88223: Starting bash with --posix, or -o posix, or as `sh', does make
+ the entire bash session posix-compliant (with the caveats noted in the
+ info manual). Posix-compliant does not mean `behaves exactly like
+ historical versions of sh', nor does it mean `does only what is in
+ the standard and nothing more'.
+
+ Posix says nothing about brace expansion, so whether or not bash does
+ brace expansion in posix mode has no bearing on posix compliance.
+
+ If you don't want brace expansion, use `set +o braceexpand' or
+ `set +B' or start bash with the `+B' option.
+
+ * Lower temporarily severity of #92455, so that this version can move
+ to testing. This bug exists in 2.04 as well, so we don't make things
+ worse.
+ * Apply upstream patch 1.
+
+ -- Matthias Klose <doko@debian.org> Mon, 9 Apr 2001 23:29:24 +0200
+
+bash (2.05-1) unstable; urgency=low
+
+ * New upstream release.
+ * /etc/skel/.bashrc: fix alias (#92440).
+
+ -- Matthias Klose <doko@debian.org> Mon, 9 Apr 2001 18:24:10 +0200
+
+bash (2.05-0beta2) unstable; urgency=low
+
+ * New upstream release 2.05-beta2.
+ * Fixed upstream: #85234.
+
+ -- Matthias Klose <doko@debian.org> Thu, 29 Mar 2001 23:57:12 +0200
+
+bash (2.05-0beta1) unstable; urgency=low
+
+ * New upstream release 2.05-beta1.
+ * Fixed upstream: #66891, #67519, #68931, #72898, #75104, #75315, #75957,
+ #76603, #84906.
+ Reverted behaviour: #60375, #75540.
+ * /etc/skel/.bash_logout: Removed. Submitted bug report to util-linux.
+ Fixes #63025, #72327, #83609.
+ * Depend on makeinfo (fixes #87688).
+
+ -- Matthias Klose <doko@debian.org> Tue, 6 Feb 2001 18:46:40 +0100
+
+bash (2.05-0alpha) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Matthias Klose <doko@debian.org> Sun, 26 Nov 2000 17:32:16 +0100
+
+bash (2.04-9) unstable; urgency=low
+
+ * Fix build bug.
+
+ -- Matthias Klose <doko@debian.org> Mon, 20 Nov 2000 23:35:03 +0100
+
+bash (2.04-8) unstable; urgency=low
+
+ * debian/control: Add bison to Build-Depends (fixes #73667).
+ * debian/rules: Add config.h to bash-builtins package (fixes #69802).
+ Strip bash binary (fixes #71252).
+
+ -- Matthias Klose <doko@debian.org> Sat, 18 Nov 2000 14:01:54 +0100
+
+bash (2.04-7) unstable; urgency=low
+
+ * debian/skel.bash_logout: Fix to clear all ttys (fixes #67772).
+ * debian/skel.bash_profile: Fix to include expanded ~/bin in path
+ (fixes #67714).
+ * Fix builtins.1 include (fixes #67094, #70007, #71848).
+ * debian/README.Debian: Document that bash is compiled with
+ -DSYS_BASHRC (fixes #66939).
+ * Fix hsuser doc (fixes #69392).
+
+ -- Matthias Klose <doko@debian.org> Mon, 2 Oct 2000 01:26:45 +0200
+
+bash (2.04-6) unstable; urgency=low
+
+ * debian/skel.bash_profile: Clarify where to look for for example files
+ (package bash-doc). Fixes #64311.
+ * debian/README.Debian: Explain, why bash is configured without
+ '--enable-net-redirections' (fixes #66352).
+
+ -- Matthias Klose <doko@debian.org> Wed, 28 Jun 2000 19:47:25 +0200
+
+bash (2.04-5) unstable; urgency=low
+
+ * debian/patches/alpha-unwind.dpatch: Patch from "Mikolaj J. Habryn"
+ <fe78734e@eris.rcpt.to>. Should fix #62170, #62690, #65053.
+ * debian/rules: Configure with --disable-net-redirections (as suggested
+ in #65172). The patch submitted in the report can be found in
+ debian/patches/tcp-udp-service-names.dpatch.
+ * debian/patches/getcwd-error: Fix error message for two levels of
+ unreadable directories (#64659).
+
+ -- Matthias Klose <doko@debian.org> Mon, 5 Jun 2000 05:59:59 +0200
+
+bash (2.04-4) unstable; urgency=low
+
+ * debian/patches/p[5-7].dpatch: Upstream patches.
+
+ -- Matthias Klose <doko@debian.org> Wed, 3 May 2000 01:05:23 +0200
+
+bash (2.04-3) unstable; urgency=low
+
+ * debian/patches/p[1-4].dpatch: Upstream patches.
+ * debian/bash.preinst.c: s/MAX_PATH/PATH_MAX/g (fixes #62323).
+
+ -- Matthias Klose <doko@debian.org> Wed, 26 Apr 2000 19:53:16 +0200
+
+bash (2.04-2) unstable; urgency=low
+
+ * debian/patches/pattern-operator.dpatch: Fix pattern operator bug.
+ * debian/README.Debian: Add FAQ how to get rid off beeps for ambiguous
+ completions (fixes #59550).
+
+ -- Matthias Klose <doko@debian.org> Sat, 8 Apr 2000 22:06:34 +0200
+
+bash (2.04-1) unstable; urgency=low
+
+ * Final release.
+ * Don't strip bash (debugging #58404 ...).
+
+ -- Matthias Klose <doko@debian.org> Mon, 20 Mar 2000 19:37:44 +0100
+
+bash (2.04-0beta5db1) unstable; urgency=low
+
+ * New upstream version, beta 5, Debian build 1.
+ * Remove six dpatch files with patches now integrated upstream.
+ * Bugs fixed with this upstream version: #5703, #15165, #21363, #21901,
+ #33900, #36652, #38804, #41916, #47179, #47990, #50353, #56209, #57544.
+ * Compiled with NON_INTERACTIVE_LOGIN_SHELLS to run the startup files when
+ not in posix mode. Fixes #11938, #14287, #25245.
+ * Still in this version: #27090.
+ * The `-l' option to test is not included by intent (fixes #13645).
+ Comment from upstream: "The `-l' option should never have been documented,
+ and it was a mistake to include it in the first place -- it screws up the
+ grammar. Old Bourne shells and test commands had it because there was no
+ other way to find the length of a variable's value. Since bash has
+ ${#variable}, there's no need for it. POSIX.2 says, in the rationale,
+ that implementation is irregular and that the shell supports it directly.
+ * Report #26720: perl -e 'print ":;" x 100000' > foo; . ./foo dumps core.
+ Comment from upstream: This is not a bash bug; it is a process resource
+ problem. The default resource limit for stack size is 8M on my version of
+ Linux. The call tree created by the parser for the script (100000 calls
+ to `:') is 99999 nodes deep, and requires that many recursive calls to the
+ command execution routines. This overflows the stack, and bash segfaults.
+ I couldn't reproduce it anywhere but Linux, because the machines I tested
+ on all have reasonable default stack sizes. Raising the limit to 16M is
+ sufficient to cause the script to run successfully (I didn't try anything
+ between 8M and 16M).
+ * Report #30460: redirection is different from standard: bash --posix
+ $ mkdir foo; cd foo; echo anything goes > "this file"
+ $ for f in *; do tr ay \ o < $f | cat; done
+ sh: $f: ambiguous redirect
+ This is POSIX.2 behaviour.
+ * debian/bash.preinst.c: Check if /bin/sh points to something other than
+ bash and is not diverted and point to README.Debian how to divert
+ a file (fixes #34717, #45656).
+ * debian/patches/random.dpatch: Fix bug in patch (closes #38804).
+ * debian/README.Debian: Commented behaviour from report #50853.
+
+ -- Matthias Klose <doko@debian.org> Thu, 24 Feb 2000 19:34:10 +0100
+
+bash (2.03-6) frozen unstable; urgency=medium
+
+ * debian/bash.preinst.c: Evil kludge, deal with arbitrary name lengths
+ (fixes #54876).
+ * Apply NMU (fixes #55887).
+ * debian/rules: Install debian/bash.conffiles (fixes #57963, #58541).
+
+ -- Matthias Klose <doko@debian.org> Sun, 20 Feb 2000 19:50:48 +0100
+
+bash (2.03-5.1) unstable; urgency=low
+
+ * debian/patches/job-control-segfault.dpatch: Patch from Eric Weigel
+ <ericw@bestnet.org>. Closes: #55887
+
+ -- Adam Heath <doogie@debian.org> Sat, 22 Jan 2000 15:10:50 -0600
+
+bash (2.03-5) unstable; urgency=low
+
+ * Update rl.ctrl-char patch from Dan Jacobowitz.
+ Fixes #54805, #54639, #54612.
+ * Add autoconf to Build-Depends (finally, Roman ...)
+
+ -- Matthias Klose <doko@debian.org> Tue, 11 Jan 2000 20:50:31 +0100
+
+bash (2.03-4) unstable; urgency=low
+
+ * debian/control: Fix build dependencies (fixes #52777).
+ * debian/rules: Cleanup.
+ * debian/patches/rl-ctrl-char.dpatch: Don't assume char is signed by
+ default (fixes #53252).
+ * Build with libncurses5-dev (fixes #54165).
+ * Fix changelog symlink in bash-doc package (fixes #54240).
+ * debian/README.Debian: Add paragraph for writing prompts.
+ * debian/README.Debian: Add paragraph about hashing of moved commands
+ (and closing #36877).
+ * Install more verbose skeleton files (closes #39728).
+ * The `-l' option to test is not included by intent (fixes #13645).
+ Comment from upstream: "The `-l' option should never have been documented,
+ and it was a mistake to include it in the first place -- it screws up the
+ grammar. Old Bourne shells and test commands had it because there was no
+ other way to find the length of a variable's value. Since bash has
+ ${#variable}, there's no need for it. POSIX.2 says, in the rationale,
+ that implementation is irregular and that the shell supports it directly.
+ * Report #26720: perl -e 'print ":;" x 100000' > foo; . ./foo dumps core.
+ Comment from upstream: This is not a bash bug; it is a process resource
+ problem. The default resource limit for stack size is 8M on my version of
+ Linux. The call tree created by the parser for the script (100000 calls
+ to `:') is 99999 nodes deep, and requires that many recursive calls to the
+ command execution routines. This overflows the stack, and bash segfaults.
+ I couldn't reproduce it anywhere but Linux, because the machines I tested
+ on all have reasonable default stack sizes. Raising the limit to 16M is
+ sufficient to cause the script to run successfully (I didn't try anything
+ between 8M and 16M).
+ * Report #30460: redirection is different from standard: bash --posix
+ $ mkdir foo; cd foo; echo anything goes > "this file"
+ $ for f in *; do tr ay \ o < $f | cat; done
+ sh: $f: ambiguous redirect
+ This is POSIX.2 behaviour.
+ * debian/bash.preinst.c: Check if /bin/sh points to something other than
+ bash and is not diverted and point to README.Debian how to divert
+ a file (fixes #34717, #45656).
+
+ -- Matthias Klose <doko@debian.org> Fri, 7 Jan 2000 07:19:00 +0100
+
+bash (2.03-3) unstable; urgency=low
+
+ * Moved /etc/profile to base-files package (closes #52987).
+ * debian/skel.bash_profile: Use umask 022 as in debian/etc.profile
+ (closes #53020).
+ * debian/patches/secure-build.dpatch: Build bash without using guessable
+ file names in /tmp (closes #36027).
+ * debian/patches/bashbug-editor.dpatch: Use editor command, not emacs
+ (closes #32576, #32577).
+ * Fixed in 2.03 or before: #16013, #20455, #30803 (according to upstream
+ author, bug submitter does not respond).
+ * #44015 not a bug. Bash is more liberal than POSIX specifies, but function
+ names that are not identifiers is something that may go away in the future.
+ * #40242 not a bug: Non-interactive bash shells have always unset PS1,
+ so scripts and so on can test for it.
+ * Report #21645: */text* completion doesn't work anymore. According to the
+ upstream author, this feature was removed in bash-2.01.1. The TAB
+ completion only succeeds with globbing characters if there is a single
+ completion. It caused too many problems otherwise.
+ * Define DONT_REPORT_SIGPIPE: We don't want to see `Broken pipe' messages
+ when a job like `cat jobs.c | exit 1' is executed. Fixes part of #7047,
+ #10259, #10433 and #10494. Comment from the upstream author: "The default
+ bash behavior with respect to the exit status of a pipeline will not
+ change. Changing it as suggested in the discussion of #10494 would render
+ bash incompatible with every other shell out there.". Closed these reports.
+ * debian/etc.bash.bashrc: Set checkwinsize.
+
+ -- Matthias Klose <doko@debian.org> Sun, 19 Dec 1999 15:58:43 +0100
+
+bash (2.03-2) unstable; urgency=low
+
+ * Apply privmode patch (do not drop privileges, if called as /sh.
+ Closes #52586).
+
+ -- Matthias Klose <doko@debian.org> Mon, 13 Dec 1999 22:25:22 +0100
+
+bash (2.03-1) unstable; urgency=low
+
+ * New maintainer.
+ * New upstream version (closes: #34077, #35642, #46916). For a terse
+ description of new features and bug fixes see /usr/share/doc/bash/NEWS.gz.
+ * Fixed in upstream release (closes: #14229, #16856, #21363, #22498, #28849,
+ #29863, #37971, #38411, #40930, #49702). #37971 either here or in libc6.
+ #30803.
+ * Separate out documentation and examples to bash-doc package.
+ * Do not build shared readline libs from this source. According to the
+ upstream author: "It's not appropriate to build shared libraries from
+ the readline shipped with bash. That is designed to be linked directly
+ into bash."
+ * Link statically with included libreadline. It's intended, because
+ potato does not have a libreadline4 yet. Wait for bash-2.04 and
+ it's version of libreadline.
+ * debian/README.Debian: Sort of FAQ suggested by Guy Maor.
+ * debian/copyright: Updated URL.
+ * debian/rules: Introduced some variables for packages and directories.
+ * debian/control: Updated package names. Add Build-Depends.
+ * Point to /usr/doc/share in man pages (rbash.1, builtins.1).
+ * Make /usr/doc compatibility links (all but libreadline.postinst, which
+ is a C file).
+ * debian/patches/conf-update.dpatch: New config files from automake
+ (closes #33745).
+ * debian/patches/bashbug-editor.dpatch: Use EDITOR variable
+ (closes #32576, #32577).
+ * debian/etc.profile: Fixed comment that /etc/profile is used for Bourne
+ shell and Bourne compatible shells (closes: #3459).
+ * debian/patches/tempnam.dpatch: Applied patch from report #35975
+ (closes: #35975).
+ * bash is not responsible for setting $USER in login shells (closes: #36103).
+ * Compile with -DSYS_BASHRC defined. /etc/bash.bashrc is empty by default
+ (closes #27055).
+ * Fixed with boot-floppies 2.1.3 (closes: #22517).
+ * debian/patches/mailcheck.dpatch: Add maildir support. Patch from
+ Miquel van Smoorenburg <miquels@cistron.nl> (closes #38794).
+ * Patches from NMU are applied (should close #43096).
+ * debian/control: Make builtins depend on source version of bash.
+ * Build for i386, not i486.
+ * Report #28811: "dpkg segfaults trying to install bash. Logging in then
+ produces segfault. Still having to run 2.00.0(1)". Not reproducable.
+ * Report #15165: "If the last command in the pipeline is killed by a signal,
+ bash does not report it even though $? contains the correct value".
+ Not reproducable.
+ * Report #21645: "If you type `rm */text*<TAB>', previous versions would
+ complete text given that they're under the same directory. 2.01.1-1
+ doesn't do that anymore.". Not documented anywhere. It seems, this was
+ a bug disguised as a feature ;-)
+ * Report #36027: "During compiling bash package, files with hardcoded names
+ are created in /tmp. In a malicious multi-user environment, this allows
+ attacks to the user's files and possibly allow creating trojan packages.
+ If the compiling user is root...".
+ Submitter cannot be reached. autoconf/automake issues? Reassign to general?
+ * Report #16700: "bash terminated when I asked it "mailq -v", while in an
+ xterm, with a sysload of approx 1"; not reproducable. Submitter offers
+ core file.
+ * Report #37637: Not reproduceable (should close #37637).
+ * Report #37275: A dpkg error? Or just another reason to completely link
+ bash statically?
+ * Report #34978, #42858: The prerm now is a binary pragram.
+ #34977 as well? #36016 (patch)?
+ * Report #43737: Non bug. Behaviour changed from 1.4 to 2.0 (closes: #43737).
+ * Report #36459: Non bug (closes #36459).
+ * Report #19211: Wanted behaviour?
+ * Report #11938: The included patch is applied upstream (closes: #11938).
+ * Report #10699, #45656: Todo: See #34717 ...
+ * Report #35127: Apply included patch. TODO: test and forward upstream.
+ * Report #41082: Obsoleted patches (closes: #35130, #41802).
+ * Reports tested and still in this version (should be forwarded ...):
+ #2301, #21901, #26619, #26720, #27090, #30460, #33900, #34833,
+ #36877
+ #38804, #41916 (update docs?),
+ #46901, #47990.
+ * Report #47849: You *must* reset OPTIND to 1 before reusing getopts.
+ * Report #45841: This is a POSIX.2/XPG5 requirement.
+ * Report #35979, #45379: set -e works on simple commands only.
+ (command) is not a simple command.
+ * Report #38244: -x and -v and all of the rest of the options are documented
+ in the `set' builtin section. The OPTIONS section of the man page refers
+ to `set'.
+ * Report #37654: When in a pipeline, `tty' prints `not a tty'. This is why
+ grep is looking for `not' in file `a'. Try `w | echo $(tty)'.
+ * Report #33822: This is a locale problem. The de_DE locale gives lower case
+ and upper case letters the same collating weight. POSIX.2 warns that
+ range expressions are not portable across locales.
+ * Report #28789, #22291: resizing xterm bash doesn' t update window limits.
+ Use `shopt -s checkwinsize'. (closes: #28789, #22291).
+ * Report #39728: Suggestion to add something to /etc/skel files. A matter
+ of taste. Added comments where to find `fancy' startup files.
+
+ * Work needed: #33822 (huh?), #42916 and #44015 (update docs, dashs in
+ identifiers).
+
+ * Not tested: (#7047, #10259, #10433, #10494), #14287 (how to test?),
+ #14658 (how to test?), #16013, #16797, #20455 (alpha arch), #20821,
+ #22632, #26571, #29610, #35994 (powerpc arch),
+ #36652, #40242, #47179.
+
+ -- Matthias Klose <doko@debian.org> Sat, 4 Dec 1999 17:03:47 +0100
+
+bash (2.02.1-1.8) unstable; urgency=low
+
+ * Applied Anthonies patch and recompiled as the libc5 version did
+ not compile for him (closes: #34717, #43050, #43096, #10699).
+ * Bumped the version number of libreadline and recompiled,
+ hopefully in time before the dinstall run ;)
+
+ -- Torsten Landschoff <torsten@debian.org> Sat, 18 Sep 1999 19:26:20 +0200
+
+bash (2.02.1-1.7) unstable; urgency=low
+
+ * Non-maintainer release.
+ * Make bash not Pre-Depend on itself. That is, make bash's preinst
+ something other than a /bin/sh script; in this case a reasonably
+ simple binary.
+ * Remove /bin/sh from the .deb, and reinstate it in the postinst if
+ it's not already present. Hence make the postinst a /bin/bash script
+ instead of a /bin/sh script.
+
+ -- Anthony Towns <ajt@debian.org> Sat, 28 Aug 1999 01:09:08 +1000
+
+bash (2.02.1-1.6) unstable; urgency=low
+
+ * Non-maintainer release.
+ * Link bash statically with libreadline. Closes: #42858.
+
+ -- Thomas Quinot <thomas@debian.org> Fri, 13 Aug 1999 21:47:35 +0200
+
+bash (2.02.1-1.5) unstable; urgency=low
+
+ * Non-maintainer release.
+ * Updated to standards version 3.0.0.
+ * Fixed dependency on libreadlineg2. Closes: #35130, #39280, #41802.
+
+ -- Thomas Quinot <thomas@debian.org> Thu, 29 Jul 1999 13:05:26 +0200
+
+bash (2.02.1-1.4) unstable; urgency=low
+
+ * Non-maintainer release.
+ * Make libreadlineg2 conflict with bash (<< 2.02.1-1.2)
+
+ -- Joel Klecker <espy@debian.org> Thu, 25 Mar 1999 09:40:39 -0800
+
+bash (2.02.1-1.3) unstable; urgency=low
+
+ * Non-maintainer release.
+ * Recompile against ncurses 4.2-3.2 for versioned dependency.
+ * Add (>= 2.1-13.1) depend to readline shlibs.
+
+ -- Joel Klecker <espy@debian.org> Thu, 18 Mar 1999 12:33:28 -0800
+
+bash (2.02.1-1.2) unstable; urgency=low
+
+ * Non-maintainer release.
+ * Recompile against glibc 2.1 for libreadline.
+
+ -- Joel Klecker <espy@debian.org> Fri, 5 Mar 1999 09:36:54 -0800
+
+bash (2.02.1-1.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Replaced config.{sub,guess} with newer ones for ARM.
+
+ -- Jim Pick <jim@jimpick.com> Mon, 22 Feb 1999 23:57:53 -0800
+
+bash (2.02.1-1) unstable; urgency=low
+
+ * libreadline 2.1-13
+ * Upstream upgrade, closes: #26582
+ * Bugs fixed upstream: closes: #21511, #24004.
+ * Rules, control fixes for hurd, powerpc, alpha closes: #29123, #29395,
+ #24931, #31289.
+ * Included paren-matching feature in readline, closes: #27707.
+ * Removed convert-meta comment from etc/inputrc, closes: #23035.
+ * Use system random instead of lousy builtin one, closes: #22104.
+
+ -- Guy Maor <maor@debian.org> Mon, 15 Feb 1999 12:57:53 -0800
+
+bash (2.01.1-4.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * libreadline 2.1-12
+ * Rebuild with ncurses4.0 to avoid packages linked with libreadline
+ depending on two versions of ncurses; reported by Martin Mitchell
+ <martin@debian.org>. [#27762]
+ * debian/rl.shlibs: bump versioned dependency to >= 2.1-12.
+ * debian/rules (build): add --with-curses to avoid ever linking with
+ termcap; reported by, ehm, Guy Maor <maor@debian.org>. [#25118]
+
+ -- James Troup <james@nocrew.org> Tue, 20 Oct 1998 03:24:03 +0100
+
+bash (2.01.1-3.1) frozen unstable; urgency=low
+
+ * Non-maintainer release.
+ * Build with ncurses3.0-altdev, so libreadline2 doesn't depend on libc6.
+ * Use <architecture>-linux instead of <arch>-debian-linux.
+
+ -- Joel Klecker <jk@espy.org> Tue, 14 July 1998 16:26:43 -0700
+
+bash (2.01.1-3) unstable frozen; urgency=medium
+
+ * libreadline 2.1-10
+ * Make libreadlineg2's postinst a c program, like libreadline2.
+ * Check return code from tempfile in bashbug, closes: #22349.
+ * glibc 2.1 patch, closes #22532.
+ * remove . from /etc/profile PATH, closes #22738.
+
+ -- Guy Maor <maor@ece.utexas.edu> Mon, 25 May 1998 22:41:06 -0700
+
+bash (2.01.1-2) unstable frozen; urgency=high
+
+ * libreadline 2.1-9.
+ * Predepend on libreadlineg2 >= 2.1-8, closes: #20572.
+
+ -- Guy Maor <maor@ece.utexas.edu> Wed, 8 Apr 1998 01:07:10 -0700
+
+bash (2.01.1-1) frozen unstable; urgency=low
+
+ * libreadline 2.1-8.
+ * Upstream upgrade, closes: #13762, #14446, #18296.
+ * Fixed /etc/inputrc, closes: #19745, #19075, #13643, #18004, #17256,
+ #15345, #14672, #15213, #15345, #15638, #18004, #16797, #15638, #19241.
+ * Applied patch to read End, Delete, closes: #20053.
+ * Don't build libc5 packages on alpha & powerpc, closes: #13761, #15538,
+ #15829.
+ * Add sh(1) - symlink to bash(1), close: #15659.
+ * Fix unsafe requests in rbash(1), builtins(1), closes: #19086.
+ * bashbug uses tempfile, closes: #19781.
+ * fixed fc -l segfault, closes: #13726.
+
+ -- Guy Maor <maor@ece.utexas.edu> Sat, 28 Mar 1998 19:34:15 -0800
+
+bash (2.01-5) unstable; urgency=low
+
+ * libreadline 2.1-7
+ * libreadline tries INPUTRC if it's set, else _both_ /etc/inputrc and
+ ~/.inputrc
+ * A better /etc/inputrc.
+
+ -- Guy Maor <maor@ece.utexas.edu> Thu, 25 Sep 1997 11:38:41 -0500
+
+bash (2.01-4) unstable; urgency=low
+
+ * libreadline 2.1-6
+ * bash-builtin examples moved to correct place.
+ * libreadline tries /etc/inputrc if ~/.inputrc doesn't exist.
+ * set -a; set +a problem seems to be fixed (8390)
+
+ -- Guy Maor <maor@ece.utexas.edu> Wed, 24 Sep 1997 14:36:02 -0500
+
+bash (2.01-3) unstable; urgency=low
+
+ * libreadline 2.1-5
+ * Bash depended on wrong version of libreadlineg2. (#12150, #12316)
+ * Put current version in libreadlineg2 shlibs file.
+ * Honor TMPDIR by using tempnam(3) (#9201).
+
+ -- Guy Maor <maor@ece.utexas.edu> Sun, 24 Aug 1997 23:31:19 -0500
+
+bash (2.01-2) unstable; urgency=low
+
+ * libreadline 2.1-4
+ * Make bash predepend on libreadlineg2 (>=2.01-1) so as not to break
+ systems which installed James's releases.
+ * Fix references to shell runtime code in libreadline.so and libhistory.so.
+ * Fix declare -p dumping core on empty temp variable (#12017).
+ * make_quoted_replacement() checks for empty rl_filename_quote_characters
+ (12051).
+ * readline/readline.h - rl_dispatching should be extern (#11049).
+ * Added libreadline2g-dbg.
+
+ -- Guy Maor <maor@ece.utexas.edu> Sat, 16 Aug 1997 13:38:37 -0500
+
+bash (2.01-1) unstable; urgency=low
+
+ * libreadline 2.1-3
+ * Maintainer release of 2.01. (2.01 fixes 3815, 4783, 7782, 8439, 10416,
+ 10598, 10604, 11806).
+ * Cleaned and corrected rules, Makefiles, control files. (7580, 11406).
+ * Reimplemented SHELL compile time as runtime check. Backward compatible
+ with old bash (10916).
+ * Added rbash man page (8645).
+ * ldconfig run in postinst, compiled as libc5 (10176)
+ * :( set -a;set +a problem still there, but acts differently.
+
+ -- Guy Maor <maor@ece.utexas.edu> Thu, 14 Aug 1997 15:35:23 -0500
+
+bash (2.01-0.1) unstable; urgency=high
+
+ * libreadline 2.1-2.2
+ * libreadline2 now has a preinst script which ensures that ld.so.1
+ knows about /lib/libc5-compat and /usr/lib/libc5-compat. Before this
+ change, trying to install with a libc (< 5.4.23-4) broke bash.
+ * libreadlineg2 no longer has version dependant shlibs file [#10742].
+
+ -- James Troup <jjtroup@comp.brad.ac.uk> Mon, 23 Jun 1997 22:00:18 +0100
+
+bash (2.01-0) unstable; urgency=medium
+
+ * libreadline 2.1-2.1
+ * Non-maintainer release
+ * New upstream version [#10416, #10598, #10604, #8390]
+ * Rebuilt for glibc; now provides libreadline2g{,-dev} and
+ libreadline2{,-altdev}.
+ * Not all of Guy's changes are implemented, noticeably a security
+ improvement in execute-cmds.c and his alteration of libreadline's
+ compile time dependance on -DSHELL to run time dependance.
+
+ -- James Troup <jjtroup@comp.brad.ac.uk> Thur, 19 June 1997 19:13:34 +0100
+
+bash (2.0-3) unstable; urgency=medium
+
+ * libreadline 2.1-2
+ * #include <sys/types.h> in general.h needed for alpha build (#7658)
+ * Don't drop suid/sgid bits if invoked as sh (#7796)
+ * Applied patch to fix time in for loop (#7436)
+ * Split off bash-builtins with examples & necessary headers
+ * Juggled libreadline2 documentation around (#7275)
+
+ -- Guy Maor <maor@ece.utexas.edu> Mon, 10 Mar 1997 12:45:06 -0600
+
+bash (2.0-2) unstable; urgency=low
+
+ * Added NEWS, COMPAT to /usr/doc/bash
+
+ -- Guy Maor <maor@ece.utexas.edu> Fri, 7 Feb 1997 17:35:21 -0600
+
+bash (2.0-1) unstable; urgency=low
+
+ * Upstream upgrade.
+ * .bash_history created 600 by default.
+ * Security improvements when creating files in /tmp
+ * Reimplemented SHELL run-time check with backward 2.0 compatibility
+
+ -- Guy Maor <maor@ece.utexas.edu> Wed, 29 Jan 1997 03:31:47 -0600
+
+bash (1.14.7-2) frozen unstable; urgency=low
+
+ * libhistory.so had wrong soname (fixes bug 5381).
+
+ -- Guy Maor <maor@ece.utexas.edu> Sat, 16 Nov 1996 11:07:08 -0600
+
+bash (1.14.7-1) frozen unstable; urgency=low
+
+ * New upstream version converted to new source format.
+ libreadline2, libreadline2-dev produced from bash source.
+ * Made libreadline SHELL define into a runtime check with rl_shell,
+ history_shell flags, 4 hooks.
+ * echo checks write errors (fixes 818).
+ * default unreadable .bash_history in /etc/skel (fixes 1549).
+
+ -- Guy Maor <maor@ece.utexas.edu> Sat, 9 Nov 1996 05:07:31 -0600
diff --git a/debian/clear_console.1 b/debian/clear_console.1
new file mode 100644
index 0000000..dc189a6
--- /dev/null
+++ b/debian/clear_console.1
@@ -0,0 +1,50 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" *
+.\" Permission is hereby granted, free of charge, to any person obtaining a *
+.\" copy of this software and associated documentation files (the *
+.\" "Software"), to deal in the Software without restriction, including *
+.\" without limitation the rights to use, copy, modify, merge, publish, *
+.\" distribute, distribute with modifications, sublicense, and/or sell *
+.\" copies of the Software, and to permit persons to whom the Software is *
+.\" furnished to do so, subject to the following conditions: *
+.\" *
+.\" The above copyright notice and this permission notice shall be included *
+.\" in all copies or substantial portions of the Software. *
+.\" *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+.\" *
+.\" Except as contained in this notice, the name(s) of the above copyright *
+.\" holders shall not be used in advertising or otherwise to promote the *
+.\" sale, use or other dealings in this Software without prior written *
+.\" authorization. *
+.\"***************************************************************************
+.\"
+.\" $Id: clear.1,v 1.3 2000/07/15 23:59:35 china Exp $
+.TH clear_console 1 ""
+.ds n 5
+.SH NAME
+\fBclear_console\fR - clear the console
+.SH SYNOPSIS
+\fBclear_console\fR
+.br
+.SH DESCRIPTION
+\fBclear_console\fR clears your console if this is possible. It looks in the
+environment for the terminal type and then in the \fBterminfo\fR database to
+figure out how to clear the screen. To clear the buffer, it then changes the
+foreground virtual terminal to another terminal and then back to the original
+terminal.
+.SH SEE ALSO
+\fBclear\fR(1), \fBchvt\fR(1)
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
diff --git a/debian/clear_console.c b/debian/clear_console.c
new file mode 100644
index 0000000..c6b3969
--- /dev/null
+++ b/debian/clear_console.c
@@ -0,0 +1,285 @@
+/*
+Copyright (C) 2006-2008 Canonical Ltd.
+
+clear_console and it's man page are free software; you can redistribute it
+and/or modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2, or (at your
+option) any later version.
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <string.h>
+#include <getopt.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#if defined(__linux)
+#include <linux/kd.h>
+#include <linux/vt.h>
+#elif defined(__FreeBSD_kernel__)
+#include <sys/consio.h>
+#include <sys/kbio.h>
+#endif
+
+#include <curses.h>
+#include <term.h>
+
+#define VERSION "0.1"
+
+char* progname;
+int quiet = 0;
+
+void usage()
+{
+ fprintf(stderr, "Usage: %s [option]\n", progname);
+ fprintf(stderr, "valid options are:\n");
+ fprintf(stderr, "\t-q --quiet don't print error messages\n");
+ fprintf(stderr, "\t-h --help display this help text and exit\n");
+ fprintf(stderr, "\t-V --version display version information and exit\n");
+}
+
+const struct option opts[] =
+{
+ /* operations */
+ {"help", no_argument, 0, 'h'},
+ {"version", no_argument, 0, 'V'},
+ {"quiet", no_argument, 0, 'q'},
+ {0, 0, 0, 0}
+};
+
+static int putch(int c)
+{
+ return putchar(c);
+}
+
+
+/* taken from console-utils, lib/misc-console-utils.c */
+
+int is_a_console(int fd)
+{
+#if defined(__linux__)
+ char arg;
+#elif defined(__FreeBSD_kernel__)
+ int arg;
+#endif
+
+ arg = 0;
+ return (ioctl(fd, KDGKBTYPE, &arg) == 0
+ && ((arg == KB_OTHER) || (arg == KB_101) || (arg == KB_84)));
+}
+
+static int open_a_console(char *fnam)
+{
+ int fd;
+
+ /* try read-only */
+ fd = open(fnam, O_RDWR);
+
+ /* if failed, try read-only */
+ if (fd < 0 && errno == EACCES)
+ fd = open(fnam, O_RDONLY);
+
+ /* if failed, try write-only */
+ if (fd < 0 && errno == EACCES)
+ fd = open(fnam, O_WRONLY);
+
+ /* if failed, fail */
+ if (fd < 0)
+ return -1;
+
+ /* if not a console, fail */
+ if (! is_a_console(fd))
+ {
+ close(fd);
+ return -1;
+ }
+
+ /* success */
+ return fd;
+}
+
+/*
+ * Get an fd for use with kbd/console ioctls.
+ * We try several things because opening /dev/console will fail
+ * if someone else used X (which does a chown on /dev/console).
+ *
+ * if tty_name is non-NULL, try this one instead.
+ */
+
+int get_console_fd(char* tty_name)
+{
+ int fd;
+
+ if (tty_name)
+ {
+ if (-1 == (fd = open_a_console(tty_name)))
+ return -1;
+ else
+ return fd;
+ }
+
+ fd = open_a_console("/dev/tty");
+ if (fd >= 0)
+ return fd;
+
+ fd = open_a_console("/dev/tty0");
+ if (fd >= 0)
+ return fd;
+
+ fd = open_a_console("/dev/console");
+ if (fd >= 0)
+ return fd;
+
+ for (fd = 0; fd < 3; fd++)
+ if (is_a_console(fd))
+ return fd;
+
+#if 0
+ fprintf(stderr,
+ _("Couldnt get a file descriptor referring to the console\n"));
+#endif
+ return -1; /* total failure */
+}
+
+
+int is_pseudo_tty(int fd)
+{
+ char *tty = ttyname(fd);
+
+ if (!tty)
+ {
+ if (!quiet)
+ perror("ttyname");
+ return 0;
+ }
+
+ if (strlen(tty) >= 9 && !strncmp(tty, "/dev/pts/", 9))
+ return 1;
+
+ if (strlen(tty) >= 8 && !strncmp(tty, "/dev/tty", 8)
+ && tty[8] >= 'a' && tty[8] <= 'z')
+ return 1;
+
+ return 0;
+}
+
+int clear_console(int fd)
+{
+ int num, tmp_num;
+#if defined(__linux__)
+ struct vt_stat vtstat;
+#endif
+
+ /* clear screen */
+ setupterm((char *) 0, 1, (int *) 0);
+ if (tputs(clear_screen, lines > 0 ? lines : 1, putch) == ERR)
+ {
+ exit(1);
+ }
+
+ if (is_pseudo_tty(STDIN_FILENO))
+ return 0;
+
+ if (!strcmp(getenv("TERM"), "screen"))
+ return 0;
+
+ /* get current vt */
+#if defined(__linux__)
+ if (ioctl(fd, VT_GETSTATE, &vtstat) < 0)
+#elif defined(__FreeBSD_kernel__)
+ if (ioctl(fd, VT_ACTIVATE, &num) < 0)
+#endif
+ {
+ if (!quiet)
+ fprintf(stderr, "%s: cannot get VTstate\n", progname);
+ exit(1);
+ }
+#if defined(__linux__)
+ num = vtstat.v_active;
+#endif
+ tmp_num = (num == 1 ? 2 : 1);
+
+ /* switch vt to clear the scrollback buffer */
+ if (ioctl(fd, VT_ACTIVATE, tmp_num))
+ {
+ if (!quiet)
+ perror("chvt: VT_ACTIVATE");
+ exit(1);
+ }
+
+ if (ioctl(fd, VT_WAITACTIVE, tmp_num))
+ {
+ if (!quiet)
+ perror("VT_WAITACTIVE");
+ exit(1);
+ }
+
+ /* switch back */
+ if (ioctl(fd, VT_ACTIVATE, num))
+ {
+ if (!quiet)
+ perror("chvt: VT_ACTIVATE");
+ exit(1);
+ }
+
+ if (ioctl(fd, VT_WAITACTIVE, num))
+ {
+ if (!quiet)
+ perror("VT_WAITACTIVE");
+ exit(1);
+ }
+ return 0;
+}
+
+int main (int argc, char* argv[])
+{
+ int fd;
+ int result; /* option handling */
+ int an_option;
+
+ if ((progname = strrchr(argv[0], '/')) == NULL)
+ progname = argv[0];
+ else
+ progname++;
+
+ while (1)
+ {
+ result = getopt_long(argc, argv, "Vhq", opts, &an_option);
+
+ if (result == EOF)
+ break;
+
+ switch (result)
+ {
+ case 'V':
+ fprintf(stdout, "%s: Version %s\n", progname, VERSION);
+ exit (0);
+ case 'h':
+ usage();
+ exit (0);
+
+ case 'q':
+ quiet = 1;
+ }
+ }
+
+ if (optind < argc)
+ {
+ if (!quiet)
+ fprintf(stderr, "%s: no non-option arguments are valid", progname);
+ exit(1);
+ }
+
+ if ((fd = get_console_fd(NULL)) == -1)
+ {
+ if (!quiet)
+ fprintf(stderr, "%s: terminal is not a console\n", progname);
+ exit(1);
+ }
+
+ clear_console(fd);
+
+ return 0;
+}
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..f684aae
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,72 @@
+Source: bash
+Section: base
+Priority: required
+Maintainer: Matthias Klose <doko@debian.org>
+Standards-Version: 3.9.6
+Build-Depends: autoconf, autotools-dev, bison, libncurses5-dev,
+ texinfo, texi2html, debhelper (>= 5), locales, gettext, sharutils, time,
+ xz-utils, dpkg-dev (>= 1.16.1)
+Build-Depends-Indep: texlive-latex-base, ghostscript, texlive-fonts-recommended
+Homepage: http://tiswww.case.edu/php/chet/bash/bashtop.html
+Vcs-Browser: https://code.launchpad.net/~doko/+junk/pkg-bash-debian
+Vcs-Bzr: http://bazaar.launchpad.net/~doko/+junk/pkg-bash-debian
+
+Package: bash
+Architecture: any
+Multi-Arch: foreign
+Pre-Depends: dash (>= 0.5.5.1-2.2), ${shlibs:Pre-Depends}, ${misc:Depends}
+Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
+Recommends: bash-completion (>= 20060301-0)
+Conflicts: bash-completion (<< 20060301-0)
+Replaces: bash-doc (<= 2.05-1), bash-completion (<< 20060301-0)
+Suggests: bash-doc
+Essential: yes
+Section: shells
+Priority: required
+Description: GNU Bourne Again SHell
+ Bash is an sh-compatible command language interpreter that executes
+ commands read from the standard input or from a file. Bash also
+ incorporates useful features from the Korn and C shells (ksh and csh).
+ .
+ Bash is ultimately intended to be a conformant implementation of the
+ IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).
+ .
+ The Programmable Completion Code, by Ian Macdonald, is now found in
+ the bash-completion package.
+
+Package: bash-static
+Architecture: any
+Multi-Arch: foreign
+Depends: passwd (>= 1:4.0.3-10), ${misc:Depends}
+Suggests: bash-doc
+Section: shells
+Priority: optional
+Description: GNU Bourne Again SHell (static version)
+ Bash is an sh-compatible command language interpreter that executes
+ commands read from the standard input or from a file. Bash also
+ incorporates useful features from the Korn and C shells (ksh and csh).
+ .
+ Statically linked.
+
+Package: bash-builtins
+Architecture: any
+Depends: bash (= ${binary:Version}), ${misc:Depends}
+Section: utils
+Priority: optional
+Description: Bash loadable builtins - headers & examples
+ Bash can dynamically load new builtin commands. Included are the
+ necessary headers to compile your own builtins and lots of examples.
+
+Package: bash-doc
+Architecture: all
+Depends: ${misc:Depends}, dpkg (>= 1.15.4) | install-info
+Section: doc
+Priority: optional
+Replaces: bash (<< 4.3-2)
+Description: Documentation and examples for the GNU Bourne Again SHell
+ Bash is an sh-compatible command language interpreter that executes
+ commands read from the standard input or from a file. Bash also
+ incorporates useful features from the Korn and C shells (ksh and csh).
+ .
+ This package contains the distributable documentation, all the
+ examples and the main changelog.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..b385e07
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,224 @@
+This is Debian GNU/Linux's prepackaged version of the FSF's GNU Bash,
+the Bourne Again SHell.
+
+This package was put together by Matthias Klose <doko@debian.org>, from
+the following sources:
+
+ bash: ftp.gnu.org:/pub/gnu/bash/bash-4.3.tar.gz
+
+Bash homepage: http://tiswww.case.edu/php/chet/bash/bashtop.html
+
+Copyright (C) 1987-2014 Free Software Foundation, Inc.
+
+Bash is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+Bash is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Bash. If not, see <http://www.gnu.org/licenses/>.
+On Debian systems, the complete text of the GNU General Public License
+can be found in `/usr/share/common-licenses/GPL-3'.
+
+The Free Software Foundation has exempted Bash from the requirement of
+Paragraph 2c of the General Public License. This is to say, there is
+no requirement for Bash to print a notice when it is started
+interactively in the usual way. We made this exception because users
+and standards expect shells not to print such messages. This
+exception applies to any program that serves as a shell and that is
+based primarily on Bash as opposed to other GNU software.
+
+
+Files with other copyright statement than: Copyright FSF, License GPL
+---------------------------------------------------------------------
+
+doc/FAQ ("the Bash FAQ")
+
+ This document is Copyright 1995-2005 by Chester Ramey.
+
+ Permission is hereby granted, without written agreement and
+ without license or royalty fees, to use, copy, and distribute
+ this document for any purpose, provided that the above copyright
+ notice appears in all copies of this document and that the
+ contents of this document remain unaltered.
+
+
+doc/bashref.texi ("Bash Reference Manual"):
+
+ Copyright (c) 1988-2014 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of
+ this manual provided the copyright notice and this permission notice
+ are preserved on all copies.
+
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3 or
+ any later version published by the Free Software Foundation; with no
+ Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled
+ ``GNU Free Documentation License''.
+
+
+lib/readline/doc/rlman.texi (part of the GNU Readline Library manual)
+
+ Copyright (c) 1988-2014 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3 or
+ any later version published by the Free Software Foundation; with no
+ Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled
+ ``GNU Free Documentation License''.
+
+lib/readline/doc/rltech.texi (part of the GNU Readline Library manual)
+
+ Copyright (C) 1988-2014 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of
+ this manual provided the copyright notice and this permission notice
+ pare preserved on all copies.
+
+ Permission is granted to process this file through TeX and print the
+ results, provided the printed document carries copying permission
+ notice identical to this one except for the removal of this paragraph
+ (this paragraph not being relevant to the printed manual).
+
+ Permission is granted to copy and distribute modified versions of this
+ manual under the conditions for verbatim copying, provided that the entire
+ resulting derived work is distributed under the terms of a permission
+ notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this manual
+ into another language, under the above conditions for modified versions,
+ except that this permission notice may be stated in a translation approved
+ by the Foundation.
+
+
+lib/readline/doc/rluser.texi (part of the GNU Readline Library manual)
+
+ Copyright (C) 1988-2014 Free Software Foundation, Inc.
+
+ Authored by Brian Fox and Chet Ramey.
+
+ Permission is granted to process this file through Tex and print the
+ results, provided the printed document carries copying permission notice
+ identical to this one except for the removal of this paragraph (this
+ paragraph not being relevant to the printed manual).
+
+ Permission is granted to make and distribute verbatim copies of this manual
+ provided the copyright notice and this permission notice are preserved on
+ all copies.
+
+ Permission is granted to copy and distribute modified versions of this
+ manual under the conditions for verbatim copying, provided also that the
+ GNU Copyright statement is available to the distributee, and provided that
+ the entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this manual
+ into another language, under the above conditions for modified versions.
+
+
+readline/doc/history.texi (GNU History Library Manual)
+
+ Copyright (C) 1988-2014 Free Software Foundation, Inc.
+ Authored by Brian Fox and Chet Ramey.
+
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3 or
+ any later version published by the Free Software Foundation; with no
+ Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled
+ ``GNU Free Documentation License''.
+
+readline/doc/{hstech,hsuser}.texi (GNU History Library Manual)
+
+ Copyright (C) 1988-2014 Free Software Foundation, Inc.
+ Authored by Brian Fox and Chet Ramey.
+
+ Permission is granted to make and distribute verbatim copies of this manual
+ provided the copyright notice and this permission notice are preserved on
+ all copies.
+
+ Permission is granted to process this file through Tex and print the
+ results, provided the printed document carries copying permission notice
+ identical to this one except for the removal of this paragraph (this
+ paragraph not being relevant to the printed manual).
+
+ Permission is granted to copy and distribute modified versions of this
+ manual under the conditions for verbatim copying, provided also that the
+ GNU Copyright statement is available to the distributee, and provided that
+ the entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this manual
+ into another language, under the above conditions for modified versions.
+
+
+lib/sh/inet_aton.c:
+
+ * Copyright (c) 1983, 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+
+
+support/man2html.c
+
+ * This program was written by Richard Verhoeven (NL:5482ZX35)
+ * at the Eindhoven University of Technology. Email: rcb5@win.tue.nl
+ *
+ * Permission is granted to distribute, modify and use this program as long
+ * as this comment is not removed or changed.
+ *
+ * THIS IS A MODIFIED VERSION. IT WAS MODIFIED BY chet@po.cwru.edu FOR
+ * USE BY BASH.
diff --git a/debian/etc.bash.bashrc b/debian/etc.bash.bashrc
new file mode 100644
index 0000000..54687b1
--- /dev/null
+++ b/debian/etc.bash.bashrc
@@ -0,0 +1,55 @@
+# System-wide .bashrc file for interactive bash(1) shells.
+
+# To enable the settings / commands in this file for login shells as well,
+# this file has to be sourced in /etc/profile.
+
+# If not running interactively, don't do anything
+[ -z "$PS1" ] && return
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS.
+shopt -s checkwinsize
+
+# set variable identifying the chroot you work in (used in the prompt below)
+if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
+ debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+# set a fancy prompt (non-color, overwrite the one in /etc/profile)
+PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
+
+# Commented out, don't overwrite xterm -T "title" -n "icontitle" by default.
+# If this is an xterm set the title to user@host:dir
+#case "$TERM" in
+#xterm*|rxvt*)
+# PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
+# ;;
+#*)
+# ;;
+#esac
+
+# enable bash completion in interactive shells
+#if ! shopt -oq posix; then
+# if [ -f /usr/share/bash-completion/bash_completion ]; then
+# . /usr/share/bash-completion/bash_completion
+# elif [ -f /etc/bash_completion ]; then
+# . /etc/bash_completion
+# fi
+#fi
+
+# if the command-not-found package is installed, use it
+if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then
+ function command_not_found_handle {
+ # check because c-n-f could've been removed in the meantime
+ if [ -x /usr/lib/command-not-found ]; then
+ /usr/lib/command-not-found -- "$1"
+ return $?
+ elif [ -x /usr/share/command-not-found/command-not-found ]; then
+ /usr/share/command-not-found/command-not-found -- "$1"
+ return $?
+ else
+ printf "%s: command not found\n" "$1" >&2
+ return 127
+ fi
+ }
+fi
diff --git a/debian/etc.inputrc b/debian/etc.inputrc
new file mode 100644
index 0000000..2c993cb
--- /dev/null
+++ b/debian/etc.inputrc
@@ -0,0 +1,17 @@
+# /etc/inputrc - global inputrc for libreadline
+# See readline(3readline) and `info readline' for more information.
+
+# Be 8 bit clean.
+set input-meta on
+set output-meta on
+
+# To allow the use of german 8bit-characters like the german umlauts, comment
+# out the two lines below. However this makes the meta key not work as a meta
+# key, which is annoying to those which don't need to type in 8-bit characters.
+
+#set meta-flag on
+#set convert-meta off
+
+# use a visible bell if one is available
+#set bell-style none
+#set bell-style visible
diff --git a/debian/etc.profile b/debian/etc.profile
new file mode 100644
index 0000000..b67da47
--- /dev/null
+++ b/debian/etc.profile
@@ -0,0 +1,27 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games"
+
+if [ -f /etc/debian_chroot ]; then
+ debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+if [ "$PS1" ]; then
+ if [ "$BASH" ]; then
+ PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
+ if [ -f /etc/bash.bashrc ]; then
+ . /etc/bash.bashrc
+ fi
+ else
+ if [ "`id -u`" -eq 0 ]; then
+ PS1='# '
+ else
+ PS1='$ '
+ fi
+ fi
+fi
+
+export PATH
+
+umask 022
diff --git a/debian/inputrc.arrows b/debian/inputrc.arrows
new file mode 100644
index 0000000..21aed08
--- /dev/null
+++ b/debian/inputrc.arrows
@@ -0,0 +1,30 @@
+# This file controls the behaviour of line input editing for
+# programs that use the Gnu Readline library.
+#
+# Arrow keys in keypad mode
+#
+"\C-[OD" backward-char
+"\C-[OC" forward-char
+"\C-[OA" previous-history
+"\C-[OB" next-history
+#
+# Arrow keys in ANSI mode
+#
+"\C-[[D" backward-char
+"\C-[[C" forward-char
+"\C-[[A" previous-history
+"\C-[[B" next-history
+#
+# Arrow keys in 8 bit keypad mode
+#
+"\C-M-OD" backward-char
+"\C-M-OC" forward-char
+"\C-M-OA" previous-history
+"\C-M-OB" next-history
+#
+# Arrow keys in 8 bit ANSI mode
+#
+"\C-M-[D" backward-char
+"\C-M-[C" forward-char
+"\C-M-[A" previous-history
+"\C-M-[B" next-history
diff --git a/debian/locale-gen b/debian/locale-gen
new file mode 100644
index 0000000..091a50e
--- /dev/null
+++ b/debian/locale-gen
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+LOCPATH=`pwd`/locales
+export LOCPATH
+
+[ -d $LOCPATH ] || mkdir -p $LOCPATH
+
+umask 022
+
+echo "Generating locales..."
+while read locale charset; do
+ case $locale in \#*) continue;; esac
+ [ -n "$locale" -a -n "$charset" ] || continue
+ echo -n " `echo $locale | sed 's/\([^.\@]*\).*/\1/'`"
+ echo -n ".$charset"
+ echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`
+ echo -n '...'
+ if [ -f $LOCPATH/$locale ]; then
+ input=$locale
+ else
+ input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`
+ fi
+ localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias
+ echo ' done'; \
+done <<EOF
+# This file lists locales that the bash testsuite depends on
+en_US.UTF-8 UTF-8
+EOF
+
+echo "Generation complete."
diff --git a/debian/patches/bash-aliases-repeat.diff b/debian/patches/bash-aliases-repeat.diff
new file mode 100644
index 0000000..e805473
--- /dev/null
+++ b/debian/patches/bash-aliases-repeat.diff
@@ -0,0 +1,28 @@
+# DP: Fix bug in Bash_aliases example.
+
+--- a/examples/startup-files/Bash_aliases
++++ b/examples/startup-files/Bash_aliases
+@@ -41,20 +41,20 @@
+ {
+ local count="$1" i;
+ shift;
+- for i in $(seq 1 "$count");
++ for i in $(_seq 1 "$count");
+ do
+ eval "$@";
+ done
+ }
+
+ # Subfunction needed by `repeat'.
+-seq ()
++_seq ()
+ {
+ local lower upper output;
+ lower=$1 upper=$2;
+
+ if [ $lower -ge $upper ]; then return; fi
+- while [ $lower -le $upper ];
++ while [ $lower -lt $upper ];
+ do
+ echo -n "$lower "
+ lower=$(($lower + 1))
diff --git a/debian/patches/bash-default-editor.diff b/debian/patches/bash-default-editor.diff
new file mode 100644
index 0000000..020fd80
--- /dev/null
+++ b/debian/patches/bash-default-editor.diff
@@ -0,0 +1,35 @@
+# DP: Use `command -v editor`, as an editor, if available.
+
+Index: b/bashline.c
+===================================================================
+--- a/bashline.c
++++ b/bashline.c
+@@ -926,8 +926,8 @@
+ command being entered (if no explicit argument is given), otherwise on
+ a command from the history file. */
+
+-#define VI_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-vi}}\""
+-#define EMACS_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-emacs}}\""
++#define VI_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-$(command -v editor || echo vi)}}\""
++#define EMACS_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-$(command -v editor || echo emacs)}}\""
+ #define POSIX_VI_EDIT_COMMAND "fc -e vi"
+
+ static int
+Index: b/builtins/fc.def
+===================================================================
+--- a/builtins/fc.def
++++ b/builtins/fc.def
+@@ -159,11 +159,11 @@
+ #endif
+
+ /* String to execute on a file that we want to edit. */
+-#define FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-vi}}"
++#define FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-$(command -v editor || echo vi)}}"
+ #if defined (STRICT_POSIX)
+ # define POSIX_FC_EDIT_COMMAND "${FCEDIT:-ed}"
+ #else
+-# define POSIX_FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-ed}}"
++# define POSIX_FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-$(command -v editor || echo ed)}}"
+ #endif
+
+ int
diff --git a/debian/patches/bash-minimal.dpatch b/debian/patches/bash-minimal.dpatch
new file mode 100644
index 0000000..c6b0039
--- /dev/null
+++ b/debian/patches/bash-minimal.dpatch
@@ -0,0 +1,62 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: Build fixes for minimal bash
+
+--- bash/parse.y~ 2009-11-02 23:34:15.000000000 +0100
++++ bash/parse.y 2009-12-30 17:08:12.341085169 +0100
+@@ -2772,12 +2772,14 @@
+ dstack.delimiter_depth = 0; /* No delimiters found so far. */
+ open_brace_count = 0;
+
++#if defined (EXTENDED_GLOB)
+ /* Reset to global value of extended glob */
+ if (parser_state & PST_EXTPAT)
+ {
+ /*itrace("reset_parser: parser_state includes PST_EXTPAT");*/
+ extended_glob = global_extglob;
+ }
++#endif
+
+ parser_state = 0;
+
+--- bash/execute_cmd.c~ 2009-11-29 03:29:34.000000000 +0100
++++ bash/execute_cmd.c 2009-12-30 17:13:36.041085541 +0100
+@@ -4196,7 +4196,9 @@
+ if (variable_context == 0 || this_shell_function == 0)
+ {
+ make_funcname_visible (0);
++#if defined (PROCESS_SUBSTITUTION)
+ unlink_fifo_list ();
++#endif
+ }
+
+ return (result);
+--- bash/lib/glob/glob.c~ 2009-11-15 00:39:30.000000000 +0100
++++ bash/lib/glob/glob.c 2009-12-30 17:34:56.802336552 +0100
+@@ -640,7 +640,11 @@
+ continue;
+ }
+
++#ifdef MACOS
+ convfn = fnx_fromfs (dp->d_name, D_NAMLEN (dp));
++#else
++ convfn = dp->d_name;
++#endif
+ if (strmatch (pat, convfn, mflags) != FNM_NOMATCH)
+ {
+ if (nalloca < ALLOCA_MAX)
diff --git a/debian/patches/bash-subst-param-length.diff b/debian/patches/bash-subst-param-length.diff
new file mode 100644
index 0000000..1ba51b6
--- /dev/null
+++ b/debian/patches/bash-subst-param-length.diff
@@ -0,0 +1,13 @@
+Index: b/subst.c
+===================================================================
+--- a/subst.c
++++ b/subst.c
+@@ -7160,7 +7160,7 @@
+ (sindex == t_index - 1 && string[sindex] == '!' && VALID_INDIR_PARAM (string[t_index])))
+ {
+ t_index++;
+- temp1 = string_extract (string, &t_index, "#%:-=?+/}", 0);
++ temp1 = string_extract (string, &t_index, "#%:-=?+/}", SX_VARNAME);
+ name = (char *)xrealloc (name, 3 + (strlen (temp1)));
+ *name = string[sindex];
+ if (string[sindex] == '!')
diff --git a/debian/patches/bash43-001.diff b/debian/patches/bash43-001.diff
new file mode 100644
index 0000000..d4de04a
--- /dev/null
+++ b/debian/patches/bash43-001.diff
@@ -0,0 +1,52 @@
+# DP: bash43-001 upstream patch
+
+Bash-Release: 4.3
+Patch-ID: bash43-001
+
+Bug-Reported-by: NBaH <nbah@sfr.fr>
+Bug-Reference-ID: <ler0b5$iu9$1@speranza.aioe.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.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'):
+
+Index: b/test.c
+===================================================================
+--- a/test.c
++++ b/test.c
+@@ -646,8 +646,8 @@
+ return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE);
+
+ case 'R':
+- v = find_variable (arg);
+- return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE);
++ v = find_variable_noref (arg);
++ return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE);
+ }
+
+ /* We can't actually get here, but this shuts up gcc. */
+@@ -723,6 +723,7 @@
+ case 'o': case 'p': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'z':
+ case 'G': case 'L': case 'O': case 'S': case 'N':
++ case 'R':
+ return (1);
+ }
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 0
++#define PATCHLEVEL 1
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-002.diff b/debian/patches/bash43-002.diff
new file mode 100644
index 0000000..093dd6d
--- /dev/null
+++ b/debian/patches/bash43-002.diff
@@ -0,0 +1,52 @@
+# DP: bash43-002 upstream patch
+
+Bash-Release: 4.3
+Patch-ID: bash43-002
+
+Bug-Reported-by: Moe Tunes <moetunes42@gmail.com>
+Bug-Reference-ID: <53103F49.3070100@gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html
+
+Bug-Description:
+
+A change to save state while running the DEBUG trap caused pipelines to hang
+on systems which need process group synchronization while building pipelines.
+
+Patch (apply with `patch -p0'):
+
+Index: b/trap.c
+===================================================================
+--- a/trap.c
++++ b/trap.c
+@@ -920,7 +920,8 @@
+ subst_assign_varlist = 0;
+
+ #if defined (JOB_CONTROL)
+- save_pipeline (1); /* XXX only provides one save level */
++ if (sig != DEBUG_TRAP) /* run_debug_trap does this */
++ save_pipeline (1); /* XXX only provides one save level */
+ #endif
+
+ /* If we're in a function, make sure return longjmps come here, too. */
+@@ -940,7 +941,8 @@
+ trap_exit_value = last_command_exit_value;
+
+ #if defined (JOB_CONTROL)
+- restore_pipeline (1);
++ if (sig != DEBUG_TRAP) /* run_debug_trap does this */
++ restore_pipeline (1);
+ #endif
+
+ subst_assign_varlist = save_subst_varlist;
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 1
++#define PATCHLEVEL 2
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-003.diff b/debian/patches/bash43-003.diff
new file mode 100644
index 0000000..8b9de8d
--- /dev/null
+++ b/debian/patches/bash43-003.diff
@@ -0,0 +1,42 @@
+# DP: bash43-003 upstream patch
+
+Bash-Release: 4.3
+Patch-ID: bash43-003
+
+Bug-Reported-by: Anatol Pomozov <anatol.pomozov@gmail.com>
+Bug-Reference-ID: <CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com>
+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'):
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 2
++#define PATCHLEVEL 3
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/lib/readline/readline.c
+===================================================================
+--- a/lib/readline/readline.c
++++ b/lib/readline/readline.c
+@@ -744,7 +744,8 @@
+ r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ));
+
+ RL_CHECK_SIGNALS ();
+- if (r == 0) /* success! */
++ /* We only treat values < 0 specially to simulate recursion. */
++ if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */
+ {
+ _rl_keyseq_chain_dispose ();
+ RL_UNSETSTATE (RL_STATE_MULTIKEY);
diff --git a/debian/patches/bash43-004.diff b/debian/patches/bash43-004.diff
new file mode 100644
index 0000000..f971e7a
--- /dev/null
+++ b/debian/patches/bash43-004.diff
@@ -0,0 +1,41 @@
+# DP: bash43-004 upstream patch
+
+Bash-Release: 4.3
+Patch-ID: bash43-004
+
+Bug-Reported-by: Daan van Rossum <daan@flash.uchicago.edu>
+Bug-Reference-ID: <20140307072523.GA14250@flash.uchicago.edu>
+Bug-Reference-URL:
+
+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'):
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 3
++#define PATCHLEVEL 4
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/lib/readline/readline.c
+===================================================================
+--- a/lib/readline/readline.c
++++ b/lib/readline/readline.c
+@@ -965,7 +965,7 @@
+ #if defined (VI_MODE)
+ if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
+ key != ANYOTHERKEY &&
+- rl_key_sequence_length == 1 && /* XXX */
++ _rl_dispatching_keymap == vi_movement_keymap &&
+ _rl_vi_textmod_command (key))
+ _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
+ #endif
diff --git a/debian/patches/bash43-005.diff b/debian/patches/bash43-005.diff
new file mode 100644
index 0000000..c44060a
--- /dev/null
+++ b/debian/patches/bash43-005.diff
@@ -0,0 +1,55 @@
+# DP: bash43-005 upstream patch
+
+Bash-Release: 4.3
+Patch-ID: bash43-005
+
+Bug-Reported-by: David Sines <dave.gma@googlemail.com>
+Bug-Reference-ID: <CAO3BAa_CK_Rgkhdfzs+NJ4KFYdB9qW3pvXQK0xLCi6GMmDU8bw@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.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'):
+
+Index: b/parse.y
+===================================================================
+--- a/parse.y
++++ b/parse.y
+@@ -3398,7 +3398,7 @@
+ within a double-quoted ${...} construct "an even number of
+ 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 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
++ if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+ continue;
+
+ /* Could also check open == '`' if we want to parse grouping constructs
+Index: b/y.tab.c
+===================================================================
+--- a/y.tab.c
++++ b/y.tab.c
+@@ -5710,7 +5710,7 @@
+ within a double-quoted ${...} construct "an even number of
+ 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 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
++ if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+ continue;
+
+ /* Could also check open == '`' if we want to parse grouping constructs
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 4
++#define PATCHLEVEL 5
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-006.diff b/debian/patches/bash43-006.diff
new file mode 100644
index 0000000..f52ccdc
--- /dev/null
+++ b/debian/patches/bash43-006.diff
@@ -0,0 +1,42 @@
+# DP: bash43-006 upstream patch
+
+Bash-Release: 4.3
+Patch-ID: bash43-006
+
+Bug-Reported-by: Eduardo A . Bustamante Lopez <dualbus@gmail.com>
+Bug-Reference-ID: <20140228170013.GA16015@dualbus.me>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.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'):
+
+Index: b/jobs.c
+===================================================================
+--- a/jobs.c
++++ b/jobs.c
+@@ -4374,7 +4374,7 @@
+ void
+ end_job_control ()
+ {
+- if (interactive_shell) /* XXX - should it be interactive? */
++ if (interactive_shell || job_control) /* XXX - should it be just job_control? */
+ {
+ terminate_stopped_jobs ();
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 5
++#define PATCHLEVEL 6
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-007.diff b/debian/patches/bash43-007.diff
new file mode 100644
index 0000000..70b420b
--- /dev/null
+++ b/debian/patches/bash43-007.diff
@@ -0,0 +1,48 @@
+# DP: bash43-007 upstream patch
+
+Bash-Release: 4.3
+Patch-ID: bash43-007
+
+Bug-Reported-by: geir.hauge@gmail.com
+Bug-Reference-ID: <20140318093650.B181C1C5B0B@gina.itea.ntnu.no>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html
+
+Bug-Description:
+
+Using compound assignments for associative arrays like
+
+assoc=( [x]= [y]=bar )
+
+left the value corresponding to the key `x' NULL. This caused subsequent
+lookups to interpret it as unset.
+
+Patch (apply with `patch -p0'):
+
+Index: b/arrayfunc.c
+===================================================================
+--- a/arrayfunc.c
++++ b/arrayfunc.c
+@@ -597,6 +597,11 @@
+ if (assoc_p (var))
+ {
+ val = expand_assignment_string_to_string (val, 0);
++ if (val == 0)
++ {
++ val = (char *)xmalloc (1);
++ val[0] = '\0'; /* like do_assignment_internal */
++ }
+ free_val = 1;
+ }
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 6
++#define PATCHLEVEL 7
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-008.diff b/debian/patches/bash43-008.diff
new file mode 100644
index 0000000..d902c27
--- /dev/null
+++ b/debian/patches/bash43-008.diff
@@ -0,0 +1,153 @@
+# DP: bash43-008 upstream patch
+
+Bash-Release: 4.3
+Patch-ID: bash43-008
+
+Bug-Reported-by: Stephane Chazelas <stephane.chazelas@gmail.com>
+Bug-Reference-ID: <20140318135901.GB22158@chaz.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.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'):
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 7
++#define PATCHLEVEL 8
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/lib/glob/glob.c
+===================================================================
+--- a/lib/glob/glob.c
++++ b/lib/glob/glob.c
+@@ -179,42 +179,50 @@
+ char *pat, *dname;
+ int flags;
+ {
+- char *pp, *pe, *t;
+- int n, r;
++ char *pp, *pe, *t, *se;
++ int n, r, negate;
+
++ negate = *pat == '!';
+ pp = pat + 2;
+- pe = pp + strlen (pp) - 1; /*(*/
+- if (*pe != ')')
+- return 0;
+- if ((t = strchr (pp, '|')) == 0) /* easy case first */
++ se = pp + strlen (pp) - 1; /* end of string */
++ pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */
++ /* we should check for invalid extglob pattern here */
++ /* if pe != se we have more of the pattern at the end of the extglob
++ pattern. Check the easy case first ( */
++ if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
+ {
+ *pe = '\0';
++#if defined (HANDLE_MULTIBYTE)
++ r = mbskipname (pp, dname, flags);
++#else
+ r = skipname (pp, dname, flags); /*(*/
++#endif
+ *pe = ')';
+ return r;
+ }
++
++ /* check every subpattern */
+ while (t = glob_patscan (pp, pe, '|'))
+ {
+ n = t[-1];
+ t[-1] = '\0';
++#if defined (HANDLE_MULTIBYTE)
++ r = mbskipname (pp, dname, flags);
++#else
+ r = skipname (pp, dname, flags);
++#endif
+ t[-1] = n;
+ if (r == 0) /* if any pattern says not skip, we don't skip */
+ return r;
+ pp = t;
+ } /*(*/
+
+- if (pp == pe) /* glob_patscan might find end of pattern */
++ /* glob_patscan might find end of pattern */
++ if (pp == se)
+ return r;
+
+- *pe = '\0';
+-# if defined (HANDLE_MULTIBYTE)
+- r = mbskipname (pp, dname, flags); /*(*/
+-# else
+- r = skipname (pp, dname, flags); /*(*/
+-# endif
+- *pe = ')';
+- return r;
++ /* but if it doesn't then we didn't match a leading dot */
++ return 0;
+ }
+ #endif
+
+@@ -277,20 +285,23 @@
+ int flags;
+ {
+ #if EXTENDED_GLOB
+- wchar_t *pp, *pe, *t, n;
+- int r;
++ wchar_t *pp, *pe, *t, n, *se;
++ int r, negate;
+
++ negate = *pat == L'!';
+ pp = pat + 2;
+- pe = pp + wcslen (pp) - 1; /*(*/
+- if (*pe != L')')
+- return 0;
+- if ((t = wcschr (pp, L'|')) == 0)
++ se = pp + wcslen (pp) - 1; /*(*/
++ pe = glob_patscan_wc (pp, se, 0);
++
++ if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0)
+ {
+ *pe = L'\0';
+ r = wchkname (pp, dname); /*(*/
+ *pe = L')';
+ return r;
+ }
++
++ /* check every subpattern */
+ while (t = glob_patscan_wc (pp, pe, '|'))
+ {
+ n = t[-1];
+@@ -305,10 +316,8 @@
+ if (pp == pe) /* glob_patscan_wc might find end of pattern */
+ return r;
+
+- *pe = L'\0';
+- r = wchkname (pp, dname); /*(*/
+- *pe = L')';
+- return r;
++ /* but if it doesn't then we didn't match a leading dot */
++ return 0;
+ #else
+ return (wchkname (pat, dname));
+ #endif
+Index: b/lib/glob/gmisc.c
+===================================================================
+--- a/lib/glob/gmisc.c
++++ b/lib/glob/gmisc.c
+@@ -210,6 +210,7 @@
+ case '+':
+ case '!':
+ case '@':
++ case '?':
+ return (pat[1] == LPAREN);
+ default:
+ return 0;
diff --git a/debian/patches/bash43-009.diff b/debian/patches/bash43-009.diff
new file mode 100644
index 0000000..00477c0
--- /dev/null
+++ b/debian/patches/bash43-009.diff
@@ -0,0 +1,55 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-009
+
+Bug-Reported-by: Matthias Klose <doko@debian.org>
+Bug-Reference-ID: <53346FC8.6090005@debian.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html
+
+Bug-Description:
+
+There is a problem with unsigned sign extension when attempting to reallocate
+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.
+
+Index: b/parse.y
+===================================================================
+--- a/parse.y
++++ b/parse.y
+@@ -2424,7 +2424,7 @@
+ not already end in an EOF character. */
+ if (shell_input_line_terminator != EOF)
+ {
+- if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
++ if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
+ shell_input_line = (char *)xrealloc (shell_input_line,
+ 1 + (shell_input_line_size += 2));
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 8
++#define PATCHLEVEL 9
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/y.tab.c
+===================================================================
+--- a/y.tab.c
++++ b/y.tab.c
+@@ -4736,7 +4736,7 @@
+ not already end in an EOF character. */
+ if (shell_input_line_terminator != EOF)
+ {
+- if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
++ if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
+ shell_input_line = (char *)xrealloc (shell_input_line,
+ 1 + (shell_input_line_size += 2));
+
diff --git a/debian/patches/bash43-010.diff b/debian/patches/bash43-010.diff
new file mode 100644
index 0000000..67a5bbf
--- /dev/null
+++ b/debian/patches/bash43-010.diff
@@ -0,0 +1,153 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-010
+
+Bug-Reported-by: Albert Shih <Albert.Shih@obspm.fr>
+Bug-Reference-ID: Wed, 5 Mar 2014 23:01:40 +0100
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.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 function
+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 original
+word to be completed, bash-4.3
+
+Index: b/externs.h
+===================================================================
+--- a/externs.h
++++ b/externs.h
+@@ -324,6 +324,7 @@
+ extern char *sh_backslash_quote __P((char *, const char *, int));
+ 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 *));
+
+ /* declarations for functions defined in lib/sh/spell.c */
+ extern int spname __P((char *, char *));
+Index: b/lib/sh/shquote.c
+===================================================================
+--- a/lib/sh/shquote.c
++++ b/lib/sh/shquote.c
+@@ -311,3 +311,17 @@
+
+ return (0);
+ }
++
++int
++sh_contains_quotes (string)
++ char *string;
++{
++ char *s;
++
++ for (s = string; s && *s; s++)
++ {
++ if (*s == '\'' || *s == '"' || *s == '\\')
++ return 1;
++ }
++ return 0;
++}
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 9
++#define PATCHLEVEL 10
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/pcomplete.c
+===================================================================
+--- a/pcomplete.c
++++ b/pcomplete.c
+@@ -183,6 +183,7 @@
+
+ COMPSPEC *pcomp_curcs;
+ const char *pcomp_curcmd;
++const char *pcomp_curtxt;
+
+ #ifdef DEBUG
+ /* Debugging code */
+@@ -753,6 +754,32 @@
+ quoted strings. */
+ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_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 == 0 &&
++ text && (*text == '\'' || *text == '"') && text[1] == text[0] && text[2] == 0 &&
++ rl_filename_dequoting_function)
++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
++ /* Another mismatched assumption by bash-completion. If compgen is being
++ run as part of bash-completion, and the argument to compgen is not
++ the same as the word originally passed to the programmable completion
++ 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_function &&
++ pcomp_curtxt && text &&
++ STREQ (pcomp_curtxt, text) == 0 &&
++ variable_context &&
++ sh_contains_quotes (text)) /* guess */
++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
+ else
+ dfn = savestring (text);
+ }
+@@ -1522,7 +1549,7 @@
+ COMPSPEC **lastcs;
+ {
+ COMPSPEC *cs, *oldcs;
+- const char *oldcmd;
++ const char *oldcmd, *oldtxt;
+ STRINGLIST *ret;
+
+ cs = progcomp_search (ocmd);
+@@ -1545,14 +1572,17 @@
+
+ oldcs = pcomp_curcs;
+ oldcmd = pcomp_curcmd;
++ oldtxt = pcomp_curtxt;
+
+ pcomp_curcs = cs;
+ pcomp_curcmd = cmd;
++ pcomp_curtxt = word;
+
+ ret = gen_compspec_completions (cs, cmd, word, start, end, foundp);
+
+ pcomp_curcs = oldcs;
+ pcomp_curcmd = oldcmd;
++ pcomp_curtxt = oldtxt;
+
+ /* We need to conditionally handle setting *retryp here */
+ if (retryp)
diff --git a/debian/patches/bash43-011.diff b/debian/patches/bash43-011.diff
new file mode 100644
index 0000000..cc61449
--- /dev/null
+++ b/debian/patches/bash43-011.diff
@@ -0,0 +1,42 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-011
+
+Bug-Reported-by: Egmont Koblinger <egmont@gmail.com>
+Bug-Reference-ID: <CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.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.
+
+Index: b/lib/readline/display.c
+===================================================================
+--- a/lib/readline/display.c
++++ b/lib/readline/display.c
+@@ -2677,7 +2677,8 @@
+ {
+ if (_rl_echoing_p)
+ {
+- _rl_move_vert (_rl_vis_botlin);
++ if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */
++ _rl_move_vert (_rl_vis_botlin);
+ _rl_vis_botlin = 0;
+ fflush (rl_outstream);
+ rl_restart_output (1, 0);
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 10
++#define PATCHLEVEL 11
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-012.diff b/debian/patches/bash43-012.diff
new file mode 100644
index 0000000..caaaf45
--- /dev/null
+++ b/debian/patches/bash43-012.diff
@@ -0,0 +1,44 @@
+# DP: bash43-012 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-012
+
+Bug-Reported-by: Eduardo A. Bustamante López<dualbus@gmail.com>
+Bug-Reference-ID: <5346B54C.4070205@case.edu>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.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'):
+
+Index: b/jobs.c
+===================================================================
+--- a/jobs.c
++++ b/jobs.c
+@@ -3597,6 +3597,7 @@ run_sigchld_trap (nchild)
+ unwind_protect_int (jobs_list_frozen);
+ unwind_protect_pointer (the_pipeline);
+ unwind_protect_pointer (subst_assign_varlist);
++ unwind_protect_pointer (this_shell_builtin);
+
+ /* We have to add the commands this way because they will be run
+ in reverse order of adding. We don't want maybe_set_sigchld_trap ()
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 11
++#define PATCHLEVEL 12
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-013.diff b/debian/patches/bash43-013.diff
new file mode 100644
index 0000000..2d31e2e
--- /dev/null
+++ b/debian/patches/bash43-013.diff
@@ -0,0 +1,58 @@
+# DP: bash43-013 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-013
+
+Bug-Reported-by: <Trond.Endrestol@ximalas.info>
+Bug-Reference-ID: <alpine.BSF.2.03.1404192114310.1973@enterprise.ximalas.info>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html
+
+Bug-Description:
+
+Using reverse-i-search when horizontal scrolling is enabled does not redisplay
+the entire line containing the successful search results.
+
+Patch (apply with `patch -p0'):
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 12
++#define PATCHLEVEL 13
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/lib/readline/display.c
+===================================================================
+--- a/lib/readline/display.c
++++ b/lib/readline/display.c
+@@ -1637,7 +1637,7 @@ update_line (old, new, current_line, oma
+ /* If we are changing the number of invisible characters in a line, and
+ the spot of first difference is before the end of the invisible chars,
+ lendiff needs to be adjusted. */
+- if (current_line == 0 && !_rl_horizontal_scroll_mode &&
++ if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */
+ current_invis_chars != visible_wrap_offset)
+ {
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+@@ -1825,8 +1825,13 @@ update_line (old, new, current_line, oma
+ else
+ _rl_last_c_pos += bytes_to_insert;
+
++ /* 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)))
+- goto clear_rest_of_line;
++ {
++ _rl_move_cursor_relative (ne-new, new);
++ goto clear_rest_of_line;
++ }
+ }
+ }
+ /* Otherwise, print over the existing material. */
diff --git a/debian/patches/bash43-014.diff b/debian/patches/bash43-014.diff
new file mode 100644
index 0000000..05b3e04
--- /dev/null
+++ b/debian/patches/bash43-014.diff
@@ -0,0 +1,101 @@
+# DP: bash43-014 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-014
+
+Bug-Reported-by: Greg Wooledge <wooledg@eeg.ccf.org>
+Bug-Reference-ID: <20140418202123.GB7660@eeg.ccf.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html
+
+Bug-Description:
+
+Under certain circumstances, $@ is expanded incorrectly in contexts where
+word splitting is not performed.
+
+Patch (apply with `patch -p0'):
+Index: b/subst.c
+===================================================================
+--- a/subst.c
++++ b/subst.c
+@@ -3248,8 +3248,10 @@ cond_expand_word (w, special)
+ if (w->word == 0 || w->word[0] == '\0')
+ return ((char *)NULL);
+
++ expand_no_split_dollar_star = 1;
+ w->flags |= W_NOSPLIT2;
+ l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
++ expand_no_split_dollar_star = 0;
+ if (l)
+ {
+ if (special == 0) /* LHS */
+@@ -7847,6 +7849,10 @@ param_expand (string, sindex, quoted, ex
+ We also want to make sure that splitting is done no matter what --
+ 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 = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted);
+
+ tflag |= W_DOLLARAT;
+@@ -8816,6 +8822,7 @@ finished_with_string:
+ else
+ {
+ char *ifs_chars;
++ char *tstring;
+
+ ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
+
+@@ -8830,11 +8837,36 @@ finished_with_string:
+ regardless of what else has happened to IFS since the expansion. */
+ if (split_on_spaces)
+ list = list_string (istring, " ", 1); /* XXX quoted == 1? */
++ /* If we have $@ (has_dollar_at != 0) and we are in a context where 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 == 0) but we encounter a
++ double-quoted $@ while expanding it. */
++ else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2))
++ {
++ /* Only split and rejoin if we have to */
++ if (*ifs_chars && *ifs_chars != ' ')
++ {
++ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
++ tstring = string_list (list);
++ }
++ else
++ tstring = istring;
++ tword = make_bare_word (tstring);
++ if (tstring != istring)
++ free (tstring);
++ goto set_word_flags;
++ }
+ else if (has_dollar_at && ifs_chars)
+ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
+ else
+ {
+ tword = make_bare_word (istring);
++set_word_flags:
+ if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
+ tword->flags |= W_QUOTED;
+ if (word->flags & W_ASSIGNMENT)
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 13
++#define PATCHLEVEL 14
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-015.diff b/debian/patches/bash43-015.diff
new file mode 100644
index 0000000..3995eb8
--- /dev/null
+++ b/debian/patches/bash43-015.diff
@@ -0,0 +1,54 @@
+# DP: bash43-015 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-015
+
+Bug-Reported-by: Clark Wang <dearvoid@gmail.com>
+Bug-Reference-ID: <CADv8-og2TOSoabXeNVXVGaXN3tEMHnYVq1rwOLe5meaRPSGRig@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.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'):
+Index: b/bashline.c
+===================================================================
+--- a/bashline.c
++++ b/bashline.c
+@@ -4167,9 +4167,16 @@ bash_directory_completion_matches (text)
+ int qc;
+
+ qc = rl_dispatching ? rl_completion_quote_character : 0;
+- dfn = bash_dequote_filename ((char *)text, qc);
++ /* If rl_completion_found_quote != 0, rl_completion_matches will call the
++ filename dequoting function, causing the directory name to be dequoted
++ twice. */
++ if (rl_dispatching && rl_completion_found_quote == 0)
++ dfn = bash_dequote_filename ((char *)text, qc);
++ else
++ dfn = (char *)text;
+ m1 = rl_completion_matches (dfn, rl_filename_completion_function);
+- free (dfn);
++ if (dfn != text)
++ free (dfn);
+
+ if (m1 == 0 || m1[0] == 0)
+ return m1;
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 14
++#define PATCHLEVEL 15
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-016.diff b/debian/patches/bash43-016.diff
new file mode 100644
index 0000000..bcb7610
--- /dev/null
+++ b/debian/patches/bash43-016.diff
@@ -0,0 +1,129 @@
+# DP: bash43-016 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-016
+
+Bug-Reported-by: Pierre Gaston <pierre.gaston@gmail.com>
+Bug-Reference-ID: <CAPSX3sTCD61k1VQLJ5r-LWzEt+e7Xc-fxXmwn2u8EA5gJJej8Q@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.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'):
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 15
++#define PATCHLEVEL 16
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/lib/glob/glob.c
+===================================================================
+--- a/lib/glob/glob.c
++++ b/lib/glob/glob.c
+@@ -123,6 +123,8 @@ static char **glob_dir_to_array __P((cha
+ extern char *glob_patscan __P((char *, char *, int));
+ extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int));
+
++extern char *glob_dirscan __P((char *, int));
++
+ /* Compile `glob_loop.c' for single-byte characters. */
+ #define CHAR unsigned char
+ #define INT int
+@@ -187,6 +189,9 @@ extglob_skipname (pat, dname, flags)
+ se = pp + strlen (pp) - 1; /* end of string */
+ pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */
+ /* we should check for invalid extglob pattern here */
++ if (pe == 0)
++ return 0;
++
+ /* if pe != se we have more of the pattern at the end of the extglob
+ pattern. Check the easy case first ( */
+ if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
+@@ -1015,7 +1020,7 @@ glob_filename (pathname, flags)
+ {
+ char **result;
+ unsigned int result_size;
+- char *directory_name, *filename, *dname;
++ char *directory_name, *filename, *dname, *fn;
+ unsigned int directory_len;
+ int free_dirname; /* flag */
+ int dflags;
+@@ -1031,6 +1036,18 @@ glob_filename (pathname, flags)
+
+ /* Find the filename. */
+ filename = strrchr (pathname, '/');
++#if defined (EXTENDED_GLOB)
++ if (filename && extended_glob)
++ {
++ fn = glob_dirscan (pathname, '/');
++#if DEBUG_MATCHING
++ if (fn != filename)
++ fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename);
++#endif
++ filename = fn;
++ }
++#endif
++
+ if (filename == NULL)
+ {
+ filename = pathname;
+Index: b/lib/glob/gmisc.c
+===================================================================
+--- a/lib/glob/gmisc.c
++++ b/lib/glob/gmisc.c
+@@ -42,6 +42,8 @@
+ #define WLPAREN L'('
+ #define WRPAREN L')'
+
++extern char *glob_patscan __P((char *, char *, int));
++
+ /* Return 1 of the first character of WSTRING could match the first
+ character of pattern WPAT. Wide character version. */
+ int
+@@ -375,3 +377,34 @@ bad_bracket:
+
+ return matlen;
+ }
++
++/* Skip characters in PAT and return the final occurrence of DIRSEP. This
++ is only called when extended_glob is set, so we have to skip over extglob
++ patterns x(...) */
++char *
++glob_dirscan (pat, dirsep)
++ char *pat;
++ int dirsep;
++{
++ char *p, *d, *pe, *se;
++
++ d = pe = se = 0;
++ for (p = pat; p && *p; p++)
++ {
++ if (extglob_pattern_p (p))
++ {
++ if (se == 0)
++ se = p + strlen (p) - 1;
++ pe = glob_patscan (p + 2, se, 0);
++ if (pe == 0)
++ continue;
++ else if (*pe == 0)
++ break;
++ p = pe - 1; /* will do increment above */
++ continue;
++ }
++ if (*p == dirsep)
++ d = p;
++ }
++ return d;
++}
diff --git a/debian/patches/bash43-017.diff b/debian/patches/bash43-017.diff
new file mode 100644
index 0000000..7b17f9e
--- /dev/null
+++ b/debian/patches/bash43-017.diff
@@ -0,0 +1,47 @@
+# DP: bash43-017 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-017
+
+Bug-Reported-by: Dan Douglas <ormaaj@gmail.com>
+Bug-Reference-ID: <7781746.RhfoTROLxF@smorgbox>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.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'):
+Index: b/variables.c
+===================================================================
+--- a/variables.c
++++ b/variables.c
+@@ -2197,10 +2197,7 @@ make_local_variable (name)
+ /* local foo; local foo; is a no-op. */
+ old_var = find_variable (name);
+ if (old_var && local_p (old_var) && old_var->context == variable_context)
+- {
+- VUNSETATTR (old_var, att_invisible); /* XXX */
+- return (old_var);
+- }
++ return (old_var);
+
+ was_tmpvar = old_var && tempvar_p (old_var);
+ /* If we're making a local variable in a shell function, the temporary env
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 16
++#define PATCHLEVEL 17
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-018.diff b/debian/patches/bash43-018.diff
new file mode 100644
index 0000000..b570f94
--- /dev/null
+++ b/debian/patches/bash43-018.diff
@@ -0,0 +1,44 @@
+# DP: bash43-018 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-018
+
+Bug-Reported-by: Geir Hauge <geir.hauge@gmail.com>
+Bug-Reference-ID: <CAO-BiTLOvfPXDypg61jcBausADrxUKJejakV2WTWP26cW0=rgA@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.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'):
+Index: b/arrayfunc.c
+===================================================================
+--- a/arrayfunc.c
++++ b/arrayfunc.c
+@@ -179,6 +179,7 @@ bind_array_var_internal (entry, ind, key
+ array_insert (array_cell (entry), ind, newval);
+ FREE (newval);
+
++ VUNSETATTR (entry, att_invisible); /* no longer invisible */
+ return (entry);
+ }
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 17
++#define PATCHLEVEL 18
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-019.diff b/debian/patches/bash43-019.diff
new file mode 100644
index 0000000..333a174
--- /dev/null
+++ b/debian/patches/bash43-019.diff
@@ -0,0 +1,83 @@
+# DP: bash43-019 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+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/1317476
+
+Bug-Description:
+
+The -t timeout option to `read' does not work when the -e option is used.
+
+Patch (apply with `patch -p0'):
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 18
++#define PATCHLEVEL 19
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/builtins/read.def
+===================================================================
+--- a/builtins/read.def
++++ b/builtins/read.def
+@@ -442,7 +442,10 @@ read_builtin (list)
+ add_unwind_protect (reset_alarm, (char *)NULL);
+ #if defined (READLINE)
+ if (edit)
+- add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
++ {
++ add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
++ add_unwind_protect (bashline_reset_event_hook, (char *)NULL);
++ }
+ #endif
+ falarm (tmsec, tmusec);
+ }
+@@ -1021,6 +1024,7 @@ edit_line (p, itext)
+
+ old_attempted_completion_function = rl_attempted_completion_function;
+ rl_attempted_completion_function = (rl_completion_func_t *)NULL;
++ bashline_set_event_hook ();
+ if (itext)
+ {
+ old_startup_hook = rl_startup_hook;
+@@ -1032,6 +1036,7 @@ edit_line (p, itext)
+
+ rl_attempted_completion_function = old_attempted_completion_function;
+ old_attempted_completion_function = (rl_completion_func_t *)NULL;
++ bashline_reset_event_hook ();
+
+ if (ret == 0)
+ return ret;
+Index: b/lib/readline/input.c
+===================================================================
+--- a/lib/readline/input.c
++++ b/lib/readline/input.c
+@@ -534,8 +534,16 @@ rl_getc (stream)
+ return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
+ else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM)
+ return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
++ /* keyboard-generated signals of interest */
+ else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT)
+ RL_CHECK_SIGNALS ();
++ /* non-keyboard-generated signals of interest */
++ else if (_rl_caught_signal == SIGALRM
++#if defined (SIGVTALRM)
++ || _rl_caught_signal == SIGVTALRM
++#endif
++ )
++ RL_CHECK_SIGNALS ();
+
+ if (rl_signal_event_hook)
+ (*rl_signal_event_hook) ();
diff --git a/debian/patches/bash43-020.diff b/debian/patches/bash43-020.diff
new file mode 100644
index 0000000..4a298ea
--- /dev/null
+++ b/debian/patches/bash43-020.diff
@@ -0,0 +1,103 @@
+# DP: bash43-020 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-020
+
+Bug-Reported-by: Jared Yanovich <slovichon@gmail.com>
+Bug-Reference-ID: <20140417073654.GB26875@nightderanger.psc.edu>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.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'):
+
+Index: b/shell.h
+===================================================================
+--- a/shell.h
++++ b/shell.h
+@@ -168,7 +168,8 @@ typedef struct _sh_parser_state_t {
+ /* flags state affecting the parser */
+ int expand_aliases;
+ int echo_input_at_read;
+-
++ int need_here_doc;
++
+ } sh_parser_state_t;
+
+ typedef struct _sh_input_line_state_t {
+Index: b/parse.y
+===================================================================
+--- a/parse.y
++++ b/parse.y
+@@ -2642,7 +2642,7 @@ gather_here_documents ()
+ int r;
+
+ r = 0;
+- while (need_here_doc)
++ while (need_here_doc > 0)
+ {
+ parser_state |= PST_HEREDOC;
+ make_here_document (redir_stack[r++], line_number);
+@@ -6075,6 +6075,7 @@ save_parser_state (ps)
+
+ ps->expand_aliases = expand_aliases;
+ ps->echo_input_at_read = echo_input_at_read;
++ ps->need_here_doc = need_here_doc;
+
+ ps->token = token;
+ ps->token_buffer_size = token_buffer_size;
+@@ -6123,6 +6124,7 @@ restore_parser_state (ps)
+
+ expand_aliases = ps->expand_aliases;
+ echo_input_at_read = ps->echo_input_at_read;
++ need_here_doc = ps->need_here_doc;
+
+ FREE (token);
+ token = ps->token;
+Index: b/y.tab.c
+===================================================================
+--- a/y.tab.c
++++ b/y.tab.c
+@@ -4954,7 +4954,7 @@ gather_here_documents ()
+ int r;
+
+ r = 0;
+- while (need_here_doc)
++ while (need_here_doc > 0)
+ {
+ parser_state |= PST_HEREDOC;
+ make_here_document (redir_stack[r++], line_number);
+@@ -8387,6 +8387,7 @@ save_parser_state (ps)
+
+ ps->expand_aliases = expand_aliases;
+ ps->echo_input_at_read = echo_input_at_read;
++ ps->need_here_doc = need_here_doc;
+
+ ps->token = token;
+ ps->token_buffer_size = token_buffer_size;
+@@ -8435,6 +8436,7 @@ restore_parser_state (ps)
+
+ expand_aliases = ps->expand_aliases;
+ echo_input_at_read = ps->echo_input_at_read;
++ need_here_doc = ps->need_here_doc;
+
+ FREE (token);
+ token = ps->token;
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 19
++#define PATCHLEVEL 20
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-021.diff b/debian/patches/bash43-021.diff
new file mode 100644
index 0000000..8677b05
--- /dev/null
+++ b/debian/patches/bash43-021.diff
@@ -0,0 +1,52 @@
+# DP: bash43-021 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-021
+
+Bug-Reported-by: Jared Yanovich <slovichon@gmail.com>
+Bug-Reference-ID: <20140625225019.GJ17044@nightderanger.psc.edu>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.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 free
+and a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 20
++#define PATCHLEVEL 21
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/lib/readline/misc.c
+===================================================================
+--- a/lib/readline/misc.c
++++ b/lib/readline/misc.c
+@@ -461,6 +461,7 @@ _rl_revert_all_lines ()
+ saved_undo_list = 0;
+ /* Set up rl_line_buffer and other variables from history entry */
+ rl_replace_from_history (entry, 0); /* entry->line is now current */
++ entry->data = 0; /* entry->data is now current undo list */
+ /* Undo all changes to this history entry */
+ while (rl_undo_list)
+ rl_do_undo ();
+@@ -468,7 +469,6 @@ _rl_revert_all_lines ()
+ the timestamp. */
+ FREE (entry->line);
+ entry->line = savestring (rl_line_buffer);
+- entry->data = 0;
+ }
+ entry = previous_history ();
+ }
diff --git a/debian/patches/bash43-022.diff b/debian/patches/bash43-022.diff
new file mode 100644
index 0000000..f796c39
--- /dev/null
+++ b/debian/patches/bash43-022.diff
@@ -0,0 +1,53 @@
+# DP: bash43-022 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-022
+
+Bug-Reported-by: scorp.dev.null@gmail.com
+Bug-Reference-ID: <E1WxXw8-0007iE-Bi@pcm14>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html
+
+Bug-Description:
+
+Using nested pipelines within loops with the `lastpipe' option set can result
+in a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+Index: b/execute_cmd.c
+===================================================================
+--- a/execute_cmd.c
++++ b/execute_cmd.c
+@@ -2409,7 +2409,16 @@ execute_pipeline (command, asynchronous,
+ #endif
+ lstdin = wait_for (lastpid);
+ #if defined (JOB_CONTROL)
+- exec_result = job_exit_status (lastpipe_jid);
++ /* 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 pipelines
++ running simultaneously. */
++ if (INVALID_JOB (lastpipe_jid) == 0)
++ exec_result = job_exit_status (lastpipe_jid);
++ else if (pipefail_opt)
++ exec_result = exec_result | lstdin; /* XXX */
++ /* otherwise we use exec_result */
++
+ #endif
+ unfreeze_jobs_list ();
+ }
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 21
++#define PATCHLEVEL 22
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-023.diff b/debian/patches/bash43-023.diff
new file mode 100644
index 0000000..20a9999
--- /dev/null
+++ b/debian/patches/bash43-023.diff
@@ -0,0 +1,86 @@
+# DP: bash43-023 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-023
+
+Bug-Reported-by: Tim Friske <me@timfriske.com>
+Bug-Reference-ID: <CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.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'):
+
+Index: b/subst.h
+===================================================================
+--- a/subst.h
++++ b/subst.h
+@@ -82,7 +82,7 @@ extern char *extract_arithmetic_subst __
+ /* Extract the <( or >( construct in STRING, and return a new string.
+ 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 *));
++extern char *extract_process_subst __P((char *, char *, int *, int));
+ #endif /* PROCESS_SUBSTITUTION */
+
+ /* Extract the name of the variable to bind to from the assignment string. */
+Index: b/subst.c
+===================================================================
+--- a/subst.c
++++ b/subst.c
+@@ -1192,12 +1192,18 @@ extract_arithmetic_subst (string, sindex
+ Start extracting at (SINDEX) as if we had just seen "<(".
+ Make (SINDEX) get the position of the matching ")". */ /*))*/
+ char *
+-extract_process_subst (string, starter, sindex)
++extract_process_subst (string, starter, sindex, xflags)
+ char *string;
+ char *starter;
+ int *sindex;
++ int xflags;
+ {
++#if 0
+ return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
++#else
++ xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
++ return (xparse_dolparen (string, string+*sindex, sindex, xflags));
++#endif
+ }
+ #endif /* PROCESS_SUBSTITUTION */
+
+@@ -1785,7 +1791,7 @@ skip_to_delim (string, start, delims, fl
+ si = i + 2;
+ if (string[si] == '\0')
+ CQ_RETURN(si);
+- temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si);
++ temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0);
+ free (temp); /* no SX_ALLOC here */
+ i = si;
+ if (string[i] == '\0')
+@@ -8249,7 +8255,7 @@ add_string:
+ else
+ t_index = sindex + 1; /* skip past both '<' and LPAREN */
+
+- temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/
++ temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/
+ sindex = t_index;
+
+ /* If the process substitution specification is `<()', we want to
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 22
++#define PATCHLEVEL 23
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-024.diff b/debian/patches/bash43-024.diff
new file mode 100644
index 0000000..7e5ad00
--- /dev/null
+++ b/debian/patches/bash43-024.diff
@@ -0,0 +1,51 @@
+# DP: bash43-024 upstream patch
+
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-024
+
+Bug-Reported-by: Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
+Bug-Reference-ID: <53CE9E5D.6050203@pom-monitoring.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.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='bar[1]' ; echo ${!foo}).
+
+Patch (apply with `patch -p0'):
+
+Index: b/subst.c
+===================================================================
+--- a/subst.c
++++ b/subst.c
+@@ -7374,7 +7374,13 @@ parameter_brace_expand (string, indexp,
+ }
+
+ if (want_indir)
+- tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
++ {
++ tdesc = 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 function
++ to return the index we're supposed to be using. */
++ if (tdesc && tdesc->flags)
++ tdesc->flags &= ~W_ARRAYIND;
++ }
+ else
+ tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 23
++#define PATCHLEVEL 24
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-025.diff b/debian/patches/bash43-025.diff
new file mode 100644
index 0000000..6a6ff7b
--- /dev/null
+++ b/debian/patches/bash43-025.diff
@@ -0,0 +1,119 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-025
+
+Bug-Reported-by: Stephane Chazelas <stephane.chazelas@gmail.com>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+Under certain circumstances, bash will execute user code while processing the
+environment for exported function definitions.
+
+
+Index: bash-4.3/builtins/common.h
+===================================================================
+--- bash-4.3.orig/builtins/common.h 2013-07-08 22:54:47.000000000 +0200
++++ bash-4.3/builtins/common.h 2014-09-24 20:37:05.016459862 +0200
+@@ -33,6 +33,8 @@
+ #define SEVAL_RESETLINE 0x010
+ #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 */
+
+ /* Flags for describe_command, shared between type.def and command.def */
+ #define CDESC_ALL 0x001 /* type -a */
+Index: bash-4.3/builtins/evalstring.c
+===================================================================
+--- bash-4.3.orig/builtins/evalstring.c 2014-02-11 15:42:10.000000000 +0100
++++ bash-4.3/builtins/evalstring.c 2014-09-24 20:37:05.016459862 +0200
+@@ -308,6 +308,14 @@
+ {
+ struct fd_bitmap *bitmap;
+
++ if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
++ {
++ internal_warning ("%s: ignoring function definition attempt", from_file);
++ should_jump_to_top_level = 0;
++ last_result = last_command_exit_value = EX_BADUSAGE;
++ break;
++ }
++
+ bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
+ begin_unwind_frame ("pe_dispose");
+ add_unwind_protect (dispose_fd_bitmap, bitmap);
+@@ -368,6 +376,9 @@
+ dispose_command (command);
+ dispose_fd_bitmap (bitmap);
+ discard_unwind_frame ("pe_dispose");
++
++ if (flags & SEVAL_ONECMD)
++ break;
+ }
+ }
+ else
+Index: bash-4.3/patchlevel.h
+===================================================================
+--- bash-4.3.orig/patchlevel.h 2014-09-24 20:28:46.000000000 +0200
++++ bash-4.3/patchlevel.h 2014-09-24 20:37:05.020459944 +0200
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 24
++#define PATCHLEVEL 25
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.3/subst.c
+===================================================================
+--- bash-4.3.orig/subst.c 2014-09-24 20:28:46.000000000 +0200
++++ bash-4.3/subst.c 2014-09-24 20:37:05.020459944 +0200
+@@ -8047,7 +8047,9 @@
+
+ goto return0;
+ }
+- else if (var = find_variable_last_nameref (temp1))
++ else if (var && (invisible_p (var) || var_isset (var) == 0))
++ temp = (char *)NULL;
++ else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0)
+ {
+ temp = nameref_cell (var);
+ #if defined (ARRAY_VARS)
+Index: bash-4.3/variables.c
+===================================================================
+--- bash-4.3.orig/variables.c 2014-09-24 20:28:46.000000000 +0200
++++ bash-4.3/variables.c 2014-09-24 20:37:05.016459862 +0200
+@@ -358,13 +358,11 @@
+ temp_string[char_index] = ' ';
+ strcpy (temp_string + char_index + 1, string);
+
+- if (posixly_correct == 0 || legal_identifier (name))
+- parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
+-
+- /* Ancient backwards compatibility. Old versions of bash exported
+- functions like name()=() {...} */
+- if (name[char_index - 1] == ')' && name[char_index - 2] == '(')
+- name[char_index - 2] = '\0';
++ /* 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|SEVAL_FUNCDEF|SEVAL_ONECMD);
+
+ if (temp_var = find_function (name))
+ {
+@@ -381,10 +379,6 @@
+ last_command_exit_value = 1;
+ report_error (_("error importing function definition for `%s'"), name);
+ }
+-
+- /* ( */
+- if (name[char_index - 1] == ')' && name[char_index - 2] == '\0')
+- name[char_index - 2] = '('; /* ) */
+ }
+ #if defined (ARRAY_VARS)
+ # if ARRAY_EXPORT
diff --git a/debian/patches/bash43-026.diff b/debian/patches/bash43-026.diff
new file mode 100644
index 0000000..e073e32
--- /dev/null
+++ b/debian/patches/bash43-026.diff
@@ -0,0 +1,58 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-026
+
+Bug-Reported-by: Tavis Ormandy <taviso@cmpxchg8b.com>
+Bug-Reference-ID:
+Bug-Reference-URL: http://twitter.com/taviso/statuses/514887394294652929
+
+Bug-Description:
+
+Under certain circumstances, bash can incorrectly save a lookahead character and
+return it on a subsequent call, even when reading a new line.
+
+Index: b/parse.y
+===================================================================
+--- a/parse.y
++++ b/parse.y
+@@ -2953,6 +2953,8 @@ reset_parser ()
+ FREE (word_desc_to_read);
+ word_desc_to_read = (WORD_DESC *)NULL;
+
++ eol_ungetc_lookahead = 0;
++
+ current_token = '\n'; /* XXX */
+ last_read_token = '\n';
+ token_to_read = '\n';
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 25
++#define PATCHLEVEL 26
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/y.tab.c
+===================================================================
+--- a/y.tab.c
++++ b/y.tab.c
+@@ -5265,6 +5265,8 @@ reset_parser ()
+ FREE (word_desc_to_read);
+ word_desc_to_read = (WORD_DESC *)NULL;
+
++ eol_ungetc_lookahead = 0;
++
+ current_token = '\n'; /* XXX */
+ last_read_token = '\n';
+ token_to_read = '\n';
+@@ -8539,4 +8541,3 @@ set_line_mbstate ()
+ }
+ }
+ #endif /* HANDLE_MULTIBYTE */
+-
diff --git a/debian/patches/bash43-027.diff b/debian/patches/bash43-027.diff
new file mode 100644
index 0000000..a346a23
--- /dev/null
+++ b/debian/patches/bash43-027.diff
@@ -0,0 +1,178 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-027
+
+Bug-Reported-by: Florian Weimer <fweimer@redhat.com>
+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.
+
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 26
++#define PATCHLEVEL 27
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/variables.c
+===================================================================
+--- a/variables.c
++++ b/variables.c
+@@ -83,6 +83,11 @@
+
+ #define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
+
++#define BASHFUNC_PREFIX "BASH_FUNC_"
++#define BASHFUNC_PREFLEN 10 /* == strlen(BASHFUNC_PREFIX */
++#define BASHFUNC_SUFFIX "%%"
++#define BASHFUNC_SUFFLEN 2 /* == strlen(BASHFUNC_SUFFIX) */
++
+ extern char **environ;
+
+ /* Variables used here and defined in other files. */
+@@ -279,7 +284,7 @@ static void push_temp_var __P((PTR_T));
+ static void propagate_temp_var __P((PTR_T));
+ static void dispose_temporary_env __P((sh_free_func_t *));
+
+-static inline char *mk_env_string __P((const char *, const char *));
++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 *));
+ static char **make_func_export_array __P((void));
+@@ -349,22 +354,33 @@ initialize_shell_variables (env, privmod
+
+ /* If exported function, define it now. Don't import functions from
+ the environment in privileged mode. */
+- if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
++ if (privmode == 0 && read_but_dont_execute == 0 &&
++ 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 */
++
++ namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN;
++
++ tname = name + BASHFUNC_PREFLEN; /* start of func name */
++ tname[namelen] = '\0'; /* now tname == func name */
++
+ string_length = strlen (string);
+- temp_string = (char *)xmalloc (3 + string_length + char_index);
++ temp_string = (char *)xmalloc (namelen + string_length + 2);
+
+- strcpy (temp_string, name);
+- temp_string[char_index] = ' ';
+- strcpy (temp_string + char_index + 1, string);
++ memcpy (temp_string, tname, namelen);
++ temp_string[namelen] = ' ';
++ memcpy (temp_string + namelen + 1, string, string_length + 1);
+
+ /* 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|SEVAL_FUNCDEF|SEVAL_ONECMD);
++ if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname)))
++ parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+
+- if (temp_var = find_function (name))
++ if (temp_var = find_function (tname))
+ {
+ VSETATTR (temp_var, (att_exported|att_imported));
+ array_needs_making = 1;
+@@ -377,8 +393,11 @@ initialize_shell_variables (env, privmod
+ array_needs_making = 1;
+ }
+ last_command_exit_value = 1;
+- report_error (_("error importing function definition for `%s'"), name);
++ report_error (_("error importing function definition for `%s'"), tname);
+ }
++
++ /* Restore original suffix */
++ tname[namelen] = BASHFUNC_SUFFIX[0];
+ }
+ #if defined (ARRAY_VARS)
+ # if ARRAY_EXPORT
+@@ -2954,7 +2973,7 @@ assign_in_env (word, flags)
+ var->context = variable_context; /* XXX */
+
+ INVALIDATE_EXPORTSTR (var);
+- var->exportstr = mk_env_string (name, value);
++ var->exportstr = mk_env_string (name, value, 0);
+
+ array_needs_making = 1;
+
+@@ -3852,21 +3871,42 @@ merge_temporary_env ()
+ /* **************************************************************** */
+
+ static inline char *
+-mk_env_string (name, value)
++mk_env_string (name, value, isfunc)
+ const char *name, *value;
++ int isfunc;
+ {
+- int name_len, value_len;
+- char *p;
++ size_t name_len, value_len;
++ char *p, *q;
+
+ name_len = strlen (name);
+ value_len = STRLEN (value);
+- p = (char *)xmalloc (2 + name_len + value_len);
+- strcpy (p, name);
+- p[name_len] = '=';
++
++ /* If we are exporting a shell function, construct the encoded function
++ name. */
++ if (isfunc && value)
++ {
++ p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2);
++ q = p;
++ memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN);
++ q += BASHFUNC_PREFLEN;
++ memcpy (q, name, name_len);
++ q += name_len;
++ memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
++ q += BASHFUNC_SUFFLEN;
++ }
++ else
++ {
++ p = (char *)xmalloc (2 + name_len + value_len);
++ memcpy (p, name, name_len);
++ q = p + name_len;
++ }
++
++ q[0] = '=';
+ if (value && *value)
+- strcpy (p + name_len + 1, value);
++ memcpy (q + 1, value, value_len + 1);
+ else
+- p[name_len + 1] = '\0';
++ q[1] = '\0';
++
+ return (p);
+ }
+
+@@ -3952,7 +3992,7 @@ make_env_array_from_var_list (vars)
+ /* Gee, I'd like to get away with not using savestring() if we're
+ using the cached exportstr... */
+ list[list_index] = USE_EXPORTSTR ? savestring (value)
+- : mk_env_string (var->name, value);
++ : mk_env_string (var->name, value, function_p (var));
+
+ if (USE_EXPORTSTR == 0)
+ SAVE_EXPORTSTR (var, list[list_index]);
diff --git a/debian/patches/bash43-028.diff b/debian/patches/bash43-028.diff
new file mode 100644
index 0000000..976d091
--- /dev/null
+++ b/debian/patches/bash43-028.diff
@@ -0,0 +1,1530 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-028
+
+Bug-Reported-by: Florian Weimer <fweimer@redhat.com>
+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.
+
+Index: b/parse.y
+===================================================================
+--- a/parse.y
++++ b/parse.y
+@@ -168,6 +168,9 @@ static char *read_a_line __P((int));
+
+ static int reserved_word_acceptable __P((int));
+ static int yylex __P((void));
++
++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));
+ static int special_case_tokens __P((char *));
+@@ -265,7 +268,9 @@ int parser_state;
+
+ /* Variables to manage the task of reading here documents, because we need to
+ defer the reading until after a complete command has been collected. */
+-static REDIRECT *redir_stack[10];
++#define HEREDOC_MAX 16
++
++static REDIRECT *redir_stack[HEREDOC_MAX];
+ int need_here_doc;
+
+ /* Where shell input comes from. History expansion is performed on each
+@@ -307,7 +312,7 @@ static int global_extglob;
+ or `for WORD' begins. This is a nested command maximum, since the array
+ 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_lineno[MAX_CASE_NEST+1];
+ static int word_top = -1;
+
+ /* If non-zero, it is the token that we want read_token to return
+@@ -520,42 +525,42 @@ redirection: '>' WORD
+ source.dest = 0;
+ redir.filename = $2;
+ $$ = make_redirection (source, r_reading_until, redir, 0);
+- redir_stack[need_here_doc++] = $$;
++ push_heredoc ($$);
+ }
+ | NUMBER LESS_LESS WORD
+ {
+ source.dest = $1;
+ redir.filename = $3;
+ $$ = make_redirection (source, r_reading_until, redir, 0);
+- redir_stack[need_here_doc++] = $$;
++ push_heredoc ($$);
+ }
+ | REDIR_WORD LESS_LESS WORD
+ {
+ source.filename = $1;
+ redir.filename = $3;
+ $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
+- redir_stack[need_here_doc++] = $$;
++ push_heredoc ($$);
+ }
+ | LESS_LESS_MINUS WORD
+ {
+ source.dest = 0;
+ redir.filename = $2;
+ $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+- redir_stack[need_here_doc++] = $$;
++ push_heredoc ($$);
+ }
+ | NUMBER LESS_LESS_MINUS WORD
+ {
+ source.dest = $1;
+ redir.filename = $3;
+ $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
+- redir_stack[need_here_doc++] = $$;
++ push_heredoc ($$);
+ }
+ | REDIR_WORD LESS_LESS_MINUS WORD
+ {
+ source.filename = $1;
+ redir.filename = $3;
+ $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
+- redir_stack[need_here_doc++] = $$;
++ push_heredoc ($$);
+ }
+ | LESS_LESS_LESS WORD
+ {
+@@ -2636,6 +2641,21 @@ yylex ()
+ which allow ESAC to be the next one read. */
+ static int esacs_needed_count;
+
++static void
++push_heredoc (r)
++ REDIRECT *r;
++{
++ if (need_here_doc >= HEREDOC_MAX)
++ {
++ last_command_exit_value = EX_BADUSAGE;
++ need_here_doc = 0;
++ report_syntax_error (_("maximum here-document count exceeded"));
++ reset_parser ();
++ exit_shell (last_command_exit_value);
++ }
++ redir_stack[need_here_doc++] = r;
++}
++
+ void
+ gather_here_documents ()
+ {
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 27
++#define PATCHLEVEL 28
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/y.tab.c
+===================================================================
+--- a/y.tab.c
++++ b/y.tab.c
+@@ -168,7 +168,7 @@
+
+
+ /* Copy the first part of user declarations. */
+-#line 21 "/usr/homes/chet/src/bash/src/parse.y"
++#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+
+ #include "config.h"
+
+@@ -319,6 +319,9 @@ static char *read_a_line __P((int));
+
+ static int reserved_word_acceptable __P((int));
+ static int yylex __P((void));
++
++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));
+ static int special_case_tokens __P((char *));
+@@ -416,7 +419,9 @@ int parser_state;
+
+ /* Variables to manage the task of reading here documents, because we need to
+ defer the reading until after a complete command has been collected. */
+-static REDIRECT *redir_stack[10];
++#define HEREDOC_MAX 16
++
++static REDIRECT *redir_stack[HEREDOC_MAX];
+ int need_here_doc;
+
+ /* Where shell input comes from. History expansion is performed on each
+@@ -458,7 +463,7 @@ static int global_extglob;
+ or `for WORD' begins. This is a nested command maximum, since the array
+ 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_lineno[MAX_CASE_NEST+1];
+ static int word_top = -1;
+
+ /* If non-zero, it is the token that we want read_token to return
+@@ -492,7 +497,7 @@ static REDIRECTEE redir;
+
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+ typedef union YYSTYPE
+-#line 324 "/usr/homes/chet/src/bash/src/parse.y"
++#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ WORD_DESC *word; /* the word that we read. */
+ int number; /* the number that we read. */
+@@ -503,7 +508,7 @@ typedef union YYSTYPE
+ PATTERN_LIST *pattern;
+ }
+ /* Line 193 of yacc.c. */
+-#line 507 "y.tab.c"
++#line 512 "y.tab.c"
+ YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+@@ -516,7 +521,7 @@ typedef union YYSTYPE
+
+
+ /* Line 216 of yacc.c. */
+-#line 520 "y.tab.c"
++#line 525 "y.tab.c"
+
+ #ifdef short
+ # undef short
+@@ -886,23 +891,23 @@ static const yytype_int8 yyrhs[] =
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+ static const yytype_uint16 yyrline[] =
+ {
+- 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
++ 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
+
+@@ -2093,7 +2098,7 @@ yyreduce:
+ switch (yyn)
+ {
+ case 2:
+-#line 378 "/usr/homes/chet/src/bash/src/parse.y"
++#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ /* Case of regular command. Discard the error
+ safety net,and return the command just parsed. */
+@@ -2107,7 +2112,7 @@ yyreduce:
+ break;
+
+ case 3:
+-#line 389 "/usr/homes/chet/src/bash/src/parse.y"
++#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ /* Case of regular command, but not a very
+ interesting one. Return a NULL command. */
+@@ -2119,7 +2124,7 @@ yyreduce:
+ break;
+
+ case 4:
+-#line 398 "/usr/homes/chet/src/bash/src/parse.y"
++#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ /* Error during parsing. Return NULL command. */
+ global_command = (COMMAND *)NULL;
+@@ -2137,7 +2142,7 @@ yyreduce:
+ break;
+
+ case 5:
+-#line 413 "/usr/homes/chet/src/bash/src/parse.y"
++#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ /* Case of EOF seen by itself. Do ignoreeof or
+ not. */
+@@ -2148,17 +2153,17 @@ yyreduce:
+ break;
+
+ case 6:
+-#line 423 "/usr/homes/chet/src/bash/src/parse.y"
++#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
+ break;
+
+ case 7:
+-#line 425 "/usr/homes/chet/src/bash/src/parse.y"
++#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
+ break;
+
+ case 8:
+-#line 429 "/usr/homes/chet/src/bash/src/parse.y"
++#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2167,7 +2172,7 @@ yyreduce:
+ break;
+
+ case 9:
+-#line 435 "/usr/homes/chet/src/bash/src/parse.y"
++#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2176,7 +2181,7 @@ yyreduce:
+ break;
+
+ case 10:
+-#line 441 "/usr/homes/chet/src/bash/src/parse.y"
++#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2185,7 +2190,7 @@ yyreduce:
+ break;
+
+ case 11:
+-#line 447 "/usr/homes/chet/src/bash/src/parse.y"
++#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2194,7 +2199,7 @@ yyreduce:
+ break;
+
+ case 12:
+-#line 453 "/usr/homes/chet/src/bash/src/parse.y"
++#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2203,7 +2208,7 @@ yyreduce:
+ break;
+
+ case 13:
+-#line 459 "/usr/homes/chet/src/bash/src/parse.y"
++#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2212,7 +2217,7 @@ yyreduce:
+ break;
+
+ case 14:
+-#line 465 "/usr/homes/chet/src/bash/src/parse.y"
++#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2221,7 +2226,7 @@ yyreduce:
+ break;
+
+ case 15:
+-#line 471 "/usr/homes/chet/src/bash/src/parse.y"
++#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2230,7 +2235,7 @@ yyreduce:
+ break;
+
+ case 16:
+-#line 477 "/usr/homes/chet/src/bash/src/parse.y"
++#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2239,7 +2244,7 @@ yyreduce:
+ break;
+
+ case 17:
+-#line 483 "/usr/homes/chet/src/bash/src/parse.y"
++#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2248,7 +2253,7 @@ yyreduce:
+ break;
+
+ case 18:
+-#line 489 "/usr/homes/chet/src/bash/src/parse.y"
++#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2257,7 +2262,7 @@ yyreduce:
+ break;
+
+ case 19:
+-#line 495 "/usr/homes/chet/src/bash/src/parse.y"
++#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2266,7 +2271,7 @@ yyreduce:
+ break;
+
+ case 20:
+-#line 501 "/usr/homes/chet/src/bash/src/parse.y"
++#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2275,7 +2280,7 @@ yyreduce:
+ break;
+
+ case 21:
+-#line 507 "/usr/homes/chet/src/bash/src/parse.y"
++#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2284,7 +2289,7 @@ yyreduce:
+ break;
+
+ case 22:
+-#line 513 "/usr/homes/chet/src/bash/src/parse.y"
++#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2293,67 +2298,67 @@ yyreduce:
+ break;
+
+ case 23:
+-#line 519 "/usr/homes/chet/src/bash/src/parse.y"
++#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+ (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
+- redir_stack[need_here_doc++] = (yyval.redirect);
++ push_heredoc ((yyval.redirect));
+ }
+ break;
+
+ case 24:
+-#line 526 "/usr/homes/chet/src/bash/src/parse.y"
++#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+ (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
+- redir_stack[need_here_doc++] = (yyval.redirect);
++ push_heredoc ((yyval.redirect));
+ }
+ break;
+
+ case 25:
+-#line 533 "/usr/homes/chet/src/bash/src/parse.y"
++#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+ (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
+- redir_stack[need_here_doc++] = (yyval.redirect);
++ push_heredoc ((yyval.redirect));
+ }
+ break;
+
+ case 26:
+-#line 540 "/usr/homes/chet/src/bash/src/parse.y"
++#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+ (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
+- redir_stack[need_here_doc++] = (yyval.redirect);
++ push_heredoc ((yyval.redirect));
+ }
+ break;
+
+ case 27:
+-#line 547 "/usr/homes/chet/src/bash/src/parse.y"
++#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+ (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
+- redir_stack[need_here_doc++] = (yyval.redirect);
++ push_heredoc ((yyval.redirect));
+ }
+ break;
+
+ case 28:
+-#line 554 "/usr/homes/chet/src/bash/src/parse.y"
++#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+ (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
+- redir_stack[need_here_doc++] = (yyval.redirect);
++ push_heredoc ((yyval.redirect));
+ }
+ break;
+
+ case 29:
+-#line 561 "/usr/homes/chet/src/bash/src/parse.y"
++#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2362,7 +2367,7 @@ yyreduce:
+ break;
+
+ case 30:
+-#line 567 "/usr/homes/chet/src/bash/src/parse.y"
++#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2371,7 +2376,7 @@ yyreduce:
+ break;
+
+ case 31:
+-#line 573 "/usr/homes/chet/src/bash/src/parse.y"
++#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2380,7 +2385,7 @@ yyreduce:
+ break;
+
+ case 32:
+-#line 579 "/usr/homes/chet/src/bash/src/parse.y"
++#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 0;
+ redir.dest = (yyvsp[(2) - (2)].number);
+@@ -2389,7 +2394,7 @@ yyreduce:
+ break;
+
+ case 33:
+-#line 585 "/usr/homes/chet/src/bash/src/parse.y"
++#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.dest = (yyvsp[(3) - (3)].number);
+@@ -2398,7 +2403,7 @@ yyreduce:
+ break;
+
+ case 34:
+-#line 591 "/usr/homes/chet/src/bash/src/parse.y"
++#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.dest = (yyvsp[(3) - (3)].number);
+@@ -2407,7 +2412,7 @@ yyreduce:
+ break;
+
+ case 35:
+-#line 597 "/usr/homes/chet/src/bash/src/parse.y"
++#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 1;
+ redir.dest = (yyvsp[(2) - (2)].number);
+@@ -2416,7 +2421,7 @@ yyreduce:
+ break;
+
+ case 36:
+-#line 603 "/usr/homes/chet/src/bash/src/parse.y"
++#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.dest = (yyvsp[(3) - (3)].number);
+@@ -2425,7 +2430,7 @@ yyreduce:
+ break;
+
+ case 37:
+-#line 609 "/usr/homes/chet/src/bash/src/parse.y"
++#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.dest = (yyvsp[(3) - (3)].number);
+@@ -2434,7 +2439,7 @@ yyreduce:
+ break;
+
+ case 38:
+-#line 615 "/usr/homes/chet/src/bash/src/parse.y"
++#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2443,7 +2448,7 @@ yyreduce:
+ break;
+
+ case 39:
+-#line 621 "/usr/homes/chet/src/bash/src/parse.y"
++#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2452,7 +2457,7 @@ yyreduce:
+ break;
+
+ case 40:
+-#line 627 "/usr/homes/chet/src/bash/src/parse.y"
++#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2461,7 +2466,7 @@ yyreduce:
+ break;
+
+ case 41:
+-#line 633 "/usr/homes/chet/src/bash/src/parse.y"
++#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2470,7 +2475,7 @@ yyreduce:
+ break;
+
+ case 42:
+-#line 639 "/usr/homes/chet/src/bash/src/parse.y"
++#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2479,7 +2484,7 @@ yyreduce:
+ break;
+
+ case 43:
+-#line 645 "/usr/homes/chet/src/bash/src/parse.y"
++#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2488,7 +2493,7 @@ yyreduce:
+ break;
+
+ case 44:
+-#line 651 "/usr/homes/chet/src/bash/src/parse.y"
++#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 1;
+ redir.dest = 0;
+@@ -2497,7 +2502,7 @@ yyreduce:
+ break;
+
+ case 45:
+-#line 657 "/usr/homes/chet/src/bash/src/parse.y"
++#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.dest = 0;
+@@ -2506,7 +2511,7 @@ yyreduce:
+ break;
+
+ case 46:
+-#line 663 "/usr/homes/chet/src/bash/src/parse.y"
++#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.dest = 0;
+@@ -2515,7 +2520,7 @@ yyreduce:
+ break;
+
+ case 47:
+-#line 669 "/usr/homes/chet/src/bash/src/parse.y"
++#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 0;
+ redir.dest = 0;
+@@ -2524,7 +2529,7 @@ yyreduce:
+ break;
+
+ case 48:
+-#line 675 "/usr/homes/chet/src/bash/src/parse.y"
++#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.dest = 0;
+@@ -2533,7 +2538,7 @@ yyreduce:
+ break;
+
+ case 49:
+-#line 681 "/usr/homes/chet/src/bash/src/parse.y"
++#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.dest = 0;
+@@ -2542,7 +2547,7 @@ yyreduce:
+ break;
+
+ case 50:
+-#line 687 "/usr/homes/chet/src/bash/src/parse.y"
++#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2551,7 +2556,7 @@ yyreduce:
+ break;
+
+ case 51:
+-#line 693 "/usr/homes/chet/src/bash/src/parse.y"
++#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2560,29 +2565,29 @@ yyreduce:
+ break;
+
+ case 52:
+-#line 701 "/usr/homes/chet/src/bash/src/parse.y"
++#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
+ break;
+
+ case 53:
+-#line 703 "/usr/homes/chet/src/bash/src/parse.y"
++#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
+ break;
+
+ case 54:
+-#line 705 "/usr/homes/chet/src/bash/src/parse.y"
++#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
+ break;
+
+ case 55:
+-#line 709 "/usr/homes/chet/src/bash/src/parse.y"
++#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
+ }
+ break;
+
+ case 56:
+-#line 713 "/usr/homes/chet/src/bash/src/parse.y"
++#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ register REDIRECT *t;
+
+@@ -2594,27 +2599,27 @@ yyreduce:
+ break;
+
+ case 57:
+-#line 724 "/usr/homes/chet/src/bash/src/parse.y"
++#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
+ break;
+
+ case 58:
+-#line 726 "/usr/homes/chet/src/bash/src/parse.y"
++#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
+ break;
+
+ case 59:
+-#line 730 "/usr/homes/chet/src/bash/src/parse.y"
++#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
+ break;
+
+ case 60:
+-#line 732 "/usr/homes/chet/src/bash/src/parse.y"
++#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 61:
+-#line 734 "/usr/homes/chet/src/bash/src/parse.y"
++#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ COMMAND *tc;
+
+@@ -2633,72 +2638,72 @@ yyreduce:
+ break;
+
+ case 62:
+-#line 750 "/usr/homes/chet/src/bash/src/parse.y"
++#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 63:
+-#line 752 "/usr/homes/chet/src/bash/src/parse.y"
++#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 64:
+-#line 756 "/usr/homes/chet/src/bash/src/parse.y"
++#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 65:
+-#line 758 "/usr/homes/chet/src/bash/src/parse.y"
++#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 66:
+-#line 760 "/usr/homes/chet/src/bash/src/parse.y"
++#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
+ break;
+
+ case 67:
+-#line 762 "/usr/homes/chet/src/bash/src/parse.y"
++#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
+ break;
+
+ case 68:
+-#line 764 "/usr/homes/chet/src/bash/src/parse.y"
++#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 69:
+-#line 766 "/usr/homes/chet/src/bash/src/parse.y"
++#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 70:
+-#line 768 "/usr/homes/chet/src/bash/src/parse.y"
++#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 71:
+-#line 770 "/usr/homes/chet/src/bash/src/parse.y"
++#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 72:
+-#line 772 "/usr/homes/chet/src/bash/src/parse.y"
++#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 73:
+-#line 774 "/usr/homes/chet/src/bash/src/parse.y"
++#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 74:
+-#line 776 "/usr/homes/chet/src/bash/src/parse.y"
++#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 75:
+-#line 780 "/usr/homes/chet/src/bash/src/parse.y"
++#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2706,7 +2711,7 @@ yyreduce:
+ break;
+
+ case 76:
+-#line 785 "/usr/homes/chet/src/bash/src/parse.y"
++#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2714,7 +2719,7 @@ yyreduce:
+ break;
+
+ case 77:
+-#line 790 "/usr/homes/chet/src/bash/src/parse.y"
++#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2722,7 +2727,7 @@ yyreduce:
+ break;
+
+ case 78:
+-#line 795 "/usr/homes/chet/src/bash/src/parse.y"
++#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2730,7 +2735,7 @@ yyreduce:
+ break;
+
+ case 79:
+-#line 800 "/usr/homes/chet/src/bash/src/parse.y"
++#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2738,7 +2743,7 @@ yyreduce:
+ break;
+
+ case 80:
+-#line 805 "/usr/homes/chet/src/bash/src/parse.y"
++#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2746,7 +2751,7 @@ yyreduce:
+ break;
+
+ case 81:
+-#line 810 "/usr/homes/chet/src/bash/src/parse.y"
++#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2754,7 +2759,7 @@ yyreduce:
+ break;
+
+ case 82:
+-#line 815 "/usr/homes/chet/src/bash/src/parse.y"
++#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2762,7 +2767,7 @@ yyreduce:
+ break;
+
+ case 83:
+-#line 822 "/usr/homes/chet/src/bash/src/parse.y"
++#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
+ if (word_top > 0) word_top--;
+@@ -2770,7 +2775,7 @@ yyreduce:
+ break;
+
+ case 84:
+-#line 827 "/usr/homes/chet/src/bash/src/parse.y"
++#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
+ if (word_top > 0) word_top--;
+@@ -2778,7 +2783,7 @@ yyreduce:
+ break;
+
+ case 85:
+-#line 832 "/usr/homes/chet/src/bash/src/parse.y"
++#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
+ if (word_top > 0) word_top--;
+@@ -2786,7 +2791,7 @@ yyreduce:
+ break;
+
+ case 86:
+-#line 837 "/usr/homes/chet/src/bash/src/parse.y"
++#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
+ if (word_top > 0) word_top--;
+@@ -2794,7 +2799,7 @@ yyreduce:
+ break;
+
+ case 87:
+-#line 844 "/usr/homes/chet/src/bash/src/parse.y"
++#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2802,7 +2807,7 @@ yyreduce:
+ break;
+
+ case 88:
+-#line 849 "/usr/homes/chet/src/bash/src/parse.y"
++#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2810,7 +2815,7 @@ yyreduce:
+ break;
+
+ case 89:
+-#line 854 "/usr/homes/chet/src/bash/src/parse.y"
++#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2818,7 +2823,7 @@ yyreduce:
+ break;
+
+ case 90:
+-#line 859 "/usr/homes/chet/src/bash/src/parse.y"
++#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2826,7 +2831,7 @@ yyreduce:
+ break;
+
+ case 91:
+-#line 864 "/usr/homes/chet/src/bash/src/parse.y"
++#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2834,7 +2839,7 @@ yyreduce:
+ break;
+
+ case 92:
+-#line 869 "/usr/homes/chet/src/bash/src/parse.y"
++#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2842,7 +2847,7 @@ yyreduce:
+ break;
+
+ case 93:
+-#line 876 "/usr/homes/chet/src/bash/src/parse.y"
++#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2850,7 +2855,7 @@ yyreduce:
+ break;
+
+ case 94:
+-#line 881 "/usr/homes/chet/src/bash/src/parse.y"
++#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2858,7 +2863,7 @@ yyreduce:
+ break;
+
+ case 95:
+-#line 886 "/usr/homes/chet/src/bash/src/parse.y"
++#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2866,27 +2871,27 @@ yyreduce:
+ break;
+
+ case 96:
+-#line 893 "/usr/homes/chet/src/bash/src/parse.y"
++#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
+ break;
+
+ case 97:
+-#line 896 "/usr/homes/chet/src/bash/src/parse.y"
++#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
+ break;
+
+ case 98:
+-#line 899 "/usr/homes/chet/src/bash/src/parse.y"
++#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
+ break;
+
+ case 99:
+-#line 903 "/usr/homes/chet/src/bash/src/parse.y"
++#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 100:
+-#line 905 "/usr/homes/chet/src/bash/src/parse.y"
++#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ COMMAND *tc;
+
+@@ -2918,7 +2923,7 @@ yyreduce:
+ break;
+
+ case 101:
+-#line 936 "/usr/homes/chet/src/bash/src/parse.y"
++#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL;
+@@ -2926,7 +2931,7 @@ yyreduce:
+ break;
+
+ case 102:
+-#line 943 "/usr/homes/chet/src/bash/src/parse.y"
++#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+@@ -2934,7 +2939,7 @@ yyreduce:
+ break;
+
+ case 103:
+-#line 948 "/usr/homes/chet/src/bash/src/parse.y"
++#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ COMMAND *tc;
+
+@@ -2954,7 +2959,7 @@ yyreduce:
+ break;
+
+ case 104:
+-#line 965 "/usr/homes/chet/src/bash/src/parse.y"
++#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+@@ -2962,7 +2967,7 @@ yyreduce:
+ break;
+
+ case 105:
+-#line 970 "/usr/homes/chet/src/bash/src/parse.y"
++#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ COMMAND *tc;
+
+@@ -2982,7 +2987,7 @@ yyreduce:
+ break;
+
+ case 106:
+-#line 987 "/usr/homes/chet/src/bash/src/parse.y"
++#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+@@ -2990,117 +2995,117 @@ yyreduce:
+ break;
+
+ case 107:
+-#line 994 "/usr/homes/chet/src/bash/src/parse.y"
++#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
+ break;
+
+ case 108:
+-#line 996 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
+ break;
+
+ case 109:
+-#line 998 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
+ break;
+
+ case 110:
+-#line 1003 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
+ break;
+
+ case 111:
+-#line 1007 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
+ break;
+
+ case 112:
+-#line 1011 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(2) - (3)].command); }
+ break;
+
+ case 113:
+-#line 1015 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
+ break;
+
+ case 114:
+-#line 1017 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
+ break;
+
+ case 115:
+-#line 1019 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
+ break;
+
+ case 117:
+-#line 1024 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
+ break;
+
+ case 118:
+-#line 1028 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
+ break;
+
+ case 119:
+-#line 1030 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
+ break;
+
+ case 120:
+-#line 1032 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
+ break;
+
+ case 121:
+-#line 1034 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
+ break;
+
+ case 122:
+-#line 1038 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
+ break;
+
+ case 123:
+-#line 1040 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
+ break;
+
+ case 124:
+-#line 1042 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
+ break;
+
+ case 125:
+-#line 1044 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
+ break;
+
+ case 126:
+-#line 1046 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
+ break;
+
+ case 127:
+-#line 1048 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
+ break;
+
+ case 128:
+-#line 1052 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
+ break;
+
+ case 129:
+-#line 1054 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
+ break;
+
+ case 130:
+-#line 1063 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = (yyvsp[(2) - (2)].command);
+ if (need_here_doc)
+@@ -3109,14 +3114,14 @@ yyreduce:
+ break;
+
+ case 132:
+-#line 1072 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = (yyvsp[(2) - (2)].command);
+ }
+ break;
+
+ case 134:
+-#line 1079 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ if ((yyvsp[(1) - (3)].command)->type == cm_connection)
+ (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&');
+@@ -3126,17 +3131,17 @@ yyreduce:
+ break;
+
+ case 136:
+-#line 1090 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
+ break;
+
+ case 137:
+-#line 1092 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
+ break;
+
+ case 138:
+-#line 1094 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ if ((yyvsp[(1) - (4)].command)->type == cm_connection)
+ (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&');
+@@ -3146,37 +3151,37 @@ yyreduce:
+ break;
+
+ case 139:
+-#line 1101 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
+ break;
+
+ case 140:
+-#line 1103 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
+ break;
+
+ case 141:
+-#line 1105 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 144:
+-#line 1113 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.number) = '\n'; }
+ break;
+
+ case 145:
+-#line 1115 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.number) = ';'; }
+ break;
+
+ case 146:
+-#line 1117 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.number) = yacc_EOF; }
+ break;
+
+ case 149:
+-#line 1131 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = (yyvsp[(1) - (1)].command);
+ if (need_here_doc)
+@@ -3192,7 +3197,7 @@ yyreduce:
+ break;
+
+ case 150:
+-#line 1144 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ if ((yyvsp[(1) - (2)].command)->type == cm_connection)
+ (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&');
+@@ -3211,7 +3216,7 @@ yyreduce:
+ break;
+
+ case 151:
+-#line 1160 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ (yyval.command) = (yyvsp[(1) - (2)].command);
+ if (need_here_doc)
+@@ -3227,17 +3232,17 @@ yyreduce:
+ break;
+
+ case 152:
+-#line 1175 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
+ break;
+
+ case 153:
+-#line 1177 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
+ break;
+
+ case 154:
+-#line 1179 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ if ((yyvsp[(1) - (3)].command)->type == cm_connection)
+ (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&');
+@@ -3247,22 +3252,22 @@ yyreduce:
+ break;
+
+ case 155:
+-#line 1186 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
+ break;
+
+ case 156:
+-#line 1189 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 157:
+-#line 1193 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 158:
+-#line 1195 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ if ((yyvsp[(2) - (2)].command))
+ (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN; /* toggle */
+@@ -3271,7 +3276,7 @@ yyreduce:
+ break;
+
+ case 159:
+-#line 1201 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ if ((yyvsp[(2) - (2)].command))
+ (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number);
+@@ -3280,7 +3285,7 @@ yyreduce:
+ break;
+
+ case 160:
+-#line 1207 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ ELEMENT x;
+
+@@ -3300,7 +3305,7 @@ yyreduce:
+ break;
+
+ case 161:
+-#line 1224 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ ELEMENT x;
+
+@@ -3321,12 +3326,12 @@ yyreduce:
+ break;
+
+ case 162:
+-#line 1244 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
+ break;
+
+ case 163:
+-#line 1246 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ {
+ /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
+ COMMAND *tc;
+@@ -3352,28 +3357,28 @@ yyreduce:
+ break;
+
+ case 164:
+-#line 1269 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 165:
+-#line 1273 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE; }
+ break;
+
+ case 166:
+-#line 1275 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+ break;
+
+ case 167:
+-#line 1277 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+ break;
+
+
+ /* Line 1267 of yacc.c. */
+-#line 3377 "y.tab.c"
++#line 3382 "y.tab.c"
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+@@ -3587,7 +3592,7 @@ yyreturn:
+ }
+
+
+-#line 1279 "/usr/homes/chet/src/bash/src/parse.y"
++#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
+
+
+ /* Initial size to allocate for tokens, and the
+@@ -4948,6 +4953,21 @@ yylex ()
+ which allow ESAC to be the next one read. */
+ static int esacs_needed_count;
+
++static void
++push_heredoc (r)
++ REDIRECT *r;
++{
++ if (need_here_doc >= HEREDOC_MAX)
++ {
++ last_command_exit_value = EX_BADUSAGE;
++ need_here_doc = 0;
++ report_syntax_error (_("maximum here-document count exceeded"));
++ reset_parser ();
++ exit_shell (last_command_exit_value);
++ }
++ redir_stack[need_here_doc++] = r;
++}
++
+ void
+ gather_here_documents ()
+ {
+@@ -8541,3 +8561,4 @@ set_line_mbstate ()
+ }
+ }
+ #endif /* HANDLE_MULTIBYTE */
++
diff --git a/debian/patches/bash43-029.diff b/debian/patches/bash43-029.diff
new file mode 100644
index 0000000..a5742bb
--- /dev/null
+++ b/debian/patches/bash43-029.diff
@@ -0,0 +1,54 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-029
+
+Bug-Reported-by: Michal Zalewski <lcamtuf@coredump.cx>
+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 delimiter
+uninitialized. This can result in an invalid memory access when the parsed
+function is later copied.
+
+Index: b/copy_cmd.c
+===================================================================
+--- a/copy_cmd.c
++++ b/copy_cmd.c
+@@ -126,7 +126,7 @@ copy_redirect (redirect)
+ {
+ case r_reading_until:
+ case r_deblank_reading_until:
+- new_redirect->here_doc_eof = savestring (redirect->here_doc_eof);
++ new_redirect->here_doc_eof = redirect->here_doc_eof ? savestring (redirect->here_doc_eof) : 0;
+ /*FALLTHROUGH*/
+ case r_reading_string:
+ case r_appending_to:
+Index: b/make_cmd.c
+===================================================================
+--- a/make_cmd.c
++++ b/make_cmd.c
+@@ -692,6 +692,7 @@ make_redirection (source, instruction, d
+ /* First do the common cases. */
+ temp->redirector = source;
+ temp->redirectee = dest_and_filename;
++ temp->here_doc_eof = 0;
+ temp->instruction = instruction;
+ temp->flags = 0;
+ temp->rflags = flags;
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 28
++#define PATCHLEVEL 29
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/debian/patches/bash43-030.diff b/debian/patches/bash43-030.diff
new file mode 100644
index 0000000..410ed91
--- /dev/null
+++ b/debian/patches/bash43-030.diff
@@ -0,0 +1,1404 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-030
+
+Bug-Reported-by: Michal Zalewski <lcamtuf@coredump.cx>
+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.
+
+Index: b/builtins/evalstring.c
+===================================================================
+--- a/builtins/evalstring.c
++++ b/builtins/evalstring.c
+@@ -308,12 +308,25 @@ parse_and_execute (string, from_file, fl
+ {
+ struct fd_bitmap *bitmap;
+
+- if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
++ if (flags & SEVAL_FUNCDEF)
+ {
+- internal_warning ("%s: ignoring function definition attempt", from_file);
+- should_jump_to_top_level = 0;
+- last_result = last_command_exit_value = EX_BADUSAGE;
+- break;
++ char *x;
++
++ /* 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 != cm_function_def ||
++ ((x = parser_remaining_input ()) && *x) ||
++ (STREQ (from_file, command->value.Function_def->name->word) == 0))
++ {
++ internal_warning (_("%s: ignoring function definition attempt"), from_file);
++ should_jump_to_top_level = 0;
++ last_result = last_command_exit_value = EX_BADUSAGE;
++ reset_parser ();
++ break;
++ }
+ }
+
+ bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
+@@ -378,7 +391,10 @@ parse_and_execute (string, from_file, fl
+ discard_unwind_frame ("pe_dispose");
+
+ if (flags & SEVAL_ONECMD)
+- break;
++ {
++ reset_parser ();
++ break;
++ }
+ }
+ }
+ else
+Index: b/parse.y
+===================================================================
+--- a/parse.y
++++ b/parse.y
+@@ -2538,6 +2538,16 @@ shell_ungetc (c)
+ eol_ungetc_lookahead = c;
+ }
+
++char *
++parser_remaining_input ()
++{
++ if (shell_input_line == 0)
++ return 0;
++ if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
++ return '\0'; /* XXX */
++ return (shell_input_line + shell_input_line_index);
++}
++
+ #ifdef INCLUDE_UNUSED
+ /* Back the input pointer up by one, effectively `ungetting' a character. */
+ static void
+@@ -4027,8 +4037,8 @@ xparse_dolparen (base, string, indp, fla
+ reset_parser ();
+ /* reset_parser clears shell_input_line and associated variables */
+ restore_input_line_state (&ls);
+- if (interactive)
+- token_to_read = 0;
++
++ token_to_read = 0;
+
+ /* Need to find how many characters parse_and_execute consumed, update
+ *indp, if flags != 0, copy the portion of the string parsed into RET
+Index: b/patchlevel.h
+===================================================================
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 29
++#define PATCHLEVEL 30
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: b/shell.h
+===================================================================
+--- a/shell.h
++++ b/shell.h
+@@ -180,6 +180,8 @@ typedef struct _sh_input_line_state_t {
+ } sh_input_line_state_t;
+
+ /* Let's try declaring these here. */
++extern char *parser_remaining_input __P((void));
++
+ extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
+ extern void restore_parser_state __P((sh_parser_state_t *));
+
+Index: b/y.tab.c
+===================================================================
+--- a/y.tab.c
++++ b/y.tab.c
+@@ -168,7 +168,7 @@
+
+
+ /* Copy the first part of user declarations. */
+-#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+
+ #include "config.h"
+
+@@ -497,7 +497,7 @@ static REDIRECTEE redir;
+
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+ typedef union YYSTYPE
+-#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ WORD_DESC *word; /* the word that we read. */
+ int number; /* the number that we read. */
+@@ -2098,7 +2098,7 @@ yyreduce:
+ switch (yyn)
+ {
+ case 2:
+-#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ /* Case of regular command. Discard the error
+ safety net,and return the command just parsed. */
+@@ -2112,7 +2112,7 @@ yyreduce:
+ break;
+
+ case 3:
+-#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ /* Case of regular command, but not a very
+ interesting one. Return a NULL command. */
+@@ -2124,7 +2124,7 @@ yyreduce:
+ break;
+
+ case 4:
+-#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ /* Error during parsing. Return NULL command. */
+ global_command = (COMMAND *)NULL;
+@@ -2142,7 +2142,7 @@ yyreduce:
+ break;
+
+ case 5:
+-#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ /* Case of EOF seen by itself. Do ignoreeof or
+ not. */
+@@ -2153,17 +2153,17 @@ yyreduce:
+ break;
+
+ case 6:
+-#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
+ break;
+
+ case 7:
+-#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
+ break;
+
+ case 8:
+-#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2172,7 +2172,7 @@ yyreduce:
+ break;
+
+ case 9:
+-#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2181,7 +2181,7 @@ yyreduce:
+ break;
+
+ case 10:
+-#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2190,7 +2190,7 @@ yyreduce:
+ break;
+
+ case 11:
+-#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2199,7 +2199,7 @@ yyreduce:
+ break;
+
+ case 12:
+-#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2208,7 +2208,7 @@ yyreduce:
+ break;
+
+ case 13:
+-#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2217,7 +2217,7 @@ yyreduce:
+ break;
+
+ case 14:
+-#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2226,7 +2226,7 @@ yyreduce:
+ break;
+
+ case 15:
+-#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2235,7 +2235,7 @@ yyreduce:
+ break;
+
+ case 16:
+-#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2244,7 +2244,7 @@ yyreduce:
+ break;
+
+ case 17:
+-#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2253,7 +2253,7 @@ yyreduce:
+ break;
+
+ case 18:
+-#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2262,7 +2262,7 @@ yyreduce:
+ break;
+
+ case 19:
+-#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2271,7 +2271,7 @@ yyreduce:
+ break;
+
+ case 20:
+-#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2280,7 +2280,7 @@ yyreduce:
+ break;
+
+ case 21:
+-#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2289,7 +2289,7 @@ yyreduce:
+ break;
+
+ case 22:
+-#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2298,7 +2298,7 @@ yyreduce:
+ break;
+
+ case 23:
+-#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2308,7 +2308,7 @@ yyreduce:
+ break;
+
+ case 24:
+-#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2318,7 +2318,7 @@ yyreduce:
+ break;
+
+ case 25:
+-#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2328,7 +2328,7 @@ yyreduce:
+ break;
+
+ case 26:
+-#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2338,7 +2338,7 @@ yyreduce:
+ break;
+
+ case 27:
+-#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2348,7 +2348,7 @@ yyreduce:
+ break;
+
+ case 28:
+-#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2358,7 +2358,7 @@ yyreduce:
+ break;
+
+ case 29:
+-#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2367,7 +2367,7 @@ yyreduce:
+ break;
+
+ case 30:
+-#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2376,7 +2376,7 @@ yyreduce:
+ break;
+
+ case 31:
+-#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2385,7 +2385,7 @@ yyreduce:
+ break;
+
+ case 32:
+-#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 0;
+ redir.dest = (yyvsp[(2) - (2)].number);
+@@ -2394,7 +2394,7 @@ yyreduce:
+ break;
+
+ case 33:
+-#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.dest = (yyvsp[(3) - (3)].number);
+@@ -2403,7 +2403,7 @@ yyreduce:
+ break;
+
+ case 34:
+-#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.dest = (yyvsp[(3) - (3)].number);
+@@ -2412,7 +2412,7 @@ yyreduce:
+ break;
+
+ case 35:
+-#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 1;
+ redir.dest = (yyvsp[(2) - (2)].number);
+@@ -2421,7 +2421,7 @@ yyreduce:
+ break;
+
+ case 36:
+-#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.dest = (yyvsp[(3) - (3)].number);
+@@ -2430,7 +2430,7 @@ yyreduce:
+ break;
+
+ case 37:
+-#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.dest = (yyvsp[(3) - (3)].number);
+@@ -2439,7 +2439,7 @@ yyreduce:
+ break;
+
+ case 38:
+-#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 0;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2448,7 +2448,7 @@ yyreduce:
+ break;
+
+ case 39:
+-#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2457,7 +2457,7 @@ yyreduce:
+ break;
+
+ case 40:
+-#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2466,7 +2466,7 @@ yyreduce:
+ break;
+
+ case 41:
+-#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2475,7 +2475,7 @@ yyreduce:
+ break;
+
+ case 42:
+-#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2484,7 +2484,7 @@ yyreduce:
+ break;
+
+ case 43:
+-#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.filename = (yyvsp[(3) - (3)].word);
+@@ -2493,7 +2493,7 @@ yyreduce:
+ break;
+
+ case 44:
+-#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 1;
+ redir.dest = 0;
+@@ -2502,7 +2502,7 @@ yyreduce:
+ break;
+
+ case 45:
+-#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.dest = 0;
+@@ -2511,7 +2511,7 @@ yyreduce:
+ break;
+
+ case 46:
+-#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.dest = 0;
+@@ -2520,7 +2520,7 @@ yyreduce:
+ break;
+
+ case 47:
+-#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 0;
+ redir.dest = 0;
+@@ -2529,7 +2529,7 @@ yyreduce:
+ break;
+
+ case 48:
+-#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = (yyvsp[(1) - (3)].number);
+ redir.dest = 0;
+@@ -2538,7 +2538,7 @@ yyreduce:
+ break;
+
+ case 49:
+-#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.filename = (yyvsp[(1) - (3)].word);
+ redir.dest = 0;
+@@ -2547,7 +2547,7 @@ yyreduce:
+ break;
+
+ case 50:
+-#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2556,7 +2556,7 @@ yyreduce:
+ break;
+
+ case 51:
+-#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ source.dest = 1;
+ redir.filename = (yyvsp[(2) - (2)].word);
+@@ -2565,29 +2565,29 @@ yyreduce:
+ break;
+
+ case 52:
+-#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
+ break;
+
+ case 53:
+-#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
+ break;
+
+ case 54:
+-#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
+ break;
+
+ case 55:
+-#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
+ }
+ break;
+
+ case 56:
+-#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ register REDIRECT *t;
+
+@@ -2599,27 +2599,27 @@ yyreduce:
+ break;
+
+ case 57:
+-#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
+ break;
+
+ case 58:
+-#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
+ break;
+
+ case 59:
+-#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
+ break;
+
+ case 60:
+-#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 61:
+-#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ COMMAND *tc;
+
+@@ -2638,72 +2638,72 @@ yyreduce:
+ break;
+
+ case 62:
+-#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 63:
+-#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 64:
+-#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 65:
+-#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 66:
+-#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
+ break;
+
+ case 67:
+-#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
+ break;
+
+ case 68:
+-#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 69:
+-#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 70:
+-#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 71:
+-#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 72:
+-#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 73:
+-#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 74:
+-#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 75:
+-#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2711,7 +2711,7 @@ yyreduce:
+ break;
+
+ case 76:
+-#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2719,7 +2719,7 @@ yyreduce:
+ break;
+
+ case 77:
+-#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2727,7 +2727,7 @@ yyreduce:
+ break;
+
+ case 78:
+-#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2735,7 +2735,7 @@ yyreduce:
+ break;
+
+ case 79:
+-#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2743,7 +2743,7 @@ yyreduce:
+ break;
+
+ case 80:
+-#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2751,7 +2751,7 @@ yyreduce:
+ break;
+
+ case 81:
+-#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2759,7 +2759,7 @@ yyreduce:
+ break;
+
+ case 82:
+-#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2767,7 +2767,7 @@ yyreduce:
+ break;
+
+ case 83:
+-#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
+ if (word_top > 0) word_top--;
+@@ -2775,7 +2775,7 @@ yyreduce:
+ break;
+
+ case 84:
+-#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
+ if (word_top > 0) word_top--;
+@@ -2783,7 +2783,7 @@ yyreduce:
+ break;
+
+ case 85:
+-#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
+ if (word_top > 0) word_top--;
+@@ -2791,7 +2791,7 @@ yyreduce:
+ break;
+
+ case 86:
+-#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
+ if (word_top > 0) word_top--;
+@@ -2799,7 +2799,7 @@ yyreduce:
+ break;
+
+ case 87:
+-#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2807,7 +2807,7 @@ yyreduce:
+ break;
+
+ case 88:
+-#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2815,7 +2815,7 @@ yyreduce:
+ break;
+
+ case 89:
+-#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2823,7 +2823,7 @@ yyreduce:
+ break;
+
+ case 90:
+-#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2831,7 +2831,7 @@ yyreduce:
+ break;
+
+ case 91:
+-#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2839,7 +2839,7 @@ yyreduce:
+ break;
+
+ case 92:
+-#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2847,7 +2847,7 @@ yyreduce:
+ break;
+
+ case 93:
+-#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2855,7 +2855,7 @@ yyreduce:
+ break;
+
+ case 94:
+-#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2863,7 +2863,7 @@ yyreduce:
+ break;
+
+ case 95:
+-#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+@@ -2871,27 +2871,27 @@ yyreduce:
+ break;
+
+ case 96:
+-#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
+ break;
+
+ case 97:
+-#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
+ break;
+
+ case 98:
+-#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
+ break;
+
+ case 99:
+-#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 100:
+-#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ COMMAND *tc;
+
+@@ -2923,7 +2923,7 @@ yyreduce:
+ break;
+
+ case 101:
+-#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL;
+@@ -2931,7 +2931,7 @@ yyreduce:
+ break;
+
+ case 102:
+-#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+@@ -2939,7 +2939,7 @@ yyreduce:
+ break;
+
+ case 103:
+-#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ COMMAND *tc;
+
+@@ -2959,7 +2959,7 @@ yyreduce:
+ break;
+
+ case 104:
+-#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+@@ -2967,7 +2967,7 @@ yyreduce:
+ break;
+
+ case 105:
+-#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ COMMAND *tc;
+
+@@ -2987,7 +2987,7 @@ yyreduce:
+ break;
+
+ case 106:
+-#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+@@ -2995,117 +2995,117 @@ yyreduce:
+ break;
+
+ case 107:
+-#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
+ break;
+
+ case 108:
+-#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
+ break;
+
+ case 109:
+-#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
+ break;
+
+ case 110:
+-#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
+ break;
+
+ case 111:
+-#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
+ break;
+
+ case 112:
+-#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(2) - (3)].command); }
+ break;
+
+ case 113:
+-#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
+ break;
+
+ case 114:
+-#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
+ break;
+
+ case 115:
+-#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
+ break;
+
+ case 117:
+-#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
+ break;
+
+ case 118:
+-#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
+ break;
+
+ case 119:
+-#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
+ break;
+
+ case 120:
+-#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
+ break;
+
+ case 121:
+-#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
+ break;
+
+ case 122:
+-#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
+ break;
+
+ case 123:
+-#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
+ break;
+
+ case 124:
+-#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
+ break;
+
+ case 125:
+-#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
+ break;
+
+ case 126:
+-#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
+ break;
+
+ case 127:
+-#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
+ break;
+
+ case 128:
+-#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
+ break;
+
+ case 129:
+-#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
+ break;
+
+ case 130:
+-#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = (yyvsp[(2) - (2)].command);
+ if (need_here_doc)
+@@ -3114,14 +3114,14 @@ yyreduce:
+ break;
+
+ case 132:
+-#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = (yyvsp[(2) - (2)].command);
+ }
+ break;
+
+ case 134:
+-#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ if ((yyvsp[(1) - (3)].command)->type == cm_connection)
+ (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&');
+@@ -3131,17 +3131,17 @@ yyreduce:
+ break;
+
+ case 136:
+-#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
+ break;
+
+ case 137:
+-#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
+ break;
+
+ case 138:
+-#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ if ((yyvsp[(1) - (4)].command)->type == cm_connection)
+ (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&');
+@@ -3151,37 +3151,37 @@ yyreduce:
+ break;
+
+ case 139:
+-#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
+ break;
+
+ case 140:
+-#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
+ break;
+
+ case 141:
+-#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 144:
+-#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.number) = '\n'; }
+ break;
+
+ case 145:
+-#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.number) = ';'; }
+ break;
+
+ case 146:
+-#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.number) = yacc_EOF; }
+ break;
+
+ case 149:
+-#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = (yyvsp[(1) - (1)].command);
+ if (need_here_doc)
+@@ -3197,7 +3197,7 @@ yyreduce:
+ break;
+
+ case 150:
+-#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ if ((yyvsp[(1) - (2)].command)->type == cm_connection)
+ (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&');
+@@ -3216,7 +3216,7 @@ yyreduce:
+ break;
+
+ case 151:
+-#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ (yyval.command) = (yyvsp[(1) - (2)].command);
+ if (need_here_doc)
+@@ -3232,17 +3232,17 @@ yyreduce:
+ break;
+
+ case 152:
+-#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
+ break;
+
+ case 153:
+-#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
+ break;
+
+ case 154:
+-#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ if ((yyvsp[(1) - (3)].command)->type == cm_connection)
+ (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&');
+@@ -3252,22 +3252,22 @@ yyreduce:
+ break;
+
+ case 155:
+-#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
+ break;
+
+ case 156:
+-#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 157:
+-#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 158:
+-#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ if ((yyvsp[(2) - (2)].command))
+ (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN; /* toggle */
+@@ -3276,7 +3276,7 @@ yyreduce:
+ break;
+
+ case 159:
+-#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ if ((yyvsp[(2) - (2)].command))
+ (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number);
+@@ -3285,7 +3285,7 @@ yyreduce:
+ break;
+
+ case 160:
+-#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ ELEMENT x;
+
+@@ -3305,7 +3305,7 @@ yyreduce:
+ break;
+
+ case 161:
+-#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ ELEMENT x;
+
+@@ -3326,12 +3326,12 @@ yyreduce:
+ break;
+
+ case 162:
+-#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
+ break;
+
+ case 163:
+-#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ {
+ /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
+ COMMAND *tc;
+@@ -3357,22 +3357,22 @@ yyreduce:
+ break;
+
+ case 164:
+-#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.command) = (yyvsp[(1) - (1)].command); }
+ break;
+
+ case 165:
+-#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE; }
+ break;
+
+ case 166:
+-#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+ break;
+
+ case 167:
+-#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+ break;
+
+@@ -3592,7 +3592,7 @@ yyreturn:
+ }
+
+
+-#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
++#line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y"
+
+
+ /* Initial size to allocate for tokens, and the
+@@ -4850,6 +4850,16 @@ shell_ungetc (c)
+ eol_ungetc_lookahead = c;
+ }
+
++char *
++parser_remaining_input ()
++{
++ if (shell_input_line == 0)
++ return 0;
++ if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
++ return '\0'; /* XXX */
++ return (shell_input_line + shell_input_line_index);
++}
++
+ #ifdef INCLUDE_UNUSED
+ /* Back the input pointer up by one, effectively `ungetting' a character. */
+ static void
+@@ -6339,8 +6349,8 @@ xparse_dolparen (base, string, indp, fla
+ reset_parser ();
+ /* reset_parser clears shell_input_line and associated variables */
+ restore_input_line_state (&ls);
+- if (interactive)
+- token_to_read = 0;
++
++ token_to_read = 0;
+
+ /* Need to find how many characters parse_and_execute consumed, update
+ *indp, if flags != 0, copy the portion of the string parsed into RET
diff --git a/debian/patches/bashbug-editor.diff b/debian/patches/bashbug-editor.diff
new file mode 100644
index 0000000..3b751b6
--- /dev/null
+++ b/debian/patches/bashbug-editor.diff
@@ -0,0 +1,12 @@
+# DP: send bug reports to Debian bash maintainer too.
+
+--- a/support/bashbug.sh
++++ b/support/bashbug.sh
+@@ -117,6 +117,7 @@
+ esac ;;
+ esac
+
++BUGBASH="${BUGBASH},bash@packages.debian.org"
+ BUGADDR="${1-$BUGBASH}"
+
+ if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then
diff --git a/debian/patches/bzero.diff b/debian/patches/bzero.diff
new file mode 100644
index 0000000..653ed3d
--- /dev/null
+++ b/debian/patches/bzero.diff
@@ -0,0 +1,13 @@
+--- a/lib/sh/oslib.c
++++ b/lib/sh/oslib.c
+@@ -180,8 +180,8 @@
+ # endif
+ void
+ bzero (s, n)
+- char *s;
+- int n;
++ void *s;
++ size_t n;
+ {
+ register int i;
+ register char *r;
diff --git a/debian/patches/deb-bash-config.diff b/debian/patches/deb-bash-config.diff
new file mode 100644
index 0000000..327682e
--- /dev/null
+++ b/debian/patches/deb-bash-config.diff
@@ -0,0 +1,52 @@
+# DP: Changed compile time configuration options:
+# DP:
+# DP: - Set the default path to comply with Debian policy
+# DP:
+# DP: - Enable System-wide .bashrc file for interactive shells.
+# DP:
+# DP: - Enable System-wide .bash.logout file for interactive shells.
+# DP:
+# DP: - make non-interactive shells begun with argv[0][0] == '-'
+# DP: run the startup files when not in posix mode.
+# DP:
+# DP: - try to check whether bash is being run by sshd and source
+# DP: the .bashrc if so (like the rshd behavior).
+# DP:
+# DP: - don't define a default DEFAULT_MAIL_DIRECTORY, because it
+# DP: can cause a timeout on NFS mounts.
+
+--- a/config-bot.h
++++ b/config-bot.h
+@@ -196,4 +196,4 @@
+ /******************************************************************/
+
+ /* If you don't want bash to provide a default mail file to check. */
+-/* #undef DEFAULT_MAIL_DIRECTORY */
++#undef DEFAULT_MAIL_DIRECTORY
+--- a/config-top.h
++++ b/config-top.h
+@@ -80,20 +80,20 @@
+ #define KSH_COMPATIBLE_SELECT
+
+ /* System-wide .bashrc file for interactive shells. */
+-/* #define SYS_BASHRC "/etc/bash.bashrc" */
++#define SYS_BASHRC "/etc/bash.bashrc"
+
+ /* System-wide .bash_logout for login shells. */
+-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
++#define SYS_BASH_LOGOUT "/etc/bash.bash_logout"
+
+ /* Define this to make non-interactive shells begun with argv[0][0] == '-'
+ run the startup files when not in posix mode. */
+-/* #define NON_INTERACTIVE_LOGIN_SHELLS */
++#define NON_INTERACTIVE_LOGIN_SHELLS
+
+ /* Define this if you want bash to try to check whether it's being run by
+ sshd and source the .bashrc if so (like the rshd behavior). This checks
+ for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
+ which can be fooled under certain not-uncommon circumstances. */
+-/* #define SSH_SOURCE_BASHRC */
++#define SSH_SOURCE_BASHRC
+
+ /* Define if you want the case-capitalizing operators (~[~]) and the
+ `capcase' variable attribute (declare -c). */
diff --git a/debian/patches/deb-examples.diff b/debian/patches/deb-examples.diff
new file mode 100644
index 0000000..4c001b8
--- /dev/null
+++ b/debian/patches/deb-examples.diff
@@ -0,0 +1,14 @@
+# DP: document readline header location on Debian systems
+
+--- a/examples/loadables/README
++++ b/examples/loadables/README
+@@ -32,6 +32,9 @@
+ guide'. The file template.c provides a template to use for creating
+ new loadable builtins.
+
++On Debian GNU/Linux systems, the bash headers are in /usr/include/bash.
++The appropriate options are already set in the example Makefile.
++
+ basename.c Return non-directory portion of pathname.
+ cat.c cat(1) replacement with no options - the way cat was intended.
+ cut.c cut(1) replacement.
diff --git a/debian/patches/exec-redirections-doc.diff b/debian/patches/exec-redirections-doc.diff
new file mode 100644
index 0000000..7e6529d
--- /dev/null
+++ b/debian/patches/exec-redirections-doc.diff
@@ -0,0 +1,29 @@
+Index: b/doc/bash.1
+===================================================================
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -3633,6 +3633,10 @@
+ Redirections using file descriptors greater than 9 should be used with
+ care, as they may conflict with file descriptors the shell uses
+ internally.
++.PP
++Note that the
++.B exec
++builtin command can make redirections take effect in the current shell.
+ .SS Redirecting Input
+ .PP
+ Redirection of input causes the file whose name results from
+Index: b/doc/bashref.texi
+===================================================================
+--- a/doc/bashref.texi
++++ b/doc/bashref.texi
+@@ -2555,6 +2555,9 @@
+ care, as they may conflict with file descriptors the shell uses
+ internally.
+
++Note that the @code{exec} builtin command can make redirections take
++effect in the current shell.
++
+ @subsection Redirecting Input
+ Redirection of input causes the file whose name results from
+ the expansion of @var{word}
diff --git a/debian/patches/input-err.diff b/debian/patches/input-err.diff
new file mode 100644
index 0000000..ee9ed55
--- /dev/null
+++ b/debian/patches/input-err.diff
@@ -0,0 +1,15 @@
+# DP: Define PGRP_PIPE to avoid race condition.
+
+Index: b/input.c
+===================================================================
+--- a/input.c
++++ b/input.c
+@@ -509,7 +509,7 @@
+ if (nr == 0)
+ bp->b_flag |= B_EOF;
+ else
+- bp->b_flag |= B_ERROR;
++ fatal_error("error reading input file: %s", strerror(errno));
+ return (EOF);
+ }
+
diff --git a/debian/patches/man-arithmetic.diff b/debian/patches/man-arithmetic.diff
new file mode 100644
index 0000000..3c150d5
--- /dev/null
+++ b/debian/patches/man-arithmetic.diff
@@ -0,0 +1,16 @@
+# DP: document deprecated syntax for arithmetic evaluation.
+
+Index: b/doc/bash.1
+===================================================================
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -3152,6 +3152,9 @@
+ \fB$((\fP\fIexpression\fP\fB))\fP
+ .RE
+ .PP
++The old format \fB$[\fP\fIexpression\fP\fB]\fP is deprecated and will
++be removed in upcoming versions of bash.
++.PP
+ The
+ .I expression
+ is treated as if it were within double quotes, but a double quote
diff --git a/debian/patches/man-bash.diff b/debian/patches/man-bash.diff
new file mode 100644
index 0000000..30da443
--- /dev/null
+++ b/debian/patches/man-bash.diff
@@ -0,0 +1,11 @@
+--- a/bash/doc/bash.1
++++ b/bash/doc/bash.1
+@@ -6420,7 +6420,7 @@
+ .IR string .
+ .TP
+ .B !?\fIstring\fR\fB[?]\fR
+-Refer to the most recent command preceding the current postition in the
++Refer to the most recent command preceding the current position in the
+ history list containing
+ .IR string .
+ The trailing \fB?\fP may be omitted if
diff --git a/debian/patches/man-bashlogout.diff b/debian/patches/man-bashlogout.diff
new file mode 100644
index 0000000..a7f57dc
--- /dev/null
+++ b/debian/patches/man-bashlogout.diff
@@ -0,0 +1,16 @@
+# DP: document /etc/bash.bashrc in bash man page
+
+Index: b/doc/bash.1
+===================================================================
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -10253,6 +10253,9 @@
+ .FN /etc/bash.bashrc
+ The systemwide per-interactive-shell startup file
+ .TP
++.FN /etc/bash.bash.logout
++The systemwide login shell cleanup file, executed when a login shell exits
++.TP
+ .FN ~/.bash_profile
+ The personal initialization file, executed for login shells
+ .TP
diff --git a/debian/patches/man-bashrc.diff b/debian/patches/man-bashrc.diff
new file mode 100644
index 0000000..b0ea9ed
--- /dev/null
+++ b/debian/patches/man-bashrc.diff
@@ -0,0 +1,66 @@
+# DP: document /etc/bash.bashrc in bash man page
+
+Index: b/doc/bash.1
+===================================================================
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -182,7 +182,9 @@
+ .PD
+ Execute commands from
+ .I file
+-instead of the standard personal initialization file
++instead of the system wide initialization file
++.I /etc/bash.bashrc
++and the standard personal initialization file
+ .I ~/.bashrc
+ if the shell is interactive (see
+ .SM
+@@ -213,7 +215,9 @@
+ below).
+ .TP
+ .B \-\-norc
+-Do not read and execute the personal initialization file
++Do not read and execute the system wide initialization file
++.I /etc/bash.bashrc
++and the personal initialization file
+ .I ~/.bashrc
+ if the shell is interactive.
+ This option is on by default if the shell is invoked as
+@@ -326,13 +330,15 @@
+ .PP
+ When an interactive shell that is not a login shell is started,
+ .B bash
+-reads and executes commands from \fI~/.bashrc\fP, if that file exists.
++reads and executes commands from \fI/etc/bash.bashrc\fP and \fI~/.bashrc\fP,
++if these files exist.
+ This may be inhibited by using the
+ .B \-\-norc
+ option.
+ The \fB\-\-rcfile\fP \fIfile\fP option will force
+ .B bash
+-to read and execute commands from \fIfile\fP instead of \fI~/.bashrc\fP.
++to read and execute commands from \fIfile\fP instead of
++\fI/etc/bash.bashrc\fP and \fI~/.bashrc\fP.
+ .PP
+ When
+ .B bash
+@@ -418,7 +424,8 @@
+ If
+ .B bash
+ determines it is being run in this fashion, it reads and executes
+-commands from \fI~/.bashrc\fP, if that file exists and is readable.
++commands from \fI~/.bashrc\fP and \fI~/.bashrc\fP, if these files
++exist and are readable.
+ It will not do this if invoked as \fBsh\fP.
+ The
+ .B \-\-norc
+@@ -10243,6 +10250,9 @@
+ .FN /etc/profile
+ The systemwide initialization file, executed for login shells
+ .TP
++.FN /etc/bash.bashrc
++The systemwide per-interactive-shell startup file
++.TP
+ .FN ~/.bash_profile
+ The personal initialization file, executed for login shells
+ .TP
diff --git a/debian/patches/man-builtin.dpatch b/debian/patches/man-builtin.dpatch
new file mode 100644
index 0000000..6abaef8
--- /dev/null
+++ b/debian/patches/man-builtin.dpatch
@@ -0,0 +1,29 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: fix man page include
+
+--- doc/builtins.1~ Mon Nov 29 22:30:13 1999
++++ doc/builtins.1 Tue Aug 1 21:54:06 2000
+@@ -10,6 +10,6 @@
+ ulimit, umask, unalias, unset, until, wait, while \- bash built-in commands, see \fBbash\fR(1)
+ .SH BASH BUILTIN COMMANDS
+ .nr zZ 1
+-.so bash.1
++.so /usr/share/man/man1/bash.1
+ .SH SEE ALSO
+ bash(1), sh(1)
diff --git a/debian/patches/man-fignore.diff b/debian/patches/man-fignore.diff
new file mode 100644
index 0000000..808963c
--- /dev/null
+++ b/debian/patches/man-fignore.diff
@@ -0,0 +1,17 @@
+# DP: bash(1): mention quoting when assigning to FIGNORE
+
+Index: b/doc/bash.1
+===================================================================
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -1997,7 +1997,9 @@
+ is excluded from the list of matched filenames.
+ A sample value is
+ .if t \f(CW".o:~"\fP.
+-.if n ".o:~".
++.if n ".o:~"
++(Quoting is needed when assigning a value to this variable,
++which contains tildes).
+ .TP
+ .B FUNCNEST
+ If set to a numeric value greater than 0, defines a maximum function
diff --git a/debian/patches/man-nocaseglob.diff b/debian/patches/man-nocaseglob.diff
new file mode 100644
index 0000000..257e4ed
--- /dev/null
+++ b/debian/patches/man-nocaseglob.diff
@@ -0,0 +1,17 @@
+# DP: Clarify documentation about case-insensitive pathname expansion
+
+Index: b/doc/bash.1
+===================================================================
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -3315,6 +3315,10 @@
+ .B nocaseglob
+ is enabled, the match is performed without regard to the case
+ of alphabetic characters.
++Note that when using range expressions like
++[a-z] (see below), letters of the other case may be included,
++depending on the setting of
++.B LC_COLLATE.
+ When a pattern is used for pathname expansion,
+ the character
+ .B ``.''
diff --git a/debian/patches/man-test.diff b/debian/patches/man-test.diff
new file mode 100644
index 0000000..ae9c8bd
--- /dev/null
+++ b/debian/patches/man-test.diff
@@ -0,0 +1,15 @@
+# DP: document conditional file expressions acting on the target of
+# DP: symbolic links as well (except -h, -L).
+
+--- a/builtins/test.def
++++ b/builtins/test.def
+@@ -64,6 +64,9 @@
+
+ FILE1 -ef FILE2 True if file1 is a hard link to file2.
+
++All file operators except -h and -L are acting on the target of a symbolic
++link, not on the symlink itself, if FILE is a symbolic link.
++
+ String operators:
+
+ -z STRING True if string is empty.
diff --git a/debian/patches/man-test2.diff b/debian/patches/man-test2.diff
new file mode 100644
index 0000000..285adcb
--- /dev/null
+++ b/debian/patches/man-test2.diff
@@ -0,0 +1,46 @@
+# DP: Document handling of parameters of the test builtin.
+
+Index: b/builtins/test.def
+===================================================================
+--- a/builtins/test.def
++++ b/builtins/test.def
+@@ -99,6 +99,9 @@
+ less-than, less-than-or-equal, greater-than, or greater-than-or-equal
+ than ARG2.
+
++See the bash manual page bash(1) for the handling of parameters (i.e.
++missing parameters).
++
+ Exit Status:
+ Returns success if EXPR evaluates to true; fails if EXPR evaluates to
+ false or an invalid argument is given.
+Index: b/doc/bash.1
+===================================================================
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -712,6 +712,10 @@
+ .if n .sp 1
+ When used with \fB[[\fP, the \fB<\fP and \fB>\fP operators sort
+ lexicographically using the current locale.
++.PP
++See the description of the \fItest\fP builtin command (section SHELL
++BUILTIN COMMANDS below) for the handling of parameters (i.e.
++missing parameters).
+ .if t .sp 0.5
+ .if n .sp 1
+ When the \fB==\fP and \fB!=\fP operators are used, the string to the
+Index: b/doc/bashref.texi
+===================================================================
+--- a/doc/bashref.texi
++++ b/doc/bashref.texi
+@@ -6448,6 +6448,10 @@
+ Unless otherwise specified, primaries that operate on files follow symbolic
+ links and operate on the target of the link, rather than the link itself.
+
++See the description of the @code{test} builtin command (section
++@pxref{Bash Builtins} below) for the handling of parameters
++(i.e. missing parameters).
++
+ @table @code
+ @item -a @var{file}
+ True if @var{file} exists.
diff --git a/debian/patches/man-vx-opts.dpatch b/debian/patches/man-vx-opts.dpatch
new file mode 100644
index 0000000..e85b350
--- /dev/null
+++ b/debian/patches/man-vx-opts.dpatch
@@ -0,0 +1,34 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: document -v / -x options
+
+--- ./doc/bash.1~ Wed Jan 20 22:48:04 1999
++++ ./doc/bash.1 Sun Nov 14 13:26:59 1999
+@@ -104,6 +104,12 @@
+ This option allows the positional parameters to be set
+ when invoking an interactive shell.
+ .TP
++.B \-v
++Print shell input lines as they are read.
++.TP
++.B \-x
++Print commands and their arguments as they are executed.
++.TP
+ .B \-D
+ A list of all double-quoted strings preceded by \fB$\fP
+ is printed on the standard ouput.
diff --git a/debian/patches/no-brk-caching.diff b/debian/patches/no-brk-caching.diff
new file mode 100644
index 0000000..dc4ba85
--- /dev/null
+++ b/debian/patches/no-brk-caching.diff
@@ -0,0 +1,47 @@
+# DP: Don't cache the value of brk between sbrk calls.
+
+--- a/lib/malloc/malloc.c
++++ b/lib/malloc/malloc.c
+@@ -227,8 +227,6 @@
+ static int pagebucket; /* bucket for requests a page in size */
+ static int maxbuck; /* highest bucket receiving allocation request. */
+
+-static char *memtop; /* top of heap */
+-
+ static const unsigned long binsizes[NBUCKETS] = {
+ 8UL, 16UL, 32UL, 64UL, 128UL, 256UL, 512UL, 1024UL, 2048UL, 4096UL,
+ 8192UL, 16384UL, 32768UL, 65536UL, 131072UL, 262144UL, 524288UL,
+@@ -538,7 +536,6 @@
+ siz = binsize (nu);
+ /* Should check for errors here, I guess. */
+ sbrk (-siz);
+- memtop -= siz;
+
+ #ifdef MALLOC_STATS
+ _mstats.nsbrk++;
+@@ -633,8 +630,6 @@
+ if ((long)mp == -1)
+ goto morecore_done;
+
+- memtop += sbrk_amt;
+-
+ /* shouldn't happen, but just in case -- require 8-byte alignment */
+ if ((long)mp & MALIGN_MASK)
+ {
+@@ -684,7 +679,7 @@
+ Some of this partial page will be wasted space, but we'll use as
+ much as we can. Once we figure out how much to advance the break
+ pointer, go ahead and do it. */
+- memtop = curbrk = sbrk (0);
++ curbrk = sbrk (0);
+ sbrk_needed = pagesz - ((long)curbrk & (pagesz - 1)); /* sbrk(0) % pagesz */
+ if (sbrk_needed < 0)
+ sbrk_needed += pagesz;
+@@ -699,7 +694,6 @@
+ curbrk = sbrk (sbrk_needed);
+ if ((long)curbrk == -1)
+ return -1;
+- memtop += sbrk_needed;
+
+ /* Take the memory which would otherwise be wasted and populate the most
+ popular bin (2 == 32 bytes) with it. Add whatever we need to curbrk
diff --git a/debian/patches/pgrp-pipe.diff b/debian/patches/pgrp-pipe.diff
new file mode 100644
index 0000000..ccc9bb3
--- /dev/null
+++ b/debian/patches/pgrp-pipe.diff
@@ -0,0 +1,11 @@
+# DP: Define PGRP_PIPE to avoid race condition.
+
+--- a/config-bot.h
++++ b/config-bot.h
+@@ -197,3 +197,6 @@
+
+ /* If you don't want bash to provide a default mail file to check. */
+ #undef DEFAULT_MAIL_DIRECTORY
++
++/* Bug #224543 */
++#define PGRP_PIPE 1
diff --git a/debian/patches/privmode.diff b/debian/patches/privmode.diff
new file mode 100644
index 0000000..d138669
--- /dev/null
+++ b/debian/patches/privmode.diff
@@ -0,0 +1,19 @@
+# DP: XXX missing description
+# DP:
+# DP: Comment from Chet Ramey <chet@nike.ins.cwru.edu>:
+# DP:
+# DP: Nope. This will allow setuid scripts if not called as `sh' and not
+# DP: called with the -p option. I won't install this.
+
+
+--- a/shell.c
++++ b/shell.c
+@@ -492,7 +492,7 @@
+ if (dump_translatable_strings)
+ read_but_dont_execute = 1;
+
+- if (running_setuid && privileged_mode == 0)
++ if (running_setuid && privileged_mode == 0 && act_like_sh == 0)
+ disable_priv_mode ();
+
+ /* Need to get the argument to a -c option processed in the
diff --git a/debian/patches/random.dpatch b/debian/patches/random.dpatch
new file mode 100644
index 0000000..6304468
--- /dev/null
+++ b/debian/patches/random.dpatch
@@ -0,0 +1,107 @@
+#! /bin/sh -e
+
+dir=.
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir=$3
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p1 < $0
+ echo '2.05' > $dir/_distribution
+ echo '0' > $dir/_patchlevel
+ cd $dir && autoconf
+ rm -f $dir/_distribution $dir/_patchlevel
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
+ rm -f $dir/configure $dir/_distribution $dir/_patchlevel
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: use the system random functions
+
+diff -urb bash.orig/config.h.in bash/config.h.in
+--- bash.orig/config.h.in 2003-09-22 14:42:35.000000000 +0200
++++ bash/config.h.in 2003-09-28 00:27:15.000000000 +0200
+@@ -606,6 +606,9 @@
+ /* Define if you have the putenv function. */
+ #undef HAVE_PUTENV
+
++/* Define if you have the random function. */
++#undef HAVE_RANDOM
++
+ /* Define if you have the readlink function. */
+ #undef HAVE_READLINK
+
+@@ -696,6 +699,9 @@
+ /* Define if you have the strsignal function or macro. */
+ #undef HAVE_STRSIGNAL
+
++/* Define if you have the srandom function. */
++#undef HAVE_SRANDOM
++
+ /* Define if you have the sysconf function. */
+ #undef HAVE_SYSCONF
+
+diff -urb bash.orig/variables.c bash/variables.c
+--- bash.orig/variables.c 2003-07-31 16:28:57.000000000 +0200
++++ bash/variables.c 2003-09-28 00:27:15.000000000 +0200
+@@ -1098,16 +1098,22 @@
+ static unsigned long rseed = 1;
+ static int last_random_value;
+
+-/* A linear congruential random number generator based on the example
+- one in the ANSI C standard. This one isn't very good, but a more
+- complicated one is overkill. */
++/* Use the random number genrator provided by the standard C library,
++ else use a linear congruential random number generator based on the
++ ANSI C standard. This one isn't very good (the values are alternately
++ odd and even, for example), but a more complicated one is overkill. */
+
+ /* Returns a pseudo-random number between 0 and 32767. */
+ static int
+ brand ()
+ {
++#if defined(HAVE_RANDOM)
++ rseed = (unsigned int) (labs(random()) & 32767);
++ return rseed;
++#else
+ rseed = rseed * 1103515245 + 12345;
+ return ((unsigned int)((rseed >> 16) & 32767)); /* was % 32768 */
++#endif
+ }
+
+ /* Set the random number generator seed to SEED. */
+@@ -1115,8 +1121,12 @@
+ sbrand (seed)
+ unsigned long seed;
+ {
++#if defined(HAVE_SRANDOM)
++ srandom(seed);
++#else
+ rseed = seed;
+ last_random_value = 0;
++#endif
+ }
+
+ static SHELL_VAR *
+--- bash/configure.in~ 2004-03-02 00:04:29.000000000 +0100
++++ bash/configure.in 2004-03-02 00:05:48.000000000 +0100
+@@ -667,6 +667,9 @@
+
+ AC_FUNC_MKTIME
+
++dnl checks for random functions
++AC_CHECK_FUNCS(random srandom)
++
+ dnl
+ dnl Checks for lib/intl and related code (uses some of the output from
+ dnl AM_GNU_GETTEXT)
diff --git a/debian/patches/rbash-manpage.diff b/debian/patches/rbash-manpage.diff
new file mode 100644
index 0000000..0103e61
--- /dev/null
+++ b/debian/patches/rbash-manpage.diff
@@ -0,0 +1,12 @@
+# DP: doc/rbash.1: fix bash(1) reference
+
+--- a/doc/rbash.1
++++ b/doc/rbash.1
+@@ -3,6 +3,6 @@
+ rbash \- restricted bash, see \fBbash\fR(1)
+ .SH RESTRICTED SHELL
+ .nr zY 1
+-.so bash.1
++.so man1/bash.1
+ .SH SEE ALSO
+ bash(1)
diff --git a/debian/patches/rl-del-backspace-policy.dpatch b/debian/patches/rl-del-backspace-policy.dpatch
new file mode 100644
index 0000000..ec56b43
--- /dev/null
+++ b/debian/patches/rl-del-backspace-policy.dpatch
@@ -0,0 +1,48 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: Handle Debian Backspace/Delete keyboard policy
+
+diff -urb bash.orig/lib/readline/terminal.c bash/lib/readline/terminal.c
+--- bash.orig/lib/readline/terminal.c 2003-09-18 17:03:42.000000000 +0200
++++ bash/lib/readline/terminal.c 2003-09-27 23:25:59.000000000 +0200
+@@ -148,6 +148,9 @@
+ /* Insert key */
+ static char *_rl_term_kI;
+
++/* The key sequence sent by the Delete key, if any. */
++static char *_rl_term_kD;
++
+ /* Cursor control */
+ static char *_rl_term_vs; /* very visible */
+ static char *_rl_term_ve; /* normal */
+@@ -314,6 +317,7 @@
+ { "ic", &_rl_term_ic },
+ { "im", &_rl_term_im },
+ { "kH", &_rl_term_kH }, /* home down ?? */
++ { "kD", &_rl_term_kD }, /* delete */
+ { "kI", &_rl_term_kI }, /* insert */
+ { "kd", &_rl_term_kd },
+ { "ke", &_rl_term_ke }, /* end keypad mode */
+@@ -492,6 +496,7 @@
+
+ rl_bind_keyseq_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */
+ rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line); /* End */
++ rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete); /* Delete */
+
+ _rl_keymap = xkeymap;
+ }
diff --git a/debian/patches/rl-examples-bdb.dpatch b/debian/patches/rl-examples-bdb.dpatch
new file mode 100644
index 0000000..33cca15
--- /dev/null
+++ b/debian/patches/rl-examples-bdb.dpatch
@@ -0,0 +1,30 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: Modified readline examples to properly build with Debian setup.
+
+--- ./lib/readline/examples/rl.c~ Mon Nov 8 22:22:03 1999
++++ ./lib/readline/examples/rl.c Fri Dec 31 17:34:30 1999
+@@ -11,7 +11,7 @@
+
+ #include <stdio.h>
+ #include <sys/types.h>
+-#include "posixstat.h"
++#include <sys/stat.h>
+
+ #if defined (READLINE_LIBRARY)
+ # include "readline.h"
diff --git a/debian/patches/rl-header.dpatch b/debian/patches/rl-header.dpatch
new file mode 100644
index 0000000..d147813
--- /dev/null
+++ b/debian/patches/rl-header.dpatch
@@ -0,0 +1,28 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: include stdio.h in readline.h
+--- lib/readline/readline.h~ Thu Aug 5 14:10:59 1999
++++ lib/readline/readline.h Mon Oct 9 20:32:56 2000
+@@ -32,6 +32,7 @@
+ # include "keymaps.h"
+ # include "tilde.h"
+ #else
++# include <stdio.h>
+ # include <readline/rlstdc.h>
+ # include <readline/keymaps.h>
+ # include <readline/tilde.h>
diff --git a/debian/patches/rl-setenv.dpatch b/debian/patches/rl-setenv.dpatch
new file mode 100644
index 0000000..9ae1d08
--- /dev/null
+++ b/debian/patches/rl-setenv.dpatch
@@ -0,0 +1,30 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: Prefer setenv over putenv
+
+--- lib/readline/shell.c~ 2004-10-17 13:07:37.000000000 +0200
++++ lib/readline/shell.c 2004-10-17 13:06:48.000000000 +0200
+@@ -122,7 +122,7 @@
+ {
+ char *b;
+
+-#if defined (HAVE_PUTENV)
++#if 0
+ b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1);
+ sprintf (b, "LINES=%d", lines);
+ putenv (b);
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..f769de5
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,51 @@
+bash43-001.diff
+bash43-002.diff
+bash43-003.diff
+bash43-004.diff
+bash43-005.diff
+bash43-006.diff
+bash43-007.diff
+bash43-008.diff
+bash43-009.diff
+bash43-010.diff
+bash43-011.diff
+bash43-012.diff
+bash43-013.diff
+bash43-014.diff
+bash43-015.diff
+bash43-016.diff
+bash43-017.diff
+bash43-018.diff
+bash43-019.diff
+bash43-020.diff
+bash43-021.diff
+bash43-022.diff
+bash43-023.diff
+bash43-024.diff
+bash43-025.diff
+bash43-026.diff
+bash43-027.diff
+bash43-028.diff
+bash43-029.diff
+bash43-030.diff
+bashbug-editor.diff
+deb-bash-config.diff
+deb-examples.diff
+man-arithmetic.diff
+man-fignore.diff
+man-bashrc.diff
+man-bashlogout.diff
+man-nocaseglob.diff
+man-test.diff
+man-test2.diff
+privmode.diff
+rbash-manpage.diff
+bash-default-editor.diff
+bash-subst-param-length.diff
+pgrp-pipe.diff
+input-err.diff
+exec-redirections-doc.diff
+bash-aliases-repeat.diff
+# no-brk-caching.diff
+use-system-texi2html.diff
+bzero.diff
diff --git a/debian/patches/use-system-texi2html.diff b/debian/patches/use-system-texi2html.diff
new file mode 100644
index 0000000..274d9e2
--- /dev/null
+++ b/debian/patches/use-system-texi2html.diff
@@ -0,0 +1,15 @@
+Index: b/doc/Makefile.in
+===================================================================
+--- a/doc/Makefile.in
++++ b/doc/Makefile.in
+@@ -70,8 +70,8 @@
+ TEX = tex
+
+ MAKEINFO = makeinfo
+-TEXI2DVI = ${SUPPORT_SRCDIR}/texi2dvi
+-TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html
++TEXI2DVI = texi2dvi
++TEXI2HTML = texi2html
+ MAN2HTML = ${BUILD_DIR}/support/man2html
+ HTMLPOST = ${srcdir}/htmlpost.sh
+ INFOPOST = ${srcdir}/infopost.sh
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..860e557
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,450 @@
+#! /usr/bin/make -f
+# -*- makefile -*-
+
+#export DH_VERBOSE=1
+
+unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES
+
+# architecture dependent variables
+vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1)))
+DPKG_VARS := $(shell dpkg-architecture)
+DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE)
+DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH)
+DEB_HOST_ARCH_OS ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_OS)
+DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU)
+DEB_HOST_GNU_SYSTEM ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM)
+DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE)
+DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH)
+
+VERSION := 4.2
+#PKGVERSION := $(shell dpkg-parsechangelog \
+# | sed -n '/Version:/s/\(.* \)\(.*\)-2\(.*\)/\2\3/p')
+#PKGVERSION := 3.0
+#dpkg_ctrl_args := -v$(PKGVERSION) -VBinary-Version=$(PKGVERSION)
+
+with_gfdl = yes
+
+ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+ CC = $(DEB_HOST_GNU_TYPE)-gcc
+else
+ CC = gcc
+endif
+
+ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+ ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+ STRIP = $(DEB_HOST_GNU_TYPE)-strip
+ else
+ STRIP = strip
+ endif
+endif
+
+
+dpkg_buildflags = DEB_CFLAGS_MAINT_APPEND=-Wall dpkg-buildflags
+CFLAGS := $(shell $(dpkg_buildflags) --get CFLAGS)
+CPPFLAGS := $(shell $(dpkg_buildflags) --get CPPFLAGS)
+LDFLAGS := $(shell $(dpkg_buildflags) --get LDFLAGS)
+
+SHELL = /bin/bash
+YACC = bison -y
+
+IX = install -o 0 -g 0
+ID = install -o 0 -g 0 -m 644
+
+# built with installed libreadline?
+with_installed_rl = no
+
+debflags =
+
+p = bash
+p_stat = bash-static
+p_bins = bash-builtins
+p_doc = bash-doc
+
+d = debian/$(p)
+d_stat = debian/$(p_stat)
+d_bins = debian/$(p_bins)
+d_doc = debian/$(p_doc)
+
+termcap_lib := $(if $(wildcard /usr/lib/libtinfo.so /usr/lib/$(DEB_HOST_MULTIARCH)/libtinfo.so), \
+ -ltinfo, \
+ -lncurses)
+
+conf_args = \
+ --with-curses \
+ --enable-largefile \
+ --prefix=/usr \
+ --infodir=/usr/share/info \
+ --mandir=/usr/share/man
+ifeq ($(with_installed_rl),yes)
+ conf_args += --with-installed-readline
+endif
+ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
+ conf_args += --build $(DEB_HOST_GNU_TYPE)
+else
+ conf_args += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
+endif
+
+static_conf_args := $(conf_args) \
+ --enable-static-link \
+ --without-bash-malloc \
+
+#build: bash-build static-build preinst-build check
+build: before-build bash-build static-build preinst-build check
+build-arch: build
+build-indep: build
+
+before-build:
+ mkdir -p stamps
+ : # see #327477, needed to have HAVE_DEV_STDIN defined
+ (test -d /dev/fd && test -r /dev/stdin < /dev/null) \
+ || (test -d /proc/self/fd && test -r /dev/stdin < /dev/null)
+ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux freebsd))
+ $(CC) $(CFLAGS) $(LDFLAGS) $(CPPFLAGS) -o clear_console \
+ debian/clear_console.c $(termcap_lib)
+endif
+
+# ---------------------------------------------------------------------------
+# build standard bash
+
+bash-build:
+ $(MAKE) -f debian/rules do-build-bash \
+ bash_src=. \
+ build=bash \
+ configure_args="$(conf_args)"
+bash-configure:
+ $(MAKE) -f debian/rules do-configure-bash \
+ bash_src=. \
+ build=bash \
+ configure_args="$(conf_args)"
+
+# ---------------------------------------------------------------------------
+# build static bash
+
+static-build:
+ $(MAKE) -f debian/rules do-build-static \
+ bash_src=. \
+ build=static \
+ configure_args="$(static_conf_args)"
+static-configure:
+ $(MAKE) -f debian/rules do-configure-static \
+ bash_src=. \
+ build=static \
+ configure_args="$(static_conf_args)"
+
+# ---------------------------------------------------------------------------
+
+bash-doc-build: stamps/stamp-build-bash-doc
+stamps/stamp-build-bash-doc:
+ rm -f bash/doc/bashref.info
+ $(MAKE) -C build-bash/doc info html
+ $(MAKE) -C build-bash/doc bash.pdf bashref.pdf
+ touch stamps/stamp-build-bash-doc
+
+# ---------------------------------------------------------------------------
+
+check: stamps/stamp-check
+stamps/stamp-check: bash-build
+ @echo BEGIN test
+ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+ ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
+ -sh debian/locale-gen
+ LOCPATH=$(CURDIR)/locales \
+ time $(MAKE) -C build-bash test 2>&1 | tee build-bash/test-protocol
+ endif
+else
+ @echo Suppress 'make' test, because this is cross build
+endif
+ @echo END test
+ touch stamps/stamp-check
+
+# ---------------------------------------------------------------------------
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -rf stamps build-*
+ rm -f debian/bash.preinst debian/*.o
+ rm -f debian/README.Debian
+ rm -rf locales
+ rm -f clear_console
+ rm -rf .pc
+ dh_clean
+
+preinst-build: debian/bash.preinst
+
+PREINST_OBJECTS = debian/bash.preinst.o debian/bash.preinst-lib.o
+
+$(PREINST_OBJECTS): %.o: %.c debian/bash.preinst.h
+ $(CC) -c -o $@ $(CFLAGS) $(CPPFLAGS) $<
+
+debian/bash.preinst: $(PREINST_OBJECTS)
+ $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(PREINST_OBJECTS)
+ $(STRIP) -R .comment -R .note debian/bash.preinst
+
+# ---------------------------------------------------------------------------
+
+
+install: bash-install
+
+bash-install: bash-build stamps/stamp-install-bash
+stamps/stamp-install-bash: before-build stamps/stamp-build-bash
+ dh_testdir
+ dh_testroot
+ dh_clean -k -p$(p) -p$(p_doc) -p$(p_bins)
+ dh_installdirs -p$(p) \
+ bin \
+ etc/skel \
+ usr/share/doc/$(p)
+ dh_installdirs -p$(p_doc) \
+ usr/share/doc/$(p)
+ dh_installdirs -p$(p_bins) \
+ usr/share/doc/$(p)/examples/loadables \
+ usr/include/bash/{builtins,lib/{glob,tilde}}
+
+ifeq ($(with_gfdl),yes)
+# XXXXX
+# cp -p build-bash/doc/*.info bash/doc/
+endif
+
+ : # install it
+ $(MAKE) -C build-bash install \
+ YACC="$(YACC)" \
+ DESTDIR=$(CURDIR)/$(d)
+ mv $(d)/usr/bin/bash $(d)/bin/.
+ chmod 755 $(d)/usr/bin/bashbug
+ $(ID) debian/bashbug.1 $(d)/usr/share/man/man1/
+ifneq ($(with_gfdl),yes)
+ mkdir -p $(d)/usr/share/man/man1
+ cp -p bash/doc/bash.1 $(d)/usr/share/man/man1/bash.1
+endif
+ rm -f $(d)/usr/share/doc/bash/*.html
+ rm -f $(d)/usr/share/info/*.info
+ rm -f $(d)/usr/share/info/dir*
+
+ : # extra links
+ ln -sf bash $(d)/bin/rbash
+
+ : # skeleton files
+ $(ID) debian/etc.bash.bashrc $(d)/etc/bash.bashrc
+ $(ID) debian/skel.bashrc $(d)/etc/skel/.bashrc
+ $(ID) debian/skel.profile $(d)/etc/skel/.profile
+ $(ID) debian/skel.bash_logout $(d)/etc/skel/.bash_logout
+
+ : # clean_console
+ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux freebsd))
+ $(IX) clear_console $(d)/usr/bin/
+ $(ID) debian/clear_console.1 $(d)/usr/share/man/man1/
+endif
+
+ : # files for the bash-doc package
+
+ dh_installexamples -p$(p_doc) examples/*
+ mv $(d_doc)/usr/share/doc/$(p_doc)/examples \
+ $(d_doc)/usr/share/doc/$(p)/examples
+ rm -rf $(d_doc)/usr/share/doc/$(p)/examples/loadables
+ ln -sf ../$(p)/examples $(d_doc)/usr/share/doc/$(p_doc)/examples
+
+ rm -rf $(d_doc)/usr/share/doc/$(p)/examples/obashdb
+ cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 755 \
+ misc/aliasconv.*sh misc/cshtobash
+
+ cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 644 \
+ scripts/shprompt
+
+ : # files for the bash-builtins package
+ $(ID) include/*.h *.h $(d_bins)/usr/include/bash/
+ $(ID) build-bash/*.h $(d_bins)/usr/include/bash/
+ rm -f $(d_bins)/usr/include/bash/y.tab.h
+ $(ID) builtins/*.h $(d_bins)/usr/include/bash/builtins/
+ $(ID) lib/glob/*.h $(d_bins)/usr/include/bash/lib/glob/
+ $(ID) lib/tilde/*.h $(d_bins)/usr/include/bash/lib/tilde/
+ $(ID) examples/loadables/{README,*.c} \
+ $(d_bins)/usr/share/doc/$(p)/examples/loadables
+ $(ID) build-bash/examples/loadables/Makefile \
+ $(d_bins)/usr/share/doc/$(p)/examples/loadables
+ ln -sf bash $(d_bins)/usr/share/doc/$(p_bins)
+
+# cat debian/README stamps/stamp-patch > debian/README.Debian
+ cat debian/README > debian/README.Debian
+
+ touch stamps/stamp-install-bash
+
+binary-doc: bash-install bash-doc-build
+ dh_testdir
+ dh_testroot
+ mkdir -p $(d_doc)/usr/share/doc/$(p)
+ifeq ($(with_gfdl),yes)
+ dh_installdocs -p$(p_doc)
+ cp -p build-bash/doc/bashref.{html,pdf} $(d_doc)/usr/share/doc/$(p)/.
+ mkdir -p $(d_doc)/usr/share/info
+ cp -p build-bash/doc/bash.info $(d_doc)/usr/share/info/.
+ dh_link -p$(p_doc) \
+ /usr/share/doc/$(p)/bashref.html /usr/share/doc/$(p_doc)/bashref.html \
+ /usr/share/doc/$(p)/bashref.pdf /usr/share/doc/$(p_doc)/bashref.pdf
+else
+ dh_installdocs -p$(p_doc) -X.doc-base
+ rm -f $(d_doc)/usr/share/doc-base/bashref
+endif
+ rm -f $(d_doc)/usr/share/info/dir*
+ cp -p build-bash/doc/bash.html build-bash/doc/bash.pdf \
+ $(d_doc)/usr/share/doc/$(p)/
+ dh_link -p$(p_doc) \
+ /usr/share/doc/$(p)/bash.html /usr/share/doc/$(p_doc)/bash.html \
+ /usr/share/doc/$(p)/bash.pdf /usr/share/doc/$(p_doc)/bash.pdf
+ dh_installchangelogs -p$(p_doc) CWRU/changelog
+ dh_compress -p$(p_doc) -Xexamples -X.pdf
+ dh_fixperms -p$(p_doc)
+ dh_installdeb -p$(p_doc)
+ dh_gencontrol -p$(p_doc)
+ dh_md5sums -p$(p_doc)
+ dh_builddeb -p$(p_doc)
+
+binary-bash: bash-install debian/bash.preinst
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs -p$(p)
+ dh_installdocs -p$(p) \
+ CHANGES NEWS COMPAT doc/INTRO POSIX \
+ debian/{README.Debian,README.abs-guide,README.commands} \
+ debian/inputrc.arrows
+ install -D -m 644 debian/bash.overrides \
+ debian/bash/usr/share/lintian/overrides/bash
+ dh_installman -p$(p) doc/rbash.1 debian/bash-builtins.7
+ dh_installmenu -p$(p)
+ dh_strip -p$(p)
+ dh_compress -p$(p)
+ dh_fixperms -p$(p)
+ dh_shlibdeps -p$(p) -- -dPre-Depends $(d)/bin/bash debian/bash.preinst
+ dh_installdeb -p$(p)
+ dh_gencontrol -p$(p)
+ dh_md5sums -p$(p)
+ dh_builddeb -p$(p)
+
+# Even though it contains only headers and example files,
+# bash-builtins is NOT arch-independent because the config.h* files
+# differ on different archs.
+binary-builtins: bash-install
+ dh_testdir
+ dh_testroot
+ dh_compress -p$(p_bins) -Xexamples
+ dh_fixperms -p$(p_bins)
+ dh_installdeb -p$(p_bins)
+ dh_gencontrol -p$(p_bins)
+ dh_md5sums -p$(p_bins)
+ dh_builddeb -p$(p_bins)
+
+binary-static: static-build
+ dh_testdir
+ dh_testroot
+ dh_clean -k -p$(p_stat)
+ dh_installdirs -p$(p_stat) \
+ bin \
+ usr/share/man/man1
+ cp -p build-static/bash $(d_stat)/bin/bash-static
+ cp -p doc/bash.1 $(d_stat)/usr/share/man/man1/bash-static.1
+ dh_installdocs -p$(p_stat)
+ dh_installchangelogs -p$(p_stat)
+ install -D -m 644 debian/bash-static.overrides \
+ debian/bash-static/usr/share/lintian/overrides/bash-static
+ dh_strip -p$(p_stat)
+ dh_compress -p$(p_stat)
+ dh_fixperms -p$(p_stat)
+ dh_installdeb -p$(p_stat)
+ dh_gencontrol -p$(p_stat)
+ dh_md5sums -p$(p_stat)
+ dh_builddeb -p$(p_stat)
+
+binary-indep: binary-doc
+binary-arch: binary-bash binary-builtins binary-static
+binary: binary-indep binary-arch
+
+# ---------------------------------------------------------------------------
+# common rules for all bash build variations
+
+do-build-$(build): stamps/stamp-build-$(build)
+stamps/stamp-build-$(build): stamps/stamp-configure-$(build)
+ dh_testdir
+ifneq (,$(profiled_build))
+ $(MAKE) -C build-$(build) \
+ CFLAGS='$(CFLAGS) -fprofile-generate' \
+ YACC="$(YACC)" \
+ TERMCAP_LIB="$(termcap_lib)" \
+ deb_builddir=build-$(build)/ \
+ $(debflags)
+ -sh debian/locale-gen
+ cp debian/run-my-gprof bash/tests/
+ LOCPATH=$(CURDIR)/locales \
+ time $(MAKE) -C build-$(build) TESTSCRIPT=run-my-gprof test 2>&1 \
+ | tee build-bash/profile-protocol
+ $(MAKE) -C build-$(build) clean
+ rm -f build-$(build)/lib/malloc/malloc*.gc??
+ $(MAKE) -C build-$(build) \
+ CFLAGS='$(CFLAGS) -fprofile-use' \
+ YACC="$(YACC)" \
+ TERMCAP_LIB="$(termcap_lib)" \
+ deb_builddir=build-$(build)/ \
+ $(debflags)
+else
+ $(MAKE) -C build-$(build) \
+ YACC="$(YACC)" \
+ TERMCAP_LIB="$(termcap_lib)" \
+ deb_builddir=build-$(build)/ \
+ $(debflags)
+endif
+ifeq ($(with_gfdl),yes)
+ $(MAKE) -C build-$(build)/doc \
+ bash.info
+endif
+ touch stamps/stamp-build-$(build)
+
+do-configure-$(build): stamps/stamp-configure-$(build)
+stamps/stamp-configure-$(build):
+ dh_testdir
+ rm -rf build-$(build)
+ mkdir build-$(build)
+ cd build-$(build) && \
+ CC="$(CC)" \
+ CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \
+ YACC="$(YACC)" \
+ ../$(bash_src)/configure $(configure_args)
+ if ! grep -q '#define HAVE_DEV_STDIN 1' build-$(build)/config.h; then \
+ echo "HAVE_DEV_STDIN not defined, abortig build"; \
+ exit 1; \
+ fi
+ touch stamps/stamp-configure-$(build)
+
+update-patches:
+ export QUILT_PATCHES=$(patchdir); \
+ export QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"; \
+ export QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab"; \
+ while quilt push; do quilt refresh; done
+
+#unpack-$(bash_src): stamps/stamp-unpack-$(bash_src)
+#stamps/stamp-unpack-$(bash_src):
+# mkdir -p stamps
+# rm -rf bash-$(VERSION) $(bash_src)
+# rm -f stamps/stamp-patch-$(bash_src){,-*}
+# tar xf bash-$(VERSION)*.tar.xz
+# mv bash-$(VERSION) $(bash_src)
+# rm -f bash/y.tab.?
+# cp -p /usr/share/misc/config.* $(bash_src)/.
+# cp -p /usr/share/misc/config.* $(bash_src)/support/.
+# touch stamps/stamp-unpack-$(bash_src)
+
+remove-non-dfsg-files:
+ rm -f doc/article.*
+ rm -f doc/FAQ
+ rm -f doc/aosa-bash.pdf
+ rm -f doc/rose94.*
+
+.NOTPARALLEL: build
+.PHONY: unpack binary binary-arch binary-indep clean \
+ build bash-build static-build preinst-build \
+ check \
+ bash-configure static-configure \
+ binary-doc binary-bash binary-builtins binary-static \
+ install bash-install
+
+# Local Variables:
+# mode: makefile
+# end:
diff --git a/debian/run-my-gprof b/debian/run-my-gprof
new file mode 100644
index 0000000..7a495ba
--- /dev/null
+++ b/debian/run-my-gprof
@@ -0,0 +1,32 @@
+#! /bin/sh
+
+PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests'
+export PATH
+
+# unset BASH_ENV only if it is set
+[ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV
+# ditto for SHELLOPTS
+#[ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS
+
+: ${THIS_SH:=../bash}
+export THIS_SH
+
+${THIS_SH} ./version
+
+rm -f /tmp/xx
+
+echo Any output from any test, unless otherwise noted, indicates a possible anomaly
+
+echo Running tests as test load ...
+
+for x in run-*
+do
+ case $x in
+ $0|run-minimal|run-gprof|run-all) ;;
+ run-jobs|run-gprof) echo SKIP $x ;;
+ *.orig|*~) ;;
+ *) echo $x ; sh $x ;;
+ esac
+done
+
+exit 0
diff --git a/debian/skel.bash_logout b/debian/skel.bash_logout
new file mode 100644
index 0000000..de4f5f7
--- /dev/null
+++ b/debian/skel.bash_logout
@@ -0,0 +1,7 @@
+# ~/.bash_logout: executed by bash(1) when login shell exits.
+
+# when leaving the console clear the screen to increase privacy
+
+if [ "$SHLVL" = 1 ]; then
+ [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
+fi
diff --git a/debian/skel.bashrc b/debian/skel.bashrc
new file mode 100644
index 0000000..9346dd0
--- /dev/null
+++ b/debian/skel.bashrc
@@ -0,0 +1,113 @@
+# ~/.bashrc: executed by bash(1) for non-login shells.
+# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
+# for examples
+
+# If not running interactively, don't do anything
+case $- in
+ *i*) ;;
+ *) return;;
+esac
+
+# don't put duplicate lines or lines starting with space in the history.
+# See bash(1) for more options
+HISTCONTROL=ignoreboth
+
+# append to the history file, don't overwrite it
+shopt -s histappend
+
+# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
+HISTSIZE=1000
+HISTFILESIZE=2000
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS.
+shopt -s checkwinsize
+
+# If set, the pattern "**" used in a pathname expansion context will
+# match all files and zero or more directories and subdirectories.
+#shopt -s globstar
+
+# make less more friendly for non-text input files, see lesspipe(1)
+#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
+
+# set variable identifying the chroot you work in (used in the prompt below)
+if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
+ debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+# set a fancy prompt (non-color, unless we know we "want" color)
+case "$TERM" in
+ xterm-color) color_prompt=yes;;
+esac
+
+# uncomment for a colored prompt, if the terminal has the capability; turned
+# off by default to not distract the user: the focus in a terminal window
+# should be on the output of commands, not on the prompt
+#force_color_prompt=yes
+
+if [ -n "$force_color_prompt" ]; then
+ if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
+ # We have color support; assume it's compliant with Ecma-48
+ # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
+ # a case would tend to support setf rather than setaf.)
+ color_prompt=yes
+ else
+ color_prompt=
+ fi
+fi
+
+if [ "$color_prompt" = yes ]; then
+ PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
+else
+ PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
+fi
+unset color_prompt force_color_prompt
+
+# If this is an xterm set the title to user@host:dir
+case "$TERM" in
+xterm*|rxvt*)
+ PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
+ ;;
+*)
+ ;;
+esac
+
+# enable color support of ls and also add handy aliases
+if [ -x /usr/bin/dircolors ]; then
+ test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
+ alias ls='ls --color=auto'
+ #alias dir='dir --color=auto'
+ #alias vdir='vdir --color=auto'
+
+ #alias grep='grep --color=auto'
+ #alias fgrep='fgrep --color=auto'
+ #alias egrep='egrep --color=auto'
+fi
+
+# colored GCC warnings and errors
+#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
+
+# some more ls aliases
+#alias ll='ls -l'
+#alias la='ls -A'
+#alias l='ls -CF'
+
+# Alias definitions.
+# You may want to put all your additions into a separate file like
+# ~/.bash_aliases, instead of adding them here directly.
+# See /usr/share/doc/bash-doc/examples in the bash-doc package.
+
+if [ -f ~/.bash_aliases ]; then
+ . ~/.bash_aliases
+fi
+
+# enable programmable completion features (you don't need to enable
+# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
+# sources /etc/bash.bashrc).
+if ! shopt -oq posix; then
+ if [ -f /usr/share/bash-completion/bash_completion ]; then
+ . /usr/share/bash-completion/bash_completion
+ elif [ -f /etc/bash_completion ]; then
+ . /etc/bash_completion
+ fi
+fi
diff --git a/debian/skel.profile b/debian/skel.profile
new file mode 100644
index 0000000..c9db459
--- /dev/null
+++ b/debian/skel.profile
@@ -0,0 +1,22 @@
+# ~/.profile: executed by the command interpreter for login shells.
+# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
+# exists.
+# see /usr/share/doc/bash/examples/startup-files for examples.
+# the files are located in the bash-doc package.
+
+# the default umask is set in /etc/profile; for setting the umask
+# for ssh logins, install and configure the libpam-umask package.
+#umask 022
+
+# if running bash
+if [ -n "$BASH_VERSION" ]; then
+ # include .bashrc if it exists
+ if [ -f "$HOME/.bashrc" ]; then
+ . "$HOME/.bashrc"
+ fi
+fi
+
+# set PATH so it includes user's private bin if it exists
+if [ -d "$HOME/bin" ] ; then
+ PATH="$HOME/bin:$PATH"
+fi
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
new file mode 100644
index 0000000..1b45adf
--- /dev/null
+++ b/debian/source/lintian-overrides
@@ -0,0 +1,2 @@
+# No texinfo file has a gfdl with an invariant or cover text
+bash source: license-problem-gfdl-invariants
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..dd1998d
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=2
+ftp://ftp.gnu.org/gnu/bash/bash-([\d\.]*).tar.gz debian uupdate