]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Merge branch 'glibc-update2' of ssh://git.ipfire.org/pub/git/people/ms/ipfire-2.x...
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 19 Aug 2012 22:14:18 +0000 (18:14 -0400)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 19 Aug 2012 22:14:18 +0000 (18:14 -0400)
62 files changed:
config/rootfiles/common/zlib
config/rootfiles/packages/splix [deleted file]
lfs/bash
lfs/iproute2
lfs/ncurses
lfs/splix [deleted file]
lfs/zlib
make.sh
src/patches/bash-3.1-fixes-8.patch [deleted file]
src/patches/bash-3.1-login.patch [deleted file]
src/patches/bash/bash32-001 [new file with mode: 0644]
src/patches/bash/bash32-002 [new file with mode: 0644]
src/patches/bash/bash32-003 [new file with mode: 0644]
src/patches/bash/bash32-004 [new file with mode: 0644]
src/patches/bash/bash32-005 [new file with mode: 0644]
src/patches/bash/bash32-006 [new file with mode: 0644]
src/patches/bash/bash32-007 [new file with mode: 0644]
src/patches/bash/bash32-008 [new file with mode: 0644]
src/patches/bash/bash32-009 [new file with mode: 0644]
src/patches/bash/bash32-010 [new file with mode: 0644]
src/patches/bash/bash32-011 [new file with mode: 0644]
src/patches/bash/bash32-012 [new file with mode: 0644]
src/patches/bash/bash32-013 [new file with mode: 0644]
src/patches/bash/bash32-014 [new file with mode: 0644]
src/patches/bash/bash32-015 [new file with mode: 0644]
src/patches/bash/bash32-016 [new file with mode: 0644]
src/patches/bash/bash32-017 [new file with mode: 0644]
src/patches/bash/bash32-018 [new file with mode: 0644]
src/patches/bash/bash32-019 [new file with mode: 0644]
src/patches/bash/bash32-020 [new file with mode: 0644]
src/patches/bash/bash32-021 [new file with mode: 0644]
src/patches/bash/bash32-022 [new file with mode: 0644]
src/patches/bash/bash32-023 [new file with mode: 0644]
src/patches/bash/bash32-024 [new file with mode: 0644]
src/patches/bash/bash32-025 [new file with mode: 0644]
src/patches/bash/bash32-026 [new file with mode: 0644]
src/patches/bash/bash32-027 [new file with mode: 0644]
src/patches/bash/bash32-028 [new file with mode: 0644]
src/patches/bash/bash32-029 [new file with mode: 0644]
src/patches/bash/bash32-030 [new file with mode: 0644]
src/patches/bash/bash32-031 [new file with mode: 0644]
src/patches/bash/bash32-032 [new file with mode: 0644]
src/patches/bash/bash32-033 [new file with mode: 0644]
src/patches/bash/bash32-034 [new file with mode: 0644]
src/patches/bash/bash32-035 [new file with mode: 0644]
src/patches/bash/bash32-036 [new file with mode: 0644]
src/patches/bash/bash32-037 [new file with mode: 0644]
src/patches/bash/bash32-038 [new file with mode: 0644]
src/patches/bash/bash32-039 [new file with mode: 0644]
src/patches/bash/bash32-040 [new file with mode: 0644]
src/patches/bash/bash32-041 [new file with mode: 0644]
src/patches/bash/bash32-042 [new file with mode: 0644]
src/patches/bash/bash32-043 [new file with mode: 0644]
src/patches/bash/bash32-044 [new file with mode: 0644]
src/patches/bash/bash32-045 [new file with mode: 0644]
src/patches/bash/bash32-046 [new file with mode: 0644]
src/patches/bash/bash32-047 [new file with mode: 0644]
src/patches/bash/bash32-048 [new file with mode: 0644]
src/patches/bash/bash32-049 [new file with mode: 0644]
src/patches/bash/bash32-050 [new file with mode: 0644]
src/patches/bash/bash32-051 [new file with mode: 0644]
src/patches/ncurses-5.5-fixes-1.patch [deleted file]

index b275de54b94f24af488d45e6319563d9243794b0..8b95f121dd6dc13813a8748a0992237f725d716d 100644 (file)
@@ -1,7 +1,7 @@
 lib/libz.so.1
-lib/libz.so.1.2.3
+lib/libz.so.1.2.7
 #usr/include/zconf.h
 #usr/include/zlib.h
-#usr/lib/libz.a
+usr/lib/libz.a
 usr/lib/libz.so
 #usr/share/man/man3/zlib.3
diff --git a/config/rootfiles/packages/splix b/config/rootfiles/packages/splix
deleted file mode 100644 (file)
index f9c7579..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-usr/lib/cups/filter/pstoqpdl
-usr/lib/cups/filter/rastertoqpdl
-usr/share/cups/model/dell
-usr/share/cups/model/dell/1100.ppd
-usr/share/cups/model/dell/1100fr.ppd
-usr/share/cups/model/dell/1110.ppd
-usr/share/cups/model/dell/1110fr.ppd
-usr/share/cups/model/samsung
-usr/share/cups/model/samsung/clp200.ppd
-usr/share/cups/model/samsung/clp200fr.ppd
-usr/share/cups/model/samsung/clp300.ppd
-usr/share/cups/model/samsung/clp300fr.ppd
-usr/share/cups/model/samsung/clp500.ppd
-usr/share/cups/model/samsung/clp500fr.ppd
-usr/share/cups/model/samsung/clp510.ppd
-usr/share/cups/model/samsung/clp510fr.ppd
-usr/share/cups/model/samsung/clp550.ppd
-usr/share/cups/model/samsung/clp550fr.ppd
-usr/share/cups/model/samsung/clp600.ppd
-usr/share/cups/model/samsung/clp600fr.ppd
-usr/share/cups/model/samsung/clp610.ppd
-usr/share/cups/model/samsung/clp610fr.ppd
-usr/share/cups/model/samsung/clx216x.ppd
-usr/share/cups/model/samsung/clx216xfr.ppd
-usr/share/cups/model/samsung/clx2170.ppd
-usr/share/cups/model/samsung/clx2170fr.ppd
-usr/share/cups/model/samsung/clx3160.ppd
-usr/share/cups/model/samsung/clx3160fr.ppd
-usr/share/cups/model/samsung/ml1510.ppd
-usr/share/cups/model/samsung/ml1510fr.ppd
-usr/share/cups/model/samsung/ml1520.ppd
-usr/share/cups/model/samsung/ml1520fr.ppd
-usr/share/cups/model/samsung/ml1610.ppd
-usr/share/cups/model/samsung/ml1610fr.ppd
-usr/share/cups/model/samsung/ml1630.ppd
-usr/share/cups/model/samsung/ml1630fr.ppd
-usr/share/cups/model/samsung/ml1710.ppd
-usr/share/cups/model/samsung/ml1710fr.ppd
-usr/share/cups/model/samsung/ml1740.ppd
-usr/share/cups/model/samsung/ml1740fr.ppd
-usr/share/cups/model/samsung/ml1750.ppd
-usr/share/cups/model/samsung/ml1750fr.ppd
-usr/share/cups/model/samsung/ml2010.ppd
-usr/share/cups/model/samsung/ml2010fr.ppd
-usr/share/cups/model/samsung/ml2150.ppd
-usr/share/cups/model/samsung/ml2150fr.ppd
-usr/share/cups/model/samsung/ml2250.ppd
-usr/share/cups/model/samsung/ml2250fr.ppd
-usr/share/cups/model/samsung/ml2251.ppd
-usr/share/cups/model/samsung/ml2251fr.ppd
-usr/share/cups/model/samsung/ml2510.ppd
-usr/share/cups/model/samsung/ml2510fr.ppd
-usr/share/cups/model/samsung/ml2550.ppd
-usr/share/cups/model/samsung/ml2550fr.ppd
-usr/share/cups/model/samsung/ml3050.ppd
-usr/share/cups/model/samsung/ml3050fr.ppd
-usr/share/cups/model/samsung/ml3560.ppd
-usr/share/cups/model/samsung/ml3560fr.ppd
-usr/share/cups/model/xerox
-usr/share/cups/model/xerox/ph3115.ppd
-usr/share/cups/model/xerox/ph3115fr.ppd
-usr/share/cups/model/xerox/ph3116.ppd
-usr/share/cups/model/xerox/ph3116fr.ppd
-usr/share/cups/model/xerox/ph3117.ppd
-usr/share/cups/model/xerox/ph3117fr.ppd
-usr/share/cups/model/xerox/ph3120.ppd
-usr/share/cups/model/xerox/ph3120fr.ppd
-usr/share/cups/model/xerox/ph3121.ppd
-usr/share/cups/model/xerox/ph3121fr.ppd
-usr/share/cups/model/xerox/ph3122.ppd
-usr/share/cups/model/xerox/ph3122fr.ppd
-usr/share/cups/model/xerox/ph3130.ppd
-usr/share/cups/model/xerox/ph3130fr.ppd
-usr/share/cups/model/xerox/ph3150.ppd
-usr/share/cups/model/xerox/ph3150fr.ppd
-usr/share/cups/model/xerox/ph3160.ppd
-usr/share/cups/model/xerox/ph3160fr.ppd
-usr/share/cups/model/xerox/ph3420.ppd
-usr/share/cups/model/xerox/ph3420fr.ppd
-usr/share/cups/model/xerox/ph3425.ppd
-usr/share/cups/model/xerox/ph3425fr.ppd
-usr/share/cups/model/xerox/ph5500.ppd
-usr/share/cups/model/xerox/ph5500fr.ppd
-usr/share/cups/model/xerox/ph6100.ppd
-usr/share/cups/model/xerox/ph6100fr.ppd
-usr/share/cups/model/xerox/ph6110.ppd
-usr/share/cups/model/xerox/ph6110fr.ppd
index afdb511f1373eef4b7035b22913dbebfe89ccbd9..c4fc567ae925210cfe5cdc127348fc5999d1cee8 100644 (file)
--- a/lfs/bash
+++ b/lfs/bash
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.1
+VER        = 3.2
 
 THISAPP    = bash-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -48,8 +48,6 @@ else
   EXTRA_INSTALL = 
 endif
 
-EXTRA_CONFIG += --build=$(BUILDTARGET)
-
 ###############################################################################
 # Top-level Rules
 ###############################################################################
@@ -58,7 +56,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE)             = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5         = ef5304c4b22aaa5088972c792ed45d72
+$(DL_FILE)_MD5         = 00bfa16d58e034e3c2aa27f390390d30
 
 install : $(TARGET)
 
@@ -88,8 +86,11 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-fixes-8.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-login.patch
+
+       for i in $$(seq 1 51); do \
+               cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash32-$$(printf "%03d" "$${i}") || exit 1; \
+       done
+
        cd $(DIR_APP) && ./configure $(EXTRA_CONFIG)
        cd $(DIR_APP) && make $(EXTRA_MAKE)
        cd $(DIR_APP) && make $(EXTRA_INSTALL) install
index 50ccf40df3014209153c13f5460aaca6770595b6..7043cb31858e5d54b9546c3fd626dbfc1c3aa1ed 100644 (file)
 
 include Config
 
-VER        = 2.6.16-060323
+VER        = 3.4.0
 
 THISAPP    = iproute2-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -35,13 +35,12 @@ TARGET     = $(DIR_INFO)/$(THISAPP)
 ###############################################################################
 # Top-level Rules
 ###############################################################################
-objects = $(DL_FILE) htb3.6-020525.tgz
+
+objects = $(DL_FILE)
 
 $(DL_FILE)             = $(DL_FROM)/$(DL_FILE)
-htb3.6-020525.tgz      = $(DL_FROM)/htb3.6-020525.tgz
 
-$(DL_FILE)_MD5         = f31d4516b35bbfeaa72c762f5959e97c
-htb3.6-020525.tgz_MD5  = 3064fd8642ce6a7e155a29c5205b99d4
+$(DL_FILE)_MD5         = 879d3fac4e90809598b2864ec4a0cbf8
 
 install : $(TARGET)
 
@@ -70,9 +69,7 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-#      cd $(DIR_APP) && tar xfz $(DIR_DL)/htb3.6-020525.tgz *.diff
-#      cd $(DIR_APP) && for i in htb3*tc.diff ; do patch -Np1 < $$i; done
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && make $(MAKETUNING) SBINDIR=/sbin
        cd $(DIR_APP) && make SBINDIR=/sbin install
        cd $(DIR_APP) && mv -v /sbin/arpd /usr/sbin
index 3c7be4d0e85b3637949aec567eaf0273d7df2dde..1c0fb04271b87bb1209b2f43a3fe1796069232e0 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.5
+VER        = 5.9
 
 THISAPP    = ncurses-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -35,19 +35,26 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 #
 ifeq "$(ROOT)" ""
   TARGET = $(DIR_INFO)/$(THISAPP)
-  EXTRA_CONFIG = --prefix=/usr --with-shared \
-       --without-debug --enable-widec --disable-nls
-  EXTRA_MAKE =
-  EXTRA_INSTALL =
+  PREFIX = /usr
 else
   TARGET = $(DIR_INFO)/$(THISAPP)-tools
-  EXTRA_CONFIG = --prefix=/tools --with-shared \
-    --without-debug --without-ada --enable-overwrite \
-    --disable-nls
-  EXTRA_MAKE = 
-  EXTRA_INSTALL = 
+  PREFIX = /tools
 endif
 
+EXTRA_CONFIG += \
+       --prefix=$(PREFIX) \
+       --with-shared \
+       --without-debug \
+       --without-ada \
+       --with-ospeed=unsigned \
+       --with-chtype=long \
+       --enable-hard-tabs \
+       --enable-xmc-glitch \
+       --enable-colorfgbg \
+       --enable-overwrite \
+       --with-termlib=tinfo \
+       --disable-nls
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
@@ -56,7 +63,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e73c1ac10b4bfc46db43b2ddfd6244ef
+$(DL_FILE)_MD5 = 8cb9c412e5f2d96bc6f459aa8c6282a1
 
 install : $(TARGET)
 
@@ -86,25 +93,35 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ncurses-5.5-fixes-1.patch
-       cd $(DIR_APP) && ./configure $(EXTRA_CONFIG)
-       cd $(DIR_APP) && make $(EXTRA_MAKE)  #$(MAKETUNING) # Causes an error!
-       cd $(DIR_APP) && make $(EXTRA_INSTALL) install
-ifeq "$(ROOT)" ""
-       chmod -v 755 /usr/lib/*.5.5
-       chmod -v 644 /usr/lib/libncurses++w.a
-       mv -v /usr/lib/libncursesw.so.5* /lib
-       ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so
-       cd $(DIR_APP) && for lib in curses ncurses form panel menu ; do \
-           rm -vf /usr/lib/lib$${lib}.so ; \
-           echo "INPUT(-l$${lib}w)" >/usr/lib/lib$${lib}.so ; \
-           ln -sfv lib$${lib}w.a /usr/lib/lib$${lib}.a ; \
+       cd $(DIR_APP) && mkdir -pv narrowc widec
+
+       # Build narrowc version.
+       cd $(DIR_APP)/narrowc && ln -svf ../configure .
+       cd $(DIR_APP)/narrowc && ./configure $(EXTRA_CONFIG) --with-ticlib
+       cd $(DIR_APP)/narrowc && make libs
+       cd $(DIR_APP)/narrowc && make -C progs
+
+       # Build widec version.
+       cd $(DIR_APP)/widec && ln -svf ../configure .
+       cd $(DIR_APP)/widec && ./configure $(EXTRA_CONFIG) \
+               --enable-widec --without-progs
+       cd $(DIR_APP)/widec && make libs
+
+       # Install everything.
+       cd $(DIR_APP) && make -C narrowc install.{libs,progs,data}
+       rm -vf $(PREFIX)/lib/libtinfo.*
+       cd $(DIR_APP) && make -C widec install.{libs,includes,man}
+
+       # don't require -ltinfo when linking with --no-add-needed
+       for l in $(PREFIX)/lib/libncurses{,w}.so; do \
+               soname=$$(basename $$(readlink $$l)); \
+               rm -f $$l; \
+               echo "INPUT($$soname -ltinfo)" > $$l; \
        done
-       ln -sfv libncurses++w.a /usr/lib/libncurses++.a4
-       echo "INPUT(-lncursesw)" >/usr/lib/libcursesw.so
-       ln -sfv libncurses.so /usr/lib/libcurses.so
-       ln -sfv libncursesw.a /usr/lib/libcursesw.a
-       ln -sfv libncurses.a /usr/lib/libcurses.a
-endif
+
+       rm -vf $(PREFIX)/lib/libcurses{,w}.so
+       echo "INPUT(-lncurses)" > $(PREFIX)/lib/libcurses.so
+       echo "INPUT(-lncursesw)" > $(PREFIX)/lib/libcursesw.so
+       echo "INPUT(-ltinfo)" > $(PREFIX)/lib/libtermcap.so
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/splix b/lfs/splix
deleted file mode 100644 (file)
index c9e8e47..0000000
--- a/lfs/splix
+++ /dev/null
@@ -1,86 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER        = 2.0.0-rc2
-
-THISAPP    = splix-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG       = splix
-PAK_VER    = 2
-
-DEPS       = "cups"
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-objects = $(DL_FILE)
-
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-
-$(DL_FILE)_MD5 = 4381ccf9a38b08012dbdc3c0f28414fd
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist: 
-       $(PAK)
-
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
-ifeq "$(MACHINE_TYPE)" "arm"
-       cd $(DIR_APP) && sed -e "s/ceill/ceil/g" -i src/*.cpp
-endif
-       cd $(DIR_APP) && make DISABLE_JBIG=1 $(MAKETUNING) $(EXTRA_MAKE)
-       cd $(DIR_APP) && make install
-       @rm -rf $(DIR_APP)
-       @$(POSTBUILD)
index 1f47d652ee812e0ecbe8df26f12e721e5746dcaf..5337c7724a00d71314459fb932c75ba0816fb070 100644 (file)
--- a/lfs/zlib
+++ b/lfs/zlib
 
 include Config
 
-VER        = 1.2.3
+VER        = 1.2.7
 
 THISAPP    = zlib-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
-CFLAGS    += -fPIC
+CFLAGS    += -fPIC -DPIC
 
 ###############################################################################
 # Top-level Rules
@@ -41,7 +41,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE)                           = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5                       = dee233bf288ee795ac96a98cc2e369b6
+$(DL_FILE)_MD5                       = 60df6a37c56e7c1366cca812414f7b85
 
 install : $(TARGET)
 
@@ -70,16 +70,14 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && ./configure --prefix=/usr --shared --libdir=/lib
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr --shared
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
-       rm -v /lib/libz.so
-       ln -sfv ../../lib/libz.so.1.2.3 /usr/lib/libz.so
-       cd $(DIR_APP) && make clean
-       cd $(DIR_APP) && ./configure --prefix=/usr
-       cd $(DIR_APP) && make $(MAKETUNING)
-       cd $(DIR_APP) && make install
-       chmod -v 644 /usr/lib/libz.a
+
+       mv -v /usr/lib/libz.so.$(VER) /lib/libz.so.$(VER)
+       ln -svf libz.so.$(VER) /lib/libz.so.1
+       rm -vf /usr/lib/libz.so.1
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index 4eb0ed2e1c3df0d4d634850fa941bc2b29af7df0..3536aba6bc6bb45d841dd2a3d95b9d002d33be15 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -699,7 +699,6 @@ buildipfire() {
   ipfiremake netcat
   ipfiremake 7zip
   ipfiremake lynis
-  ipfiremake splix
   ipfiremake streamripper
   ipfiremake sshfs
   ipfiremake taglib
diff --git a/src/patches/bash-3.1-fixes-8.patch b/src/patches/bash-3.1-fixes-8.patch
deleted file mode 100644 (file)
index 449f076..0000000
+++ /dev/null
@@ -1,723 +0,0 @@
-Submitted By: Jeremy Huntwork (jhuntwork at linuxfromscratch dot org)
-Date: 2006-04-11
-Initial Package Version: 3.1
-Origin: http://ftp.gnu.org/gnu/bash/bash-3.1-patches/
-Upstream Status: From Upstream
-Description: Contains patches 001-017 from upstream
-
-diff -Naur bash-3.1.orig/arrayfunc.c bash-3.1/arrayfunc.c
---- bash-3.1.orig/arrayfunc.c  2005-07-04 17:25:58.000000000 -0700
-+++ bash-3.1/arrayfunc.c       2006-04-19 15:59:29.000000000 -0700
-@@ -592,11 +592,7 @@
-   exp = (char *)xmalloc (len);
-   strncpy (exp, s, len - 1);
-   exp[len - 1] = '\0';
--#if 0
--  t = expand_string_to_string (exp, 0);
--#else 
--  t = expand_string_to_string (exp, Q_DOUBLE_QUOTES);
--#endif
-+  t = expand_arith_string (exp, 0);
-   this_command_name = (char *)NULL;
-   val = evalexp (t, &expok);
-   free (t);
-diff -Naur bash-3.1.orig/doc/bash.1 bash-3.1/doc/bash.1
---- bash-3.1.orig/doc/bash.1   2005-10-12 08:40:52.000000000 -0700
-+++ bash-3.1/doc/bash.1        2006-04-19 15:58:34.000000000 -0700
-@@ -6,12 +6,12 @@
- .\"   Case Western Reserve University
- .\"   chet@po.cwru.edu
- .\"
--.\"   Last Change: Sat Aug 27 13:28:44 EDT 2005
-+.\"   Last Change: Wed Dec 28 19:58:45 EST 2005
- .\"
- .\" bash_builtins, strip all but Built-Ins section
- .if \n(zZ=1 .ig zZ
- .if \n(zY=1 .ig zY
--.TH BASH 1 "2005 Aug 27" "GNU Bash-3.1-beta1"
-+.TH BASH 1 "2005 Dec 28" "GNU Bash-3.1"
- .\"
- .\" There's some problem with having a `@'
- .\" in a tagged paragraph with the BSD man macros.
-@@ -677,8 +677,8 @@
- .B nocasematch
- is enabled, the match is performed without regard to the case
- of alphabetic characters.
--The return value is 0 if the string matches or does not match
--the pattern, respectively, and 1 otherwise.
-+The return value is 0 if the string matches (\fB==\fP) or does not match
-+(\fB!=\fP) the pattern, and 1 otherwise.
- Any part of the pattern may be quoted to force it to be matched as a
- string.
- .if t .sp 0.5
-@@ -807,6 +807,12 @@
- as for pathname expansion (see
- .B Pathname Expansion
- below).
-+The \fIword\fP is expanded using tilde
-+expansion, parameter and variable expansion, arithmetic substituion,
-+command substitution, process substitution and quote removal.
-+Each \fIpattern\fP examined is expanded using tilde
-+expansion, parameter and variable expansion, arithmetic substituion,
-+command substitution, and process substitution.
- If the shell option
- .B nocasematch
- is enabled, the match is performed without regard to the case
-@@ -8484,7 +8490,7 @@
- returns true if any of the arguments are found, false if
- none are found.
- .TP
--\fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlimit\fP]]
-+\fBulimit\fP [\fB\-SHacdfilmnpqstuvx\fP [\fIlimit\fP]]
- Provides control over the resources available to the shell and to
- processes started by it, on systems that allow such control.
- The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is
-@@ -8523,6 +8529,9 @@
- .B \-f
- The maximum size of files created by the shell
- .TP
-+.B \-i
-+The maximum number of pending signals
-+.TP
- .B \-l
- The maximum size that may be locked into memory
- .TP
-@@ -8536,6 +8545,9 @@
- .B \-p
- The pipe size in 512-byte blocks (this may not be set)
- .TP
-+.B \-q
-+The maximum number of bytes in POSIX message queues
-+.TP
- .B \-s
- The maximum stack size
- .TP
-@@ -8547,6 +8559,9 @@
- .TP
- .B \-v
- The maximum amount of virtual memory available to the shell
-+.TP
-+.B \-x
-+The maximum number of file locks
- .PD
- .PP
- If
-diff -Naur bash-3.1.orig/doc/bashref.texi bash-3.1/doc/bashref.texi
---- bash-3.1.orig/doc/bashref.texi     2005-10-03 12:07:21.000000000 -0700
-+++ bash-3.1/doc/bashref.texi  2006-04-19 15:58:34.000000000 -0700
-@@ -961,8 +961,8 @@
- (see the description of @code{shopt} in @ref{Bash Builtins})
- is enabled, the match is performed without regard to the case
- of alphabetic characters.
--The return value is 0 if the string matches or does not match
--the pattern, respectively, and 1 otherwise.
-+The return value is 0 if the string matches (@samp{==}) or does not
-+match (@samp{!=})the pattern, and 1 otherwise.
- Any part of the pattern may be quoted to force it to be matched as a
- string.
-@@ -2598,7 +2598,7 @@
- Builtin commands are necessary to implement functionality impossible
- or inconvenient to obtain with separate utilities.
--This section briefly the builtins which Bash inherits from
-+This section briefly describes the builtins which Bash inherits from
- the Bourne Shell, as well as the builtin commands which are unique
- to or have been extended in Bash.
-@@ -3833,7 +3833,7 @@
- @item ulimit
- @btindex ulimit
- @example
--ulimit [-acdflmnpstuvSH] [@var{limit}]
-+ulimit [-acdfilmnpqstuvxSH] [@var{limit}]
- @end example
- @code{ulimit} provides control over the resources available to processes
- started by the shell, on systems that allow such control.  If an
-@@ -3857,6 +3857,9 @@
- @item -f
- The maximum size of files created by the shell.
-+@item -i
-+The maximum number of pending signals.
-+
- @item -l
- The maximum size that may be locked into memory.
-@@ -3869,6 +3872,9 @@
- @item -p
- The pipe buffer size.
-+@item -q
-+The maximum number of bytes in POSIX message queues.
-+
- @item -s
- The maximum stack size.
-@@ -3881,6 +3887,9 @@
- @item -v
- The maximum amount of virtual memory available to the process.
-+@item -x
-+The maximum number of file locks.
-+
- @end table
- If @var{limit} is given, it is the new value of the specified resource;
-@@ -4089,8 +4098,8 @@
- Print shell input lines as they are read.
- @item -x
--Print a trace of simple commands, \fBfor\fP commands, \fBcase\fP
--commands, \fBselect\fP commands, and arithmetic \fBfor\fP commands
-+Print a trace of simple commands, @code{for} commands, @code{case}
-+commands, @code{select} commands, and arithmetic @code{for} commands
- and their arguments or associated word lists after they are
- expanded and before they are executed.  The value of the @env{PS4}
- variable is expanded and the resultant value is printed before
-diff -Naur bash-3.1.orig/doc/version.texi bash-3.1/doc/version.texi
---- bash-3.1.orig/doc/version.texi     2005-09-20 11:52:56.000000000 -0700
-+++ bash-3.1/doc/version.texi  2006-04-19 15:58:34.000000000 -0700
-@@ -2,9 +2,9 @@
- Copyright (C) 1988-2005 Free Software Foundation, Inc.
- @end ignore
--@set LASTCHANGE Mon Sep  5 11:47:04 EDT 2005
-+@set LASTCHANGE Fri Dec 30 10:50:51 EST 2005
--@set EDITION 3.1-beta1
--@set VERSION 3.1-beta1
--@set UPDATED 5 September 2005
--@set UPDATED-MONTH September 2005
-+@set EDITION 3.1
-+@set VERSION 3.1
-+@set UPDATED 30 December 2005
-+@set UPDATED-MONTH December 2005
-diff -Naur bash-3.1.orig/jobs.c bash-3.1/jobs.c
---- bash-3.1.orig/jobs.c       2005-11-11 20:13:27.000000000 -0800
-+++ bash-3.1/jobs.c    2006-04-19 15:58:34.000000000 -0700
-@@ -619,8 +619,11 @@
-          * once in the parent and once in each child.  This is where
-          * the parent gives it away.
-          *
-+         * Don't give the terminal away if this shell is an asynchronous
-+         * subshell.
-+         *
-          */
--        if (job_control && newjob->pgrp)
-+        if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0)
-           give_terminal_to (newjob->pgrp, 0);
-       }
-     }
-@@ -844,9 +847,10 @@
- realloc_jobs_list ()
- {
-   sigset_t set, oset;
--  int nsize, i, j;
-+  int nsize, i, j, ncur, nprev;
-   JOB **nlist;
-+  ncur = nprev = NO_JOB;
-   nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS);
-   nsize *= JOB_SLOTS;
-   i = js.j_njobs % JOB_SLOTS;
-@@ -854,17 +858,51 @@
-     nsize += JOB_SLOTS;
-   BLOCK_CHILD (set, oset);
--  nlist = (JOB **) xmalloc (nsize * sizeof (JOB *));
-+  nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *));
-+
-   for (i = j = 0; i < js.j_jobslots; i++)
-     if (jobs[i])
--      nlist[j++] = jobs[i];
-+      {
-+      if (i == js.j_current)
-+        ncur = j;
-+      if (i == js.j_previous)
-+        nprev = j;
-+      nlist[j++] = jobs[i];
-+      }
-+
-+#if defined (DEBUG)
-+  itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize);
-+  itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0);
-+  itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, (j > 0) ? j - 1 : 0);
-+#endif
-   js.j_firstj = 0;
--  js.j_lastj = (j > 0) ? j - 1: 0;
-+  js.j_lastj = (j > 0) ? j - 1 : 0;
-+  js.j_njobs = j;
-   js.j_jobslots = nsize;
--  free (jobs);
--  jobs = nlist;
-+  /* Zero out remaining slots in new jobs list */
-+  for ( ; j < nsize; j++)
-+    nlist[j] = (JOB *)NULL;
-+
-+  if (jobs != nlist)
-+    {
-+      free (jobs);
-+      jobs = nlist;
-+    }
-+
-+  if (ncur != NO_JOB)
-+    js.j_current = ncur;
-+  if (nprev != NO_JOB)
-+    js.j_previous = nprev;
-+
-+  /* Need to reset these */
-+  if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj)
-+    reset_current ();
-+
-+#ifdef DEBUG
-+  itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous);
-+#endif
-   UNBLOCK_CHILD (oset);
- }
-@@ -1655,7 +1693,7 @@
-            In this case, we don't want to give the terminal to the
-            shell's process group (we could be in the middle of a
-            pipeline, for example). */
--        if (async_p == 0 && pipeline_pgrp != shell_pgrp)
-+        if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0))
-           give_terminal_to (pipeline_pgrp, 0);
- #if defined (PGRP_PIPE)
-@@ -2198,7 +2236,11 @@
-   /* This is possibly a race condition -- should it go in stop_pipeline? */
-   wait_sigint_received = 0;
-   if (job_control == 0)
--    old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
-+    {
-+      old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
-+      if (old_sigint_handler == SIG_IGN)
-+      set_signal_handler (SIGINT, old_sigint_handler);
-+    }
-   termination_state = last_command_exit_value;
-diff -Naur bash-3.1.orig/lib/glob/glob.c bash-3.1/lib/glob/glob.c
---- bash-3.1.orig/lib/glob/glob.c      2005-03-24 09:42:27.000000000 -0800
-+++ bash-3.1/lib/glob/glob.c   2006-04-19 15:58:34.000000000 -0700
-@@ -360,6 +360,7 @@
-   count = lose = skip = 0;
-   firstmalloc = 0;
-+  nalloca = 0;
-   /* If PAT is empty, skip the loop, but return one (empty) filename. */
-   if (pat == 0 || *pat == '\0')
-@@ -546,6 +547,8 @@
-               firstmalloc = 0;
-             tmplink = lastlink;
-           }
-+        else
-+          tmplink = 0;
-         free (lastlink->name);
-         lastlink = lastlink->next;
-         FREE (tmplink);
-diff -Naur bash-3.1.orig/lib/glob/sm_loop.c bash-3.1/lib/glob/sm_loop.c
---- bash-3.1.orig/lib/glob/sm_loop.c   2005-10-16 18:21:04.000000000 -0700
-+++ bash-3.1/lib/glob/sm_loop.c        2006-04-19 15:58:34.000000000 -0700
-@@ -638,12 +638,13 @@
-   CHAR *psub;                 /* pointer to sub-pattern */
-   CHAR *pnext;                        /* pointer to next sub-pattern */
-   CHAR *srest;                        /* pointer to rest of string */
--  int m1, m2;
-+  int m1, m2, xflags;         /* xflags = flags passed to recursive matches */
- #if DEBUG_MATCHING
- fprintf(stderr, "extmatch: xc = %c\n", xc);
- fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se);
- fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe);
-+fprintf(stderr, "extmatch: flags = %d\n", flags);
- #endif
-   prest = PATSCAN (p + (*p == L('(')), pe, 0); /* ) */
-@@ -677,8 +678,12 @@
-                string matches the rest of the pattern.  Also handle
-                multiple matches of the pattern. */
-             if (m1)
--              m2 = (GMATCH (srest, se, prest, pe, flags) == 0) ||
--                    (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0);
-+              {
-+                /* if srest > s, we are not at start of string */
-+                xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
-+                m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) ||
-+                      (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0);
-+              }
-             if (m1 && m2)
-               return (0);
-           }
-@@ -704,8 +709,10 @@
-         srest = (prest == pe) ? se : s;
-         for ( ; srest <= se; srest++)
-           {
-+            /* if srest > s, we are not at start of string */
-+            xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
-             if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 &&
--                GMATCH (srest, se, prest, pe, flags) == 0)
-+                GMATCH (srest, se, prest, pe, xflags) == 0)
-               return (0);
-           }
-         if (pnext == prest)
-@@ -726,7 +733,9 @@
-             if (pnext == prest)
-               break;
-           }
--        if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0)
-+        /* if srest > s, we are not at start of string */
-+        xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
-+        if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0)
-           return (0);
-       }
-       return (FNM_NOMATCH);
-diff -Naur bash-3.1.orig/lib/readline/display.c bash-3.1/lib/readline/display.c
---- bash-3.1.orig/lib/readline/display.c       2005-11-30 11:05:02.000000000 -0800
-+++ bash-3.1/lib/readline/display.c    2006-04-19 15:58:34.000000000 -0700
-@@ -1983,11 +1983,15 @@
-      int pchar;
- {
-   int len;
--  char *pmt;
-+  char *pmt, *p;
-   rl_save_prompt ();
--  if (saved_local_prompt == 0)
-+  /* We've saved the prompt, and can do anything with the various prompt
-+     strings we need before they're restored.  We want the unexpanded
-+     portion of the prompt string after any final newline. */
-+  p = rl_prompt ? strrchr (rl_prompt, '\n') : 0;
-+  if (p == 0)
-     {
-       len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
-       pmt = (char *)xmalloc (len + 2);
-@@ -1998,19 +2002,17 @@
-     }
-   else
-     {
--      len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
-+      p++;
-+      len = strlen (p);
-       pmt = (char *)xmalloc (len + 2);
-       if (len)
--      strcpy (pmt, saved_local_prompt);
-+      strcpy (pmt, p);
-       pmt[len] = pchar;
-       pmt[len+1] = '\0';
--      local_prompt = savestring (pmt);
--      prompt_last_invisible = saved_last_invisible;
--      prompt_visible_length = saved_visible_length + 1;
--    }
-+    }  
-+  /* will be overwritten by expand_prompt, called from rl_message */
-   prompt_physical_chars = saved_physical_chars + 1;
--
-   return pmt;
- }
-diff -Naur bash-3.1.orig/lib/readline/readline.c bash-3.1/lib/readline/readline.c
---- bash-3.1.orig/lib/readline/readline.c      2005-07-04 19:29:35.000000000 -0700
-+++ bash-3.1/lib/readline/readline.c   2006-04-19 15:58:34.000000000 -0700
-@@ -282,6 +282,7 @@
- {
-   FREE (rl_prompt);
-   rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
-+  rl_display_prompt = rl_prompt ? rl_prompt : "";
-   rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
-   return 0;
-diff -Naur bash-3.1.orig/lib/readline/terminal.c bash-3.1/lib/readline/terminal.c
---- bash-3.1.orig/lib/readline/terminal.c      2005-11-12 17:46:54.000000000 -0800
-+++ bash-3.1/lib/readline/terminal.c   2006-04-19 15:58:34.000000000 -0700
-@@ -122,7 +122,7 @@
- static char *_rl_visible_bell;
- /* Non-zero means the terminal can auto-wrap lines. */
--int _rl_term_autowrap;
-+int _rl_term_autowrap = -1;
- /* Non-zero means that this terminal has a meta key. */
- static int term_has_meta;
-@@ -274,6 +274,9 @@
- _rl_set_screen_size (rows, cols)
-      int rows, cols;
- {
-+  if (_rl_term_autowrap == -1)
-+    _rl_init_terminal_io (rl_terminal_name);
-+
-   if (rows > 0)
-     _rl_screenheight = rows;
-   if (cols > 0)
-diff -Naur bash-3.1.orig/parse.y bash-3.1/parse.y
---- bash-3.1.orig/parse.y      2005-11-11 20:14:18.000000000 -0800
-+++ bash-3.1/parse.y   2006-04-19 15:58:34.000000000 -0700
-@@ -2716,6 +2716,7 @@
- #define P_ALLOWESC    0x02
- #define P_DQUOTE      0x04
- #define P_COMMAND     0x08    /* parsing a command, so look for comments */
-+#define P_BACKQUOTE   0x10    /* parsing a backquoted command substitution */
- static char matched_pair_error;
- static char *
-@@ -2725,12 +2726,12 @@
-      int *lenp, flags;
- {
-   int count, ch, was_dollar, in_comment, check_comment;
--  int pass_next_character, nestlen, ttranslen, start_lineno;
-+  int pass_next_character, backq_backslash, nestlen, ttranslen, start_lineno;
-   char *ret, *nestret, *ttrans;
-   int retind, retsize, rflags;
-   count = 1;
--  pass_next_character = was_dollar = in_comment = 0;
-+  pass_next_character = backq_backslash = was_dollar = in_comment = 0;
-   check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
-   /* RFLAGS is the set of flags we want to pass to recursive calls. */
-@@ -2742,11 +2743,8 @@
-   start_lineno = line_number;
-   while (count)
-     {
--#if 0
--      ch = shell_getc ((qc != '\'' || (flags & P_ALLOWESC)) && pass_next_character == 0);
--#else
--      ch = shell_getc (qc != '\'' && pass_next_character == 0);
--#endif
-+      ch = shell_getc (qc != '\'' && pass_next_character == 0 && backq_backslash == 0);
-+
-       if (ch == EOF)
-       {
-         free (ret);
-@@ -2771,9 +2769,16 @@
-         continue;
-       }
-       /* Not exactly right yet */
--      else if (check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind -1])))
-+      else if MBTEST(check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind - 1])))
-       in_comment = 1;
-+      /* last char was backslash inside backquoted command substitution */
-+      if (backq_backslash)
-+      {
-+        backq_backslash = 0;
-+        /* Placeholder for adding special characters */
-+      }
-+
-       if (pass_next_character)                /* last char was backslash */
-       {
-         pass_next_character = 0;
-@@ -2814,6 +2819,8 @@
-       {
-         if MBTEST((flags & P_ALLOWESC) && ch == '\\')
-           pass_next_character++;
-+        else if MBTEST((flags & P_BACKQUOTE) && ch == '\\')
-+          backq_backslash++;
-         continue;
-       }
-@@ -2898,7 +2905,11 @@
-       }
-       else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0)
-       {
--        nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags);
-+        /* Add P_BACKQUOTE so backslash quotes the next character and
-+           shell_getc does the right thing with \<newline>.  We do this for
-+           a measure  of backwards compatibility -- it's not strictly the
-+           right POSIX thing. */
-+        nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags|P_BACKQUOTE);
-         goto add_nestret;
-       }
-       else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '['))     /* ) } ] */
-@@ -2907,7 +2918,7 @@
-         if (open == ch)       /* undo previous increment */
-           count--;
-         if (ch == '(')                /* ) */
--          nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags);
-+          nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags & ~P_DQUOTE);
-         else if (ch == '{')           /* } */
-           nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags);
-         else if (ch == '[')           /* ] */
-@@ -3578,7 +3589,7 @@
-             FREE (ttok);
-             all_digit_token = 0;
-             compound_assignment = 1;
--#if 0
-+#if 1
-             goto next_character;
- #else
-             goto got_token;           /* ksh93 seems to do this */
-@@ -3695,7 +3706,9 @@
-       struct builtin *b;
-       b = builtin_address_internal (token, 0);
-       if (b && (b->flags & ASSIGNMENT_BUILTIN))
--        parser_state |= PST_ASSIGNOK;
-+      parser_state |= PST_ASSIGNOK;
-+      else if (STREQ (token, "eval") || STREQ (token, "let"))
-+      parser_state |= PST_ASSIGNOK;
-     }
-   yylval.word = the_word;
-@@ -4686,18 +4699,21 @@
-      int *retlenp;
- {
-   WORD_LIST *wl, *rl;
--  int tok, orig_line_number, orig_token_size;
-+  int tok, orig_line_number, orig_token_size, orig_last_token, assignok;
-   char *saved_token, *ret;
-   saved_token = token;
-   orig_token_size = token_buffer_size;
-   orig_line_number = line_number;
-+  orig_last_token = last_read_token;
-   last_read_token = WORD;     /* WORD to allow reserved words here */
-   token = (char *)NULL;
-   token_buffer_size = 0;
-+  assignok = parser_state&PST_ASSIGNOK;               /* XXX */
-+
-   wl = (WORD_LIST *)NULL;     /* ( */
-   parser_state |= PST_COMPASSIGN;
-@@ -4740,7 +4756,7 @@
-       jump_to_top_level (DISCARD);
-     }
--  last_read_token = WORD;
-+  last_read_token = orig_last_token;          /* XXX - was WORD? */
-   if (wl)
-     {
-       rl = REVERSE_LIST (wl, WORD_LIST *);
-@@ -4752,6 +4768,10 @@
-   if (retlenp)
-     *retlenp = (ret && *ret) ? strlen (ret) : 0;
-+
-+  if (assignok)
-+    parser_state |= PST_ASSIGNOK;
-+
-   return ret;
- }
-diff -Naur bash-3.1.orig/patchlevel.h bash-3.1/patchlevel.h
---- bash-3.1.orig/patchlevel.h 2005-07-20 10:58:20.000000000 -0700
-+++ bash-3.1/patchlevel.h      2006-04-19 15:59:29.000000000 -0700
-@@ -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 17
- #endif /* _PATCHLEVEL_H_ */
-diff -Naur bash-3.1.orig/subst.c bash-3.1/subst.c
---- bash-3.1.orig/subst.c      2005-10-24 06:51:13.000000000 -0700
-+++ bash-3.1/subst.c   2006-04-19 15:59:29.000000000 -0700
-@@ -2187,7 +2187,7 @@
-   if (mklocal && variable_context)
-     {
-       v = find_variable (name);
--      if (v == 0 || array_p (v) == 0)
-+      if (v == 0 || array_p (v) == 0 || v->context != variable_context)
-         v = make_local_array_variable (name);
-       v = assign_array_var_from_string (v, value, flags);
-     }
-@@ -2575,6 +2575,13 @@
-   return (expand_string_to_string_internal (string, quoted, expand_string_assignment));
- }
-+char *
-+expand_arith_string (string, quoted)
-+     char *string;
-+{
-+  return (expand_string_if_necessary (string, quoted, expand_string));
-+}
-+
- #if defined (COND_COMMAND)
- /* Just remove backslashes in STRING.  Returns a new string. */
- char *
-@@ -5248,7 +5255,7 @@
-   else
-     t = (char *)0;
--  temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string);
-+  temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES);
-   *e1p = evalexp (temp1, &expok);
-   free (temp1);
-   if (expok == 0)
-@@ -5293,7 +5300,7 @@
-     {
-       t++;
-       temp2 = savestring (t);
--      temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
-+      temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
-       free (temp2);
-       t[-1] = ':';
-       *e2p = evalexp (temp1, &expok);
-@@ -6435,7 +6442,7 @@
-         temp2[t_index] = '\0';
-         /* Expand variables found inside the expression. */
--        temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
-+        temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
-         free (temp2);
- arithsub:
-@@ -6477,7 +6484,7 @@
-       zindex = t_index;
-        /* Do initial variable expansion. */
--      temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string);
-+      temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES);
-       goto arithsub;
-@@ -6795,6 +6802,12 @@
-         if (temp && *temp && t_index > 0)
-           {
-             temp1 = bash_tilde_expand (temp, tflag);
-+            if  (temp1 && *temp1 == '~' && STREQ (temp, temp1))
-+              {
-+                FREE (temp);
-+                FREE (temp1);
-+                goto add_character;           /* tilde expansion failed */
-+              }
-             free (temp);
-             temp = temp1;
-             sindex += t_index;
-diff -Naur bash-3.1.orig/subst.h bash-3.1/subst.h
---- bash-3.1.orig/subst.h      2004-11-07 12:12:28.000000000 -0800
-+++ bash-3.1/subst.h   2006-04-19 15:59:29.000000000 -0700
-@@ -151,6 +151,9 @@
- extern char *expand_string_unsplit_to_string __P((char *, int));
- extern char *expand_assignment_string_to_string __P((char *, int));
-+/* Expand an arithmetic expression string */
-+extern char *expand_arith_string __P((char *, int));
-+
- /* De-quoted quoted characters in STRING. */
- extern char *dequote_string __P((char *));
-diff -Naur bash-3.1.orig/variables.c bash-3.1/variables.c
---- bash-3.1.orig/variables.c  2005-11-12 18:22:37.000000000 -0800
-+++ bash-3.1/variables.c       2006-04-19 15:58:34.000000000 -0700
-@@ -860,9 +860,11 @@
- {
-   char val[INT_STRLEN_BOUND(int) + 1], *v;
-+#if defined (READLINE)
-   /* If we are currently assigning to LINES or COLUMNS, don't do anything. */
-   if (winsize_assignment)
-     return;
-+#endif
-   v = inttostr (lines, val, sizeof (val));
-   bind_variable ("LINES", v, 0);
diff --git a/src/patches/bash-3.1-login.patch b/src/patches/bash-3.1-login.patch
deleted file mode 100644 (file)
index 8e950ba..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
---- bash-3.1/shell.c.login     2006-01-13 16:52:14.000000000 +0000
-+++ bash-3.1/shell.c   2006-01-13 16:52:15.000000000 +0000
-@@ -1543,9 +1543,10 @@
-      any startup files; just try to be more like /bin/sh. */
-   shell_name = argv0 ? base_pathname (argv0) : PROGRAM;
--  if (*shell_name == '-')
-+  if (argv0 && *argv0 == '-')
-     {
--      shell_name++;
-+      if (*shell_name == '-')
-+        shell_name++;
-       login_shell++;
-     }
diff --git a/src/patches/bash/bash32-001 b/src/patches/bash/bash32-001
new file mode 100644 (file)
index 0000000..b7d1f1e
--- /dev/null
@@ -0,0 +1,47 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-001
+
+Bug-Reported-by:       Greg Schafer <gschafer@zip.com.au>
+Bug-Reference-ID:      <20061012084940.GA15768@tigers.local>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00046.html
+
+Bug-Description:
+
+When using historical ``-style command substitution, bash incorrectly attempts
+to interpret shell comments while scanning for the closing backquote.
+
+Patch:
+
+*** ../bash-3.2/parse.y        Tue Sep 19 16:37:21 2006
+--- parse.y    Thu Oct 12 10:30:57 2006
+***************
+*** 2736,2740 ****
+    count = 1;
+    pass_next_character = backq_backslash = was_dollar = in_comment = 0;
+!   check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
+  
+    /* RFLAGS is the set of flags we want to pass to recursive calls. */
+--- 2736,2740 ----
+    count = 1;
+    pass_next_character = backq_backslash = was_dollar = in_comment = 0;
+!   check_comment = (flags & P_COMMAND) && qc != '`' && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
+  
+    /* RFLAGS is the set of flags we want to pass to recursive calls. */
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 0
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-002 b/src/patches/bash/bash32-002
new file mode 100644 (file)
index 0000000..b934df9
--- /dev/null
@@ -0,0 +1,48 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-002
+
+Bug-Reported-by:       Jim Gifford <jim@jg555.com>
+Bug-Reference-ID:      <12j2pc3aq35mb04@corp.supernews.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00082.html
+
+Bug-Description:
+
+An incorrect encoding specification in the Content-Type header causes msgfmt
+to fail, which causes `make install' to fail.
+
+Patch:
+
+*** ../bash-3.2/po/ru.po        Tue Jan 10 17:51:03 2006
+--- po/ru.po    Mon Oct 16 15:13:23 2006
+***************
+*** 13,17 ****
+  "Language-Team: Russian <ru@li.org>\n"
+  "MIME-Version: 1.0\n"
+! "Content-Type: text/plain; charset=UTF-8\n"
+  "Content-Transfer-Encoding: 8bit\n"
+  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+--- 13,17 ----
+  "Language-Team: Russian <ru@li.org>\n"
+  "MIME-Version: 1.0\n"
+! "Content-Type: text/plain; charset=KOI8-R\n"
+  "Content-Transfer-Encoding: 8bit\n"
+  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-003 b/src/patches/bash/bash32-003
new file mode 100644 (file)
index 0000000..922041b
--- /dev/null
@@ -0,0 +1,147 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-003
+
+Bug-Reported-by:       John Gatewood Ham <zappaman@buraphalinux.org>
+Bug-Reference-ID:      <Pine.LNX.4.64.0610121334140.15558@www.buraphalinux.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00045.html
+
+Bug-Description:
+
+When using the conditional command's `=~' operator to match regular
+expressions, the parser did not skip over shell metacharacters in the
+regular expression, leading to syntax errors.
+
+Patch:
+
+*** ../bash-3.2-patched/parse.y        Tue Oct 17 11:45:20 2006
+--- parse.y    Sat Oct 14 14:56:16 2006
+***************
+*** 1029,1034 ****
+--- 1029,1035 ----
+  #define PST_CMDTOKEN 0x1000          /* command token OK - unused */
+  #define PST_COMPASSIGN       0x2000          /* parsing x=(...) compound assignment */
+  #define PST_ASSIGNOK 0x4000          /* assignment statement ok in this context */
++ #define PST_REGEXP   0x8000          /* parsing an ERE/BRE as a single word */
+  
+  /* Initial size to allocate for tokens, and the
+     amount to grow them by. */
+***************
+*** 2591,2596 ****
+--- 2592,2600 ----
+        return (character);
+      }
+  
++   if (parser_state & PST_REGEXP)
++     goto tokword;
++ 
+    /* Shell meta-characters. */
+    if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0))
+      {
+***************
+*** 2698,2703 ****
+--- 2702,2708 ----
+    if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND))
+      return (character);
+  
++ tokword:
+    /* Okay, if we got this far, we have to read a word.  Read one,
+       and then check it against the known ones. */
+    result = read_token_word (character);
+***************
+*** 3202,3209 ****
+        if (tok == WORD && test_binop (yylval.word->word))
+       op = yylval.word;
+  #if defined (COND_REGEXP)
+!       else if (tok == WORD && STREQ (yylval.word->word,"=~"))
+!      op = yylval.word;
+  #endif
+        else if (tok == '<' || tok == '>')
+       op = make_word_from_token (tok);  /* ( */
+--- 3207,3217 ----
+        if (tok == WORD && test_binop (yylval.word->word))
+       op = yylval.word;
+  #if defined (COND_REGEXP)
+!       else if (tok == WORD && STREQ (yylval.word->word, "=~"))
+!      {
+!        op = yylval.word;
+!        parser_state |= PST_REGEXP;
+!      }
+  #endif
+        else if (tok == '<' || tok == '>')
+       op = make_word_from_token (tok);  /* ( */
+***************
+*** 3234,3239 ****
+--- 3242,3248 ----
+  
+        /* rhs */
+        tok = read_token (READ);
++       parser_state &= ~PST_REGEXP;
+        if (tok == WORD)
+       {
+         tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL);
+***************
+*** 3419,3427 ****
+         goto next_character;
+       }
+  
+  #ifdef EXTENDED_GLOB
+        /* Parse a ksh-style extended pattern matching specification. */
+!       if (extended_glob && PATTERN_CHAR (character))
+       {
+         peek_char = shell_getc (1);
+         if MBTEST(peek_char == '(')           /* ) */
+--- 3428,3461 ----
+         goto next_character;
+       }
+  
++ #ifdef COND_REGEXP
++       /* When parsing a regexp as a single word inside a conditional command,
++       we need to special-case characters special to both the shell and
++       regular expressions.  Right now, that is only '(' and '|'. */ /*)*/
++       if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|'))               /*)*/
++         {
++           if (character == '|')
++             goto got_character;
++ 
++        push_delimiter (dstack, character);
++        ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0);
++        pop_delimiter (dstack);
++        if (ttok == &matched_pair_error)
++          return -1;          /* Bail immediately. */
++        RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2,
++                                token_buffer_size, TOKEN_DEFAULT_GROW_SIZE);
++        token[token_index++] = character;
++        strcpy (token + token_index, ttok);
++        token_index += ttoklen;
++        FREE (ttok);
++        dollar_present = all_digit_token = 0;
++        goto next_character;
++         }
++ #endif /* COND_REGEXP */
++ 
+  #ifdef EXTENDED_GLOB
+        /* Parse a ksh-style extended pattern matching specification. */
+!       if MBTEST(extended_glob && PATTERN_CHAR (character))
+       {
+         peek_char = shell_getc (1);
+         if MBTEST(peek_char == '(')           /* ) */
+
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
+
diff --git a/src/patches/bash/bash32-004 b/src/patches/bash/bash32-004
new file mode 100644 (file)
index 0000000..cd2accf
--- /dev/null
@@ -0,0 +1,96 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-004
+
+Bug-Reported-by:       Stuart Shelton <srcshelton@gmail.com>
+Bug-Reference-ID:      <619141e40610261203y6cda5aa6i23cb24c7aeba996e@mail.gmail.com>
+Bug-Reference-URL:     
+
+Bug-Description:
+
+A bug in the parameter pattern substitution implementation treated a pattern
+whose first character was `/' (after expansion) as specifying global
+replacement.
+
+Patch:
+
+*** ../bash-3.2/subst.c        Tue Sep 19 08:35:09 2006
+--- subst.c    Thu Oct 26 09:17:50 2006
+***************
+*** 5707,5712 ****
+--- 5707,5717 ----
+    vtype &= ~VT_STARSUB;
+  
+    mflags = 0;
++   if (patsub && *patsub == '/')
++     {
++       mflags |= MATCH_GLOBREP;
++       patsub++;
++     }
+  
+    /* Malloc this because expand_string_if_necessary or one of the expansion
+       functions in its call chain may free it on a substitution error. */
+***************
+*** 5741,5753 ****
+      }
+  
+    /* ksh93 doesn't allow the match specifier to be a part of the expanded
+!      pattern.  This is an extension. */
+    p = pat;
+!   if (pat && pat[0] == '/')
+!     {
+!       mflags |= MATCH_GLOBREP|MATCH_ANY;
+!       p++;
+!     }
+    else if (pat && pat[0] == '#')
+      {
+        mflags |= MATCH_BEG;
+--- 5746,5757 ----
+      }
+  
+    /* ksh93 doesn't allow the match specifier to be a part of the expanded
+!      pattern.  This is an extension.  Make sure we don't anchor the pattern
+!      at the beginning or end of the string if we're doing global replacement,
+!      though. */
+    p = pat;
+!   if (mflags & MATCH_GLOBREP)
+!     mflags |= MATCH_ANY;
+    else if (pat && pat[0] == '#')
+      {
+        mflags |= MATCH_BEG;
+*** ../bash-3.2/tests/new-exp.right    Thu Aug 10 12:00:00 2006
+--- tests/new-exp.right        Sun Oct 29 16:03:36 2006
+***************
+*** 430,436 ****
+  Case06---1---A B C::---
+  Case07---3---A:B:C---
+  Case08---3---A:B:C---
+! ./new-exp.tests: line 506: /${$(($#-1))}: bad substitution
+  argv[1] = <a>
+  argv[2] = <b>
+  argv[3] = <c>
+--- 430,436 ----
+  Case06---1---A B C::---
+  Case07---3---A:B:C---
+  Case08---3---A:B:C---
+! ./new-exp.tests: line 506: ${$(($#-1))}: bad substitution
+  argv[1] = <a>
+  argv[2] = <b>
+  argv[3] = <c>
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-005 b/src/patches/bash/bash32-005
new file mode 100644 (file)
index 0000000..903ec58
--- /dev/null
@@ -0,0 +1,223 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-005
+
+Bug-Reported-by:       Stuart Shelton <stuart@openobjects.com>
+Bug-Reference-ID:      <453F7CC8.6030907@openobjects.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00127.html
+
+Bug-Description:
+
+A missing extern declaration for `asprintf' caused `double' arguments to be
+passed as `0', leading to incorrect results.  Additionally, a bug in the
+replacement asprintf/snprintf function caused an infinite loop when passed
+0 arguments to the floating point conversions under some circumstances.
+
+Patch:
+
+*** ../bash-3.2/builtins/printf.def    Mon Sep 18 08:48:42 2006
+--- builtins/printf.def        Tue Oct 31 08:19:44 2006
+***************
+*** 49,54 ****
+--- 49,60 ----
+  #  define INT_MIN            (-2147483647-1)
+  #endif
+  
++ #if defined (PREFER_STDARG)
++ #  include <stdarg.h>
++ #else
++ #  include <varargs.h>
++ #endif
++ 
+  #include <stdio.h>
+  #include <chartypes.h>
+  
+***************
+*** 151,156 ****
+--- 157,166 ----
+  #define SKIP1 "#'-+ 0"
+  #define LENMODS "hjlLtz"
+  
++ #ifndef HAVE_ASPRINTF
++ extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
++ #endif
++ 
+  static void printf_erange __P((char *));
+  static int printstr __P((char *, char *, int, int, int));
+  static int tescape __P((char *, char *, int *));
+
+
+*** ../bash-3.2/lib/sh/snprintf.c      Thu Apr  6 09:48:40 2006
+--- lib/sh/snprintf.c  Sat Oct 28 00:00:13 2006
+***************
+*** 471,476 ****
+--- 476,483 ----
+         10^x ~= r
+   * log_10(200) = 2;
+   * log_10(250) = 2;
++  *
++  * NOTE: do not call this with r == 0 -- an infinite loop results.
+   */
+  static int
+  log_10(r)
+***************
+*** 576,583 ****
+      { 
+        integral_part[0] = '0';
+        integral_part[1] = '\0';
+!       fraction_part[0] = '0';
+!       fraction_part[1] = '\0';
+        if (fract)
+       *fract = fraction_part;
+        return integral_part;
+--- 583,593 ----
+      { 
+        integral_part[0] = '0';
+        integral_part[1] = '\0';
+!       /* The fractional part has to take the precision into account */
+!       for (ch = 0; ch < precision-1; ch++)
+!      fraction_part[ch] = '0';
+!       fraction_part[ch] = '0';
+!       fraction_part[ch+1] = '\0';
+        if (fract)
+       *fract = fraction_part;
+        return integral_part;
+***************
+*** 805,810 ****
+--- 815,821 ----
+        PUT_CHAR(*tmp, p);
+        tmp++;
+      }
++ 
+    PAD_LEFT(p);
+  }
+  
+***************
+*** 972,982 ****
+    if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp)))
+      tmp = t;
+  
+    /* calculate the padding. 1 for the dot */
+    p->width = p->width -
+           ((d > 0. && p->justify == RIGHT) ? 1:0) -
+           ((p->flags & PF_SPACE) ? 1:0) -
+!          strlen(tmp) - p->precision - 1;
+    PAD_RIGHT(p);  
+    PUT_PLUS(d, p, 0.);
+    PUT_SPACE(d, p, 0.);
+--- 983,1003 ----
+    if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp)))
+      tmp = t;
+  
++   if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
++     {
++       /* smash the trailing zeros unless altform */
++       for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
++         tmp2[i] = '\0'; 
++       if (tmp2[0] == '\0')
++      p->precision = 0;
++     }
++ 
+    /* calculate the padding. 1 for the dot */
+    p->width = p->width -
+           ((d > 0. && p->justify == RIGHT) ? 1:0) -
+           ((p->flags & PF_SPACE) ? 1:0) -
+!          strlen(tmp) - p->precision -
+!          ((p->precision != 0 || (p->flags & PF_ALTFORM)) ? 1 : 0);   /* radix char */
+    PAD_RIGHT(p);  
+    PUT_PLUS(d, p, 0.);
+    PUT_SPACE(d, p, 0.);
+***************
+*** 991,1001 ****
+    if (p->precision != 0 || (p->flags & PF_ALTFORM))
+      PUT_CHAR(decpoint, p);  /* put the '.' */
+  
+-   if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
+-     /* smash the trailing zeros unless altform */
+-     for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
+-       tmp2[i] = '\0'; 
+- 
+    for (; *tmp2; tmp2++)
+      PUT_CHAR(*tmp2, p); /* the fraction */
+    
+--- 1012,1017 ----
+***************
+*** 1011,1024 ****
+    char *tmp, *tmp2;
+    int j, i;
+  
+!   if (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))
+      return;  /* already printed nan or inf */
+  
+    GETLOCALEDATA(decpoint, thoussep, grouping);
+    DEF_PREC(p);
+!   j = log_10(d);
+!   d = d / pow_10(j);  /* get the Mantissa */
+!   d = ROUND(d, p);             
+    tmp = dtoa(d, p->precision, &tmp2);
+  
+    /* 1 for unit, 1 for the '.', 1 for 'e|E',
+--- 1027,1045 ----
+    char *tmp, *tmp2;
+    int j, i;
+  
+!   if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2)))
+      return;  /* already printed nan or inf */
+  
+    GETLOCALEDATA(decpoint, thoussep, grouping);
+    DEF_PREC(p);
+!   if (d == 0.)
+!     j = 0;
+!   else
+!     {
+!       j = log_10(d);
+!       d = d / pow_10(j);  /* get the Mantissa */
+!       d = ROUND(d, p);                 
+!     }
+    tmp = dtoa(d, p->precision, &tmp2);
+  
+    /* 1 for unit, 1 for the '.', 1 for 'e|E',
+***************
+*** 1076,1081 ****
+--- 1097,1103 ----
+         PUT_CHAR(*tmp, p);
+         tmp++;
+       }
++ 
+     PAD_LEFT(p);
+  }
+  #endif
+***************
+*** 1358,1364 ****
+               STAR_ARGS(data);
+               DEF_PREC(data);
+               d = GETDOUBLE(data);
+!              i = log_10(d);
+               /*
+                * for '%g|%G' ANSI: use f if exponent
+                * is in the range or [-4,p] exclusively
+--- 1380,1386 ----
+               STAR_ARGS(data);
+               DEF_PREC(data);
+               d = GETDOUBLE(data);
+!              i = (d != 0.) ? log_10(d) : -1;
+               /*
+                * for '%g|%G' ANSI: use f if exponent
+                * is in the range or [-4,p] exclusively
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-006 b/src/patches/bash/bash32-006
new file mode 100644 (file)
index 0000000..589db9e
--- /dev/null
@@ -0,0 +1,45 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-006
+
+Bug-Reported-by:       ebb9@byu.net
+Bug-Reference-ID:      <45540862.9030900@byu.net>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html
+                       http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00016.html
+
+Bug-Description:
+
+In some cases, code that is intended to be used in the presence of multibyte
+characters is called when no such characters are present, leading to incorrect
+display position calculations and incorrect redisplay.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006
+--- lib/readline/display.c     Mon Nov 13 17:55:57 2006
+***************
+*** 2381,2384 ****
+--- 2409,2414 ----
+    if (end <= start)
+      return 0;
++   if (MB_CUR_MAX == 1 || rl_byte_oriented)
++     return (end - start);
+  
+    memset (&ps, 0, sizeof (mbstate_t));
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-007 b/src/patches/bash/bash32-007
new file mode 100644 (file)
index 0000000..9b86f4a
--- /dev/null
@@ -0,0 +1,55 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-007
+
+Bug-Reported-by:       jidanni@jidanni.org
+Bug-Reference-ID:      <E1Gkg12-00017D-Fm@jidanni.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00039.html
+
+Bug-Description:
+
+When removing the current or previous job from the jobs list, bash incorrectly
+resets the current job under some circumstances.
+
+Patch:
+
+*** ../bash-3.2-patched/jobs.c Sat Jul 29 16:40:48 2006
+--- jobs.c     Fri Nov 24 14:50:01 2006
+***************
+*** 985,990 ****
+    if (temp == 0)
+      return;
+-   if (job_index == js.j_current || job_index == js.j_previous)
+-     reset_current ();
+  
+    if ((dflags & DEL_NOBGPID) == 0)
+--- 985,988 ----
+***************
+*** 1029,1032 ****
+--- 1027,1033 ----
+    else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0)
+      reset_job_indices ();
++ 
++   if (job_index == js.j_current || job_index == js.j_previous)
++     reset_current ();
+  }
+
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
+
+  
diff --git a/src/patches/bash/bash32-008 b/src/patches/bash/bash32-008
new file mode 100644 (file)
index 0000000..7ec07ff
--- /dev/null
@@ -0,0 +1,48 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-008
+
+Bug-Reported-by:       Linda Walsh <bash@tlinx.org>
+Bug-Reference-ID:      <456041FD.8000605@tlinx.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00040.html
+
+Bug-Description:
+
+When checking pathnames from the command hash table (e.g., when the `checkhash'
+shell option is enabled), a bug causes bash to delete and re-lookup each
+command.
+
+Patch:
+
+*** ../bash-3.2-patched/findcmd.c      Wed Aug 17 16:49:54 2005
+--- findcmd.c  Fri Nov 24 10:48:37 2006
+***************
+*** 309,313 ****
+      {
+        st = file_status (hashed_file);
+!       if ((st ^ (FS_EXISTS | FS_EXECABLE)) != 0)
+       {
+         phash_remove (pathname);
+--- 309,313 ----
+      {
+        st = file_status (hashed_file);
+!       if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE))
+       {
+         phash_remove (pathname);
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-009 b/src/patches/bash/bash32-009
new file mode 100644 (file)
index 0000000..9cfd16e
--- /dev/null
@@ -0,0 +1,61 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-009
+
+Bug-Reported-by:       James.M.Botte@lowes.com
+Bug-Reference-ID:      <BA9FF90F7E5B424998F98EDA9F1F94BE01FA9853@msexchdb01.lowes.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00000.html
+
+Bug-Description:
+
+When using its built-in replacement for snprintf/asprintf, bash does not
+treat the %x, %X, and %o format specifiers as unsigned numbers.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/sh/snprintf.c      Mon Nov 13 08:58:52 2006
+--- lib/sh/snprintf.c  Wed Dec  6 11:15:04 2006
+***************
+*** 669,673 ****
+  
+    sd = d;    /* signed for ' ' padding in base 10 */
+!   flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
+    if (*p->pf == 'X')
+      flags |= FL_HEXUPPER;
+--- 674,679 ----
+  
+    sd = d;    /* signed for ' ' padding in base 10 */
+!   flags = 0;
+!   flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
+    if (*p->pf == 'X')
+      flags |= FL_HEXUPPER;
+***************
+*** 739,743 ****
+  
+    sd = d;    /* signed for ' ' padding in base 10 */
+!   flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
+    if (*p->pf == 'X')
+      flags |= FL_HEXUPPER;
+--- 745,749 ----
+  
+    sd = d;    /* signed for ' ' padding in base 10 */
+!   flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
+    if (*p->pf == 'X')
+      flags |= FL_HEXUPPER;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-010 b/src/patches/bash/bash32-010
new file mode 100644 (file)
index 0000000..88de575
--- /dev/null
@@ -0,0 +1,207 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-010
+
+Bug-Reported-by:       Ryan Waldron <rew@erebor.com>
+Bug-Reference-ID:      <20070119065603.546D011E9C@kansas.erebor.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00059.html
+
+Bug-Description:
+
+The glibc implementation of regcomp/regexec does not allow backslashes to
+escape "ordinary" pattern characters when matching.  Bash used backslashes
+to quote all characters when the pattern argument to the [[ special
+command's =~ operator was quoted.  This caused the match to fail on Linux
+and other systems using GNU libc.
+
+Patch:
+
+*** ../bash-3.2.9/pathexp.h    Sat Feb 19 17:23:18 2005
+--- pathexp.h  Wed Jan 31 22:53:16 2007
+***************
+*** 1,5 ****
+  /* pathexp.h -- The shell interface to the globbing library. */
+  
+! /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+--- 1,5 ----
+  /* pathexp.h -- The shell interface to the globbing library. */
+  
+! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+***************
+*** 33,36 ****
+--- 33,37 ----
+  #define QGLOB_CVTNULL        0x01    /* convert QUOTED_NULL strings to '\0' */
+  #define QGLOB_FILENAME       0x02    /* do correct quoting for matching filenames */
++ #define QGLOB_REGEXP 0x04    /* quote an ERE for regcomp/regexec */
+  
+  #if defined (EXTENDED_GLOB)
+*** ../bash-3.2.9/pathexp.c    Mon May  6 13:43:05 2002
+--- pathexp.c  Mon Feb 26 16:59:23 2007
+***************
+*** 1,5 ****
+  /* pathexp.c -- The shell interface to the globbing library. */
+  
+! /* Copyright (C) 1995-2002 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+--- 1,5 ----
+  /* pathexp.c -- The shell interface to the globbing library. */
+  
+! /* Copyright (C) 1995-2007 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+***************
+*** 111,114 ****
+--- 111,141 ----
+  }
+  
++ /* Return 1 if C is a character that is `special' in a POSIX ERE and needs to
++    be quoted to match itself. */
++ static inline int
++ ere_char (c)
++      int c;
++ {
++   switch (c)
++     {
++     case '.':
++     case '[':
++     case '\\':
++     case '(':
++     case ')':
++     case '*':
++     case '+':
++     case '?':
++     case '{':
++     case '|':
++     case '^':
++     case '$':
++       return 1;
++     default: 
++       return 0;
++     }
++   return (0);
++ }
++ 
+  /* PATHNAME can contain characters prefixed by CTLESC; this indicates
+     that the character is to be quoted.  We quote it here in the style
+***************
+*** 143,146 ****
+--- 170,175 ----
+         if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
+           continue;
++        if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
++          continue;
+         temp[j++] = '\\';
+         i++;
+*** ../bash-3.2.9/subst.c      Tue Nov  7 16:14:41 2006
+--- subst.c    Wed Jan 31 23:09:58 2007
+***************
+*** 5,9 ****
+       beauty, but, hey, you're alright.'' */
+  
+! /* Copyright (C) 1987-2006 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+--- 5,9 ----
+       beauty, but, hey, you're alright.'' */
+  
+! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+***************
+*** 2647,2655 ****
+  /* This needs better error handling. */
+  /* Expand W for use as an argument to a unary or binary operator in a
+!    [[...]] expression.  If SPECIAL is nonzero, this is the rhs argument
+     to the != or == operator, and should be treated as a pattern.  In
+!    this case, we quote the string specially for the globbing code.  The
+!    caller is responsible for removing the backslashes if the unquoted
+!    words is needed later. */   
+  char *
+  cond_expand_word (w, special)
+--- 2647,2656 ----
+  /* This needs better error handling. */
+  /* Expand W for use as an argument to a unary or binary operator in a
+!    [[...]] expression.  If SPECIAL is 1, this is the rhs argument
+     to the != or == operator, and should be treated as a pattern.  In
+!    this case, we quote the string specially for the globbing code.  If
+!    SPECIAL is 2, this is an rhs argument for the =~ operator, and should
+!    be quoted appropriately for regcomp/regexec.  The caller is responsible
+!    for removing the backslashes if the unquoted word is needed later. */   
+  char *
+  cond_expand_word (w, special)
+***************
+*** 2659,2662 ****
+--- 2660,2664 ----
+    char *r, *p;
+    WORD_LIST *l;
++   int qflags;
+  
+    if (w->word == 0 || w->word[0] == '\0')
+***************
+*** 2673,2678 ****
+        else
+       {
+         p = string_list (l);
+!        r = quote_string_for_globbing (p, QGLOB_CVTNULL);
+         free (p);
+       }
+--- 2675,2683 ----
+        else
+       {
++        qflags = QGLOB_CVTNULL;
++        if (special == 2)
++          qflags |= QGLOB_REGEXP;
+         p = string_list (l);
+!        r = quote_string_for_globbing (p, qflags);
+         free (p);
+       }
+*** ../bash-3.2.9/execute_cmd.c        Sat Aug 26 00:23:17 2006
+--- execute_cmd.c      Wed Jan 31 23:12:06 2007
+***************
+*** 1,5 ****
+  /* execute_cmd.c -- Execute a COMMAND structure. */
+  
+! /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+--- 1,5 ----
+  /* execute_cmd.c -- Execute a COMMAND structure. */
+  
+! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+***************
+*** 2547,2551 ****
+        if (arg1 == 0)
+       arg1 = nullstr;
+!       arg2 = cond_expand_word (cond->right->op, patmatch||rmatch);
+        if (arg2 == 0)
+       arg2 = nullstr;
+--- 2547,2551 ----
+        if (arg1 == 0)
+       arg1 = nullstr;
+!       arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0));
+        if (arg2 == 0)
+       arg2 = nullstr;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-011 b/src/patches/bash/bash32-011
new file mode 100644 (file)
index 0000000..c021f52
--- /dev/null
@@ -0,0 +1,138 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-011
+
+Bug-Reported-by: Petr Sumbera <Petr.Sumbera@Sun.COM>
+Bug-Reference-ID: <45AF5F4B.1020800@sun.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00049.html
+
+Bug-Description:
+
+Under certain circumstances (loopback mounts), the bash getcwd does not
+return correct results.  This patch allows the use of the Solaris libc
+getcwd even though it doesn't dynamically allocate memory.
+
+Run `touch configure' to make sure make doesn't try to run autoconf.
+Then run configure with whatever options you like.
+
+Patch:
+
+*** ../bash-3.2-patched/configure.in   Tue Sep 26 11:05:45 2006
+--- configure.in       Wed Jan 31 09:48:00 2007
+***************
+*** 6,10 ****
+  dnl Process this file with autoconf to produce a configure script.
+  
+! # Copyright (C) 1987-2006 Free Software Foundation, Inc.
+  
+  # This program is free software; you can redistribute it and/or modify
+--- 6,10 ----
+  dnl Process this file with autoconf to produce a configure script.
+  
+! # Copyright (C) 1987-2007 Free Software Foundation, Inc.
+  
+  # This program is free software; you can redistribute it and/or modify
+***************
+*** 992,996 ****
+  sco3.2*)     LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
+  sunos4*)     LOCAL_CFLAGS=-DSunOS4 ;;
+! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;;
+  lynxos*)     LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+  linux*)              LOCAL_LDFLAGS=-rdynamic          # allow dynamic loading
+--- 992,997 ----
+  sco3.2*)     LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
+  sunos4*)     LOCAL_CFLAGS=-DSunOS4 ;;
+! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
+! solaris2*)   LOCAL_CFLAGS=-DSOLARIS ;;
+  lynxos*)     LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+  linux*)              LOCAL_LDFLAGS=-rdynamic          # allow dynamic loading
+*** ../bash-3.2-patched/config-bot.h   Tue Sep 12 16:43:04 2006
+--- config-bot.h       Tue Mar  6 10:41:31 2007
+***************
+*** 2,6 ****
+  /* modify settings or make new ones based on what autoconf tells us. */
+  
+! /* Copyright (C) 1989-2002 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+--- 2,6 ----
+  /* modify settings or make new ones based on what autoconf tells us. */
+  
+! /* Copyright (C) 1989-2007 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+***************
+*** 71,77 ****
+  #endif
+  
+! /* If we have a getcwd(3), but it calls popen(), #undef HAVE_GETCWD so
+!    the replacement in getcwd.c will be built. */
+! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN)
+  #  undef HAVE_GETCWD
+  #endif
+--- 71,79 ----
+  #endif
+  
+! /* If we have a getcwd(3), but one that does not dynamically allocate memory,
+!    #undef HAVE_GETCWD so the replacement in getcwd.c will be built.  We do
+!    not do this on Solaris, because their implementation of loopback mounts
+!    breaks the traditional file system assumptions that getcwd uses. */
+! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) && !defined (SOLARIS)
+  #  undef HAVE_GETCWD
+  #endif
+*** ../bash-3.2-patched/builtins/common.c      Thu Jul 27 09:39:51 2006
+--- builtins/common.c  Tue Mar  6 10:43:27 2007
+***************
+*** 1,3 ****
+! /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+--- 1,3 ----
+! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+***************
+*** 476,480 ****
+--- 476,484 ----
+    if (the_current_working_directory == 0)
+      {
++ #if defined (GETCWD_BROKEN)
++       the_current_working_directory = getcwd (0, PATH_MAX);
++ #else
+        the_current_working_directory = getcwd (0, 0);
++ #endif
+        if (the_current_working_directory == 0)
+       {
+*** ../bash-3.2-patched/configure      Tue Sep 26 11:06:01 2006
+--- configure  Tue Mar  6 10:59:20 2007
+***************
+*** 27317,27321 ****
+  sco3.2*)     LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
+  sunos4*)     LOCAL_CFLAGS=-DSunOS4 ;;
+! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;;
+  lynxos*)     LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+  linux*)              LOCAL_LDFLAGS=-rdynamic          # allow dynamic loading
+--- 27317,27322 ----
+  sco3.2*)     LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
+  sunos4*)     LOCAL_CFLAGS=-DSunOS4 ;;
+! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
+! solaris2*)   LOCAL_CFLAGS=-DSOLARIS ;;
+  lynxos*)     LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+  linux*)              LOCAL_LDFLAGS=-rdynamic          # allow dynamic loading
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 11
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-012 b/src/patches/bash/bash32-012
new file mode 100644 (file)
index 0000000..8d669d2
--- /dev/null
@@ -0,0 +1,96 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-012
+
+Bug-Reported-by: John Wyman <JohnWyman@celink.com>
+Bug-Reference-ID: <5E7DEFC094C35044B87FAE761D9F0EE20143A3B7@exchange2k.celink.com>
+Bug-Reference-URL: 
+
+Bug-Description:
+
+Some systems (AIX 4.x) don't implement the PRI_xxx macros correctly,
+causing syntax errors when attempting to compile bash on those systems.
+This patch adds support for the PRI_MACROS_BROKEN define.
+
+You will need to re-run `configure' after applying the patch.  Run
+`touch configure' so make doesn't try to run autoconf.
+
+Patch:
+
+*** ../bash-3.2.11/config.h.in Tue Sep 12 16:00:54 2006
+--- config.h.in        Tue Mar  6 11:17:55 2007
+***************
+*** 1,5 ****
+  /* config.h -- Configuration file for bash. */
+  
+! /* Copyright (C) 1987-2006 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+--- 1,5 ----
+  /* config.h -- Configuration file for bash. */
+  
+! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
+  
+     This file is part of GNU Bash, the Bourne Again SHell.
+***************
+*** 414,417 ****
+--- 414,419 ----
+  #undef HAVE_DECL_STRTOLD
+  
++ #undef PRI_MACROS_BROKEN
++ 
+  #undef STRTOLD_BROKEN
+  
+***************
+*** 1007,1010 ****
+--- 1009,1015 ----
+  #undef HAVE_DCGETTEXT
+  
++ /* Define if you have the `localeconv' function. */
++ #undef HAVE_LOCALECONV
++ 
+  /* Define if your system has a working `malloc' function. */
+  /* #undef HAVE_MALLOC */
+*** ../bash-3.2.11/builtins/printf.def Mon Nov 13 08:58:52 2006
+--- builtins/printf.def        Sun Feb  4 13:58:59 2007
+***************
+*** 2,6 ****
+  It implements the builtin "printf" in Bash.
+  
+! Copyright (C) 1997-2005 Free Software Foundation, Inc.
+  
+  This file is part of GNU Bash, the Bourne Again SHell.
+--- 2,6 ----
+  It implements the builtin "printf" in Bash.
+  
+! Copyright (C) 1997-2007 Free Software Foundation, Inc.
+  
+  This file is part of GNU Bash, the Bourne Again SHell.
+***************
+*** 71,74 ****
+--- 71,78 ----
+  #include "common.h"
+  
++ #if defined (PRI_MACROS_BROKEN)
++ #  undef PRIdMAX
++ #endif
++ 
+  #if !defined (PRIdMAX)
+  #  if HAVE_LONG_LONG
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 11
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 12
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-013 b/src/patches/bash/bash32-013
new file mode 100644 (file)
index 0000000..d47bc1a
--- /dev/null
@@ -0,0 +1,65 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-013
+
+Bug-Reported-by: Magnus Svensson <msvensson@mysql.com>
+Bug-Reference-ID: <45BDC44D.80609@mysql.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-01/msg00002.html
+
+Bug-Description:
+
+Readline neglects to reallocate the array it uses to keep track of wrapped
+screen lines when increasing its size.  This will eventually result in
+segmentation faults when given sufficiently long input.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006
+--- lib/readline/display.c     Fri Feb  2 20:23:17 2007
+***************
+*** 561,574 ****
+--- 561,586 ----
+        wrap_offset = prompt_invis_chars_first_line = 0;
+      }
+  
++ #if defined (HANDLE_MULTIBYTE)
+  #define CHECK_INV_LBREAKS() \
+        do { \
+       if (newlines >= (inv_lbsize - 2)) \
+         { \
+           inv_lbsize *= 2; \
+           inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
++          _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \
+         } \
+        } while (0)
++ #else
++ #define CHECK_INV_LBREAKS() \
++       do { \
++      if (newlines >= (inv_lbsize - 2)) \
++        { \
++          inv_lbsize *= 2; \
++          inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
++        } \
++       } while (0)
++ #endif /* HANDLE_MULTIBYTE */
+  
+  #if defined (HANDLE_MULTIBYTE)         
+  #define CHECK_LPOS() \
+
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 12
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 13
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-014 b/src/patches/bash/bash32-014
new file mode 100644 (file)
index 0000000..b706505
--- /dev/null
@@ -0,0 +1,307 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-014
+
+Bug-Reported-by: Brett Stahlman <brettstahlman@comcast.net>
+Bug-Reference-ID: <000701c72d29$a227e0e0$5ec7cf47@computerroom>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00065.html
+
+Bug-Description:
+
+Bash mishandles word splitting under certain circumstances when IFS is
+null (IFS=).  Constructs affected include ${param/pat/sub} and others
+when expanding arrays (array[@]).
+
+Patch:
+
+*** ../bash-3.2-patched/array.c        Wed Jun  1 16:39:22 2005
+--- array.c    Mon Jan 15 22:58:00 2007
+***************
+*** 121,125 ****
+  }
+  
+- #ifdef INCLUDE_UNUSED
+  /*
+   * Make and return a new array composed of the elements in array A from
+--- 121,124 ----
+***************
+*** 142,146 ****
+               n = array_create_element (element_index(p), element_value(p));
+               ADD_BEFORE(a->head, n);
+!              mi = element_index(ae);
+       }
+       a->num_elements = i;
+--- 141,145 ----
+               n = array_create_element (element_index(p), element_value(p));
+               ADD_BEFORE(a->head, n);
+!              mi = element_index(n);
+       }
+       a->num_elements = i;
+***************
+*** 148,152 ****
+       return a;
+  }
+- #endif
+  
+  /*
+--- 147,150 ----
+***************
+*** 301,304 ****
+--- 299,319 ----
+  }
+  
++ ARRAY        *
++ array_quote_escapes(array)
++ ARRAY        *array;
++ {
++      ARRAY_ELEMENT   *a;
++      char    *t;
++ 
++      if (array == 0 || array_head(array) == 0 || array_empty(array))
++              return (ARRAY *)NULL;
++      for (a = element_forw(array->head); a != array->head; a = element_forw(a)) {
++              t = quote_escapes (a->value);
++              FREE(a->value);
++              a->value = t;
++      }
++      return array;
++ }
++ 
+  /*
+   * Return a string whose elements are the members of array A beginning at
+***************
+*** 312,318 ****
+  int  starsub, quoted;
+  {
+       ARRAY_ELEMENT   *h, *p;
+       arrayind_t      i;
+!      char            *ifs, sep[2];
+  
+       p = a ? array_head (a) : 0;
+--- 327,334 ----
+  int  starsub, quoted;
+  {
++      ARRAY           *a2;
+       ARRAY_ELEMENT   *h, *p;
+       arrayind_t      i;
+!      char            *ifs, sep[2], *t;
+  
+       p = a ? array_head (a) : 0;
+***************
+*** 337,340 ****
+--- 353,363 ----
+               ;
+  
++      a2 = array_slice(a, h, p);
++ 
++      if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
++              array_quote(a2);
++      else
++              array_quote_escapes(a2);
++ 
+       if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) {
+               ifs = getifs();
+***************
+*** 344,348 ****
+       sep[1] = '\0';
+  
+!      return (array_to_string_internal (h, p, sep, quoted));
+  }
+  
+--- 367,374 ----
+       sep[1] = '\0';
+  
+!      t = array_to_string (a2, sep, 0);
+!      array_dispose(a2);
+! 
+!      return t;
+  }
+  
+***************
+*** 368,372 ****
+  
+       if (mflags & MATCH_QUOTED)
+!              array_quote (a2);
+       if (mflags & MATCH_STARSUB) {
+               ifs = getifs();
+--- 394,400 ----
+  
+       if (mflags & MATCH_QUOTED)
+!              array_quote(a2);
+!      else
+!              array_quote_escapes(a2);
+       if (mflags & MATCH_STARSUB) {
+               ifs = getifs();
+*** ../bash-3.2-patched/array.h        Sun Jun  1 15:50:30 2003
+--- array.h    Mon Jan 15 22:35:35 2007
+***************
+*** 56,59 ****
+--- 56,60 ----
+  extern int   array_shift_element __P((ARRAY *, char *));
+  extern ARRAY *array_quote __P((ARRAY *));
++ extern ARRAY *array_quote_escapes __P((ARRAY *));
+  
+  extern char  *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int));
+*** ../bash-3.2-patched/subst.c        Fri Mar  2 16:20:50 2007
+--- subst.c    Tue Mar  6 11:40:55 2007
+***************
+*** 1888,1892 ****
+--- 1889,1899 ----
+  #endif
+  
++   /* XXX -- why call quote_list if ifs == 0?  we can get away without doing
++      it now that quote_escapes quotes spaces */
++ #if 0
+    tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0))
++ #else
++   tlist = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
++ #endif
+               ? quote_list (list)
+               : list_quote_escapes (list);
+***************
+*** 2922,2926 ****
+  /* Quote escape characters in string s, but no other characters.  This is
+     used to protect CTLESC and CTLNUL in variable values from the rest of
+!    the word expansion process after the variable is expanded. */
+  char *
+  quote_escapes (string)
+--- 2935,2944 ----
+  /* Quote escape characters in string s, but no other characters.  This is
+     used to protect CTLESC and CTLNUL in variable values from the rest of
+!    the word expansion process after the variable is expanded.  If IFS is
+!    null, we quote spaces as well, just in case we split on spaces later
+!    (in the case of unquoted $@, we will eventually attempt to split the
+!    entire word on spaces).  Corresponding code exists in dequote_escapes.
+!    Even if we don't end up splitting on spaces, quoting spaces is not a
+!    problem. */
+  char *
+  quote_escapes (string)
+***************
+*** 2930,2933 ****
+--- 2948,2952 ----
+    size_t slen;
+    char *result, *send;
++   int quote_spaces;
+    DECLARE_MBSTATE; 
+  
+***************
+*** 2935,2938 ****
+--- 2954,2958 ----
+    send = string + slen;
+  
++   quote_spaces = (ifs_value && *ifs_value == 0);
+    t = result = (char *)xmalloc ((slen * 2) + 1);
+    s = string;
+***************
+*** 2940,2944 ****
+    while (*s)
+      {
+!       if (*s == CTLESC || *s == CTLNUL)
+       *t++ = CTLESC;
+        COPY_CHAR_P (t, s, send);
+--- 2960,2964 ----
+    while (*s)
+      {
+!       if (*s == CTLESC || *s == CTLNUL || (quote_spaces && *s == ' '))
+       *t++ = CTLESC;
+        COPY_CHAR_P (t, s, send);
+***************
+*** 2982,2985 ****
+--- 3002,3006 ----
+    size_t slen;
+    char *result, *send;
++   int quote_spaces;
+    DECLARE_MBSTATE;
+  
+***************
+*** 2996,3002 ****
+      return (strcpy (result, s));
+  
+    while (*s)
+      {
+!       if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL))
+       {
+         s++;
+--- 3017,3024 ----
+      return (strcpy (result, s));
+  
++   quote_spaces = (ifs_value && *ifs_value == 0);
+    while (*s)
+      {
+!       if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL || (quote_spaces && s[1] == ' ')))
+       {
+         s++;
+***************
+*** 4462,4466 ****
+        RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE);
+  
+!       if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC || c == CTLNUL)
+       istring[istring_index++] = CTLESC;
+  
+--- 4498,4510 ----
+        RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE);
+  
+!       /* This is essentially quote_string inline */
+!       if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */)
+!      istring[istring_index++] = CTLESC;
+!       /* Escape CTLESC and CTLNUL in the output to protect those characters
+!       from the rest of the word expansions (word splitting and globbing.)
+!       This is essentially quote_escapes inline. */
+!       else if (c == CTLESC)
+!      istring[istring_index++] = CTLESC;
+!       else if (c == CTLNUL || (c == ' ' && (ifs_value && *ifs_value == 0)))
+       istring[istring_index++] = CTLESC;
+  
+***************
+*** 5552,5555 ****
+--- 5610,5616 ----
+        rely on array_subrange to understand how to deal with them). */
+        tt = array_subrange (array_cell (v), e1, e2, starsub, quoted);
++ #if 0
++       /* array_subrange now calls array_quote_escapes as appropriate, so the
++       caller no longer needs to. */
+        if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
+       {
+***************
+*** 5558,5561 ****
+--- 5619,5623 ----
+       }
+        else
++ #endif
+       temp = tt;
+        break;
+***************
+*** 5808,5811 ****
+--- 5870,5876 ----
+      case VT_ARRAYVAR:
+        temp = array_patsub (array_cell (v), p, rep, mflags);
++ #if 0
++       /* Don't need to do this anymore; array_patsub calls array_quote_escapes
++       as appropriate before adding the space separators. */
+        if (temp && (mflags & MATCH_QUOTED) == 0)
+       {
+***************
+*** 5814,5817 ****
+--- 5879,5883 ----
+         temp = tt;
+       }
++ #endif
+        break;
+  #endif
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 13
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 14
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-015 b/src/patches/bash/bash32-015
new file mode 100644 (file)
index 0000000..d887f6e
--- /dev/null
@@ -0,0 +1,95 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-015
+
+Bug-Reported-by:
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+Under certain circumstances, when using FIFOs for process substitution,
+bash fails to unlink the FIFOs.  This leaves open file descriptors that
+can cause the shell to hang and litters the file system.
+
+Patch:
+
+*** ../bash-3.2-patched/execute_cmd.c  Fri Mar  2 16:20:50 2007
+--- execute_cmd.c      Wed Jan 31 23:12:06 2007
+***************
+*** 3051,3054 ****
+--- 3051,3059 ----
+      command_line = savestring (the_printed_command_except_trap);
+  
++ #if defined (PROCESS_SUBSTITUTION)
++   if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0)
++     simple_command->flags &= ~CMD_NO_FORK;
++ #endif
++ 
+    execute_disk_command (words, simple_command->redirects, command_line,
+                       pipe_in, pipe_out, async, fds_to_close,
+*** ../bash-3.2-patched/subst.c        Fri Mar  2 16:20:50 2007
+--- subst.c    Tue Mar  6 11:40:55 2007
+***************
+*** 4129,4132 ****
+--- 4151,4160 ----
+  }
+  
++ int
++ fifos_pending ()
++ {
++   return nfifo;
++ }
++ 
+  static char *
+  make_named_pipe ()
+***************
+*** 4178,4181 ****
+--- 4206,4215 ----
+  }
+  
++ int
++ fifos_pending ()
++ {
++   return 0;  /* used for cleanup; not needed with /dev/fd */
++ }
++ 
+  void
+  unlink_fifo_list ()
+***************
+*** 4671,4674 ****
+--- 4719,4725 ----
+        last_command_exit_value = rc;
+        rc = run_exit_trap ();
++ #if defined (PROCESS_SUBSTITUTION)
++       unlink_fifo_list ();
++ #endif
+        exit (rc);
+      }
+*** ../bash-3.2-patched/subst.h        Tue Sep 19 08:34:41 2006
+--- subst.h    Wed Jan 10 09:46:47 2007
+***************
+*** 223,226 ****
+--- 223,227 ----
+  extern char *pat_subst __P((char *, char *, char *, int));
+  
++ extern int fifos_pending __P((void));
+  extern void unlink_fifo_list __P((void));
+
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 14
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 15
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-016 b/src/patches/bash/bash32-016
new file mode 100644 (file)
index 0000000..a0f065a
--- /dev/null
@@ -0,0 +1,52 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-016
+
+Bug-Reported-by: Peter Volkov <torre_cremata@mail.ru>
+Bug-Reference-ID: <1171795523.8021.18.camel@localhost>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-02/msg00054.html
+
+Bug-Description:
+
+When moving the cursor, bash sometimes misplaces the cursor when the prompt
+contains two or more multibyte characters.  The particular circumstance that
+uncovered the problem was having the (multibyte) current directory name in
+the prompt string.
+
+Patch:
+
+*** ../bash-3.2/lib/readline/display.c Fri Jan 19 13:34:50 2007
+--- lib/readline/display.c     Sat Mar 10 17:25:44 2007
+***************
+*** 1745,1749 ****
+      {
+        dpos = _rl_col_width (data, 0, new);
+!       if (dpos > prompt_last_invisible)              /* XXX - don't use woff here */
+       {
+         dpos -= woff;
+--- 1745,1752 ----
+      {
+        dpos = _rl_col_width (data, 0, new);
+!       /* Use NEW when comparing against the last invisible character in the
+!       prompt string, since they're both buffer indices and DPOS is a
+!       desired display position. */
+!       if (new > prompt_last_invisible)               /* XXX - don't use woff here */
+       {
+         dpos -= woff;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 15
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 16
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-017 b/src/patches/bash/bash32-017
new file mode 100644 (file)
index 0000000..99e5e70
--- /dev/null
@@ -0,0 +1,85 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-017
+
+Bug-Reported-by: Peter Volkov <torre_cremata@mail.ru>
+Bug-Reference-ID: <1173636022.7039.36.camel@localhost>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html
+
+Bug-Description:
+
+When restoring the original prompt after finishing an incremental search,
+bash sometimes places the cursor incorrectly if the primary prompt contains
+invisible characters.
+
+Patch:
+
+*** ../bash-3.2.16/lib/readline/display.c      Fri Apr 20 13:30:16 2007
+--- lib/readline/display.c     Fri Apr 20 15:17:01 2007
+***************
+*** 1599,1604 ****
+         if (temp > 0)
+           {
+             _rl_output_some_chars (nfd, temp);
+!            _rl_last_c_pos += _rl_col_width (nfd, 0, temp);;
+           }
+       }
+--- 1599,1618 ----
+         if (temp > 0)
+           {
++            /* If nfd begins at the prompt, or before the invisible
++               characters in the prompt, we need to adjust _rl_last_c_pos
++               in a multibyte locale to account for the wrap offset and
++               set cpos_adjusted accordingly. */
+             _rl_output_some_chars (nfd, temp);
+!            if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+!              {
+!                   _rl_last_c_pos += _rl_col_width (nfd, 0, temp);
+!                   if (current_line == 0 && wrap_offset &&  ((nfd - new) <= prompt_last_invisible))
+!                  {
+!                    _rl_last_c_pos -= wrap_offset;
+!                    cpos_adjusted = 1;
+!                  }
+!              }
+!               else
+!                 _rl_last_c_pos += temp;
+           }
+       }
+***************
+*** 1608,1613 ****
+--- 1622,1639 ----
+         if (temp > 0)
+           {
++            /* If nfd begins at the prompt, or before the invisible
++               characters in the prompt, we need to adjust _rl_last_c_pos
++               in a multibyte locale to account for the wrap offset and
++               set cpos_adjusted accordingly. */
+             _rl_output_some_chars (nfd, temp);
+             _rl_last_c_pos += col_temp;               /* XXX */
++            if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
++              {
++                if (current_line == 0 && wrap_offset &&  ((nfd - new) <= prompt_last_invisible))
++                  {
++                    _rl_last_c_pos -= wrap_offset;
++                    cpos_adjusted = 1;
++                  }
++              }
+           }
+         lendiff = (oe - old) - (ne - new);
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 16
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 17
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-018 b/src/patches/bash/bash32-018
new file mode 100644 (file)
index 0000000..d729aaf
--- /dev/null
@@ -0,0 +1,98 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-018
+
+Bug-Reported-by:       osicka@post.cz
+Bug-Reference-ID:      <228.177-19682-1132061412-1179356692@post.cz>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00061.html
+
+Bug-Description:
+
+In certain cases, bash can lose the saved status of a background job, though
+it should still be reported by `wait'.  Bash can also loop infinitely after
+creating and waiting for 4096 jobs.
+
+Patch:
+
+*** ../bash-20070510/jobs.c    Thu Mar  8 16:05:50 2007
+--- jobs.c     Fri May 18 11:40:14 2007
+***************
+*** 784,792 ****
+      {
+        old = js.j_firstj++;
+        while (js.j_firstj != old)
+       {
+         if (js.j_firstj >= js.j_jobslots)
+           js.j_firstj = 0;
+!        if (jobs[js.j_firstj])
+           break;
+         js.j_firstj++;
+--- 784,794 ----
+      {
+        old = js.j_firstj++;
++       if (old >= js.j_jobslots)
++      old = js.j_jobslots - 1;
+        while (js.j_firstj != old)
+       {
+         if (js.j_firstj >= js.j_jobslots)
+           js.j_firstj = 0;
+!        if (jobs[js.j_firstj] || js.j_firstj == old)  /* needed if old == 0 */
+           break;
+         js.j_firstj++;
+***************
+*** 798,806 ****
+      {
+        old = js.j_lastj--;
+        while (js.j_lastj != old)
+       {
+         if (js.j_lastj < 0)
+           js.j_lastj = js.j_jobslots - 1;
+!        if (jobs[js.j_lastj])
+           break;
+         js.j_lastj--;
+--- 800,810 ----
+      {
+        old = js.j_lastj--;
++       if (old < 0)
++      old = 0;
+        while (js.j_lastj != old)
+       {
+         if (js.j_lastj < 0)
+           js.j_lastj = js.j_jobslots - 1;
+!        if (jobs[js.j_lastj] || js.j_lastj == old)    /* needed if old == js.j_jobslots */
+           break;
+         js.j_lastj--;
+***************
+*** 964,968 ****
+    realloc_jobs_list ();
+  
+!   return (js.j_lastj);
+  }
+  
+--- 975,983 ----
+    realloc_jobs_list ();
+  
+! #ifdef DEBUG
+!   itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
+! #endif
+! 
+!   return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
+  }
+  
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 17
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 18
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-019 b/src/patches/bash/bash32-019
new file mode 100644 (file)
index 0000000..647bd1f
--- /dev/null
@@ -0,0 +1,343 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-019
+
+Bug-Reported-by:       Thomas Loeber <ifp@loeber1.de>
+Bug-Reference-ID:      <200703082223.08919.ifp@loeber1.de>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00036.html
+
+Bug-Description:
+
+When rl_read_key returns -1, indicating that bash's controlling terminal
+has been invalidated for some reason (e.g., receiving a SIGHUP), the error
+status was not reported correctly to the caller.  This could cause input
+loops. 
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/complete.c        Fri Jul 28 11:35:49 2006
+--- lib/readline/complete.c    Tue Mar 13 08:50:16 2007
+***************
+*** 429,433 ****
+        if (c == 'n' || c == 'N' || c == RUBOUT)
+       return (0);
+!       if (c == ABORT_CHAR)
+       _rl_abort_internal ();
+        if (for_pager && (c == NEWLINE || c == RETURN))
+--- 440,444 ----
+        if (c == 'n' || c == 'N' || c == RUBOUT)
+       return (0);
+!       if (c == ABORT_CHAR || c < 0)
+       _rl_abort_internal ();
+        if (for_pager && (c == NEWLINE || c == RETURN))
+*** ../bash-3.2-patched/lib/readline/input.c   Wed Aug 16 15:15:16 2006
+--- lib/readline/input.c       Wed May  2 16:07:59 2007
+***************
+*** 514,518 ****
+       int size;
+  {
+!   int mb_len = 0;
+    size_t mbchar_bytes_length;
+    wchar_t wc;
+--- 522,526 ----
+       int size;
+  {
+!   int mb_len, c;
+    size_t mbchar_bytes_length;
+    wchar_t wc;
+***************
+*** 521,531 ****
+    memset(&ps, 0, sizeof (mbstate_t));
+    memset(&ps_back, 0, sizeof (mbstate_t));
+!   
+    while (mb_len < size)
+      {
+        RL_SETSTATE(RL_STATE_MOREINPUT);
+!       mbchar[mb_len++] = rl_read_key ();
+        RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  
+        mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
+        if (mbchar_bytes_length == (size_t)(-1))
+--- 529,545 ----
+    memset(&ps, 0, sizeof (mbstate_t));
+    memset(&ps_back, 0, sizeof (mbstate_t));
+! 
+!   mb_len = 0;  
+    while (mb_len < size)
+      {
+        RL_SETSTATE(RL_STATE_MOREINPUT);
+!       c = rl_read_key ();
+        RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  
++       if (c < 0)
++      break;
++ 
++       mbchar[mb_len++] = c;
++ 
+        mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
+        if (mbchar_bytes_length == (size_t)(-1))
+***************
+*** 565,569 ****
+    c = first;
+    memset (mb, 0, mlen);
+!   for (i = 0; i < mlen; i++)
+      {
+        mb[i] = (char)c;
+--- 579,583 ----
+    c = first;
+    memset (mb, 0, mlen);
+!   for (i = 0; c >= 0 && i < mlen; i++)
+      {
+        mb[i] = (char)c;
+*** ../bash-3.2-patched/lib/readline/isearch.c Mon Dec 26 17:18:53 2005
+--- lib/readline/isearch.c     Fri Mar  9 14:30:59 2007
+***************
+*** 328,333 ****
+  
+    f = (rl_command_func_t *)NULL;
+!  
+!  /* Translate the keys we do something with to opcodes. */
+    if (c >= 0 && _rl_keymap[c].type == ISFUNC)
+      {
+--- 328,340 ----
+  
+    f = (rl_command_func_t *)NULL;
+! 
+!   if (c < 0)
+!     {
+!       cxt->sflags |= SF_FAILED;
+!       cxt->history_pos = cxt->last_found_line;
+!       return -1;
+!     }
+! 
+!   /* Translate the keys we do something with to opcodes. */
+    if (c >= 0 && _rl_keymap[c].type == ISFUNC)
+      {
+*** ../bash-3.2-patched/lib/readline/misc.c    Mon Dec 26 17:20:46 2005
+--- lib/readline/misc.c        Fri Mar  9 14:44:11 2007
+***************
+*** 147,150 ****
+--- 147,152 ----
+         rl_clear_message ();
+         RL_UNSETSTATE(RL_STATE_NUMERICARG);
++        if (key < 0)
++          return -1;
+         return (_rl_dispatch (key, _rl_keymap));
+       }
+*** ../bash-3.2-patched/lib/readline/readline.c        Wed Aug 16 15:00:36 2006
+--- lib/readline/readline.c    Fri Mar  9 14:47:24 2007
+***************
+*** 646,649 ****
+--- 669,677 ----
+      {
+        nkey = _rl_subseq_getchar (cxt->okey);
++       if (nkey < 0)
++      {
++        _rl_abort_internal ();
++        return -1;
++      }
+        r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg);
+        cxt->flags |= KSEQ_DISPATCHED;
+*** ../bash-3.2-patched/lib/readline/text.c    Fri Jul 28 11:55:27 2006
+--- lib/readline/text.c        Sun Mar 25 13:41:38 2007
+***************
+*** 858,861 ****
+--- 864,870 ----
+    RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  
++   if (c < 0)
++     return -1;
++ 
+  #if defined (HANDLE_SIGNALS)
+    if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
+***************
+*** 1521,1524 ****
+--- 1530,1536 ----
+    mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX);
+  
++   if (mb_len <= 0)
++     return -1;
++ 
+    if (count < 0)
+      return (_rl_char_search_internal (-count, bdir, mbchar, mb_len));
+***************
+*** 1537,1540 ****
+--- 1549,1555 ----
+    RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  
++   if (c < 0)
++     return -1;
++ 
+    if (count < 0)
+      return (_rl_char_search_internal (-count, bdir, c));
+*** ../bash-3.2-patched/lib/readline/vi_mode.c Sat Jul 29 16:42:28 2006
+--- lib/readline/vi_mode.c     Fri Mar  9 15:02:11 2007
+***************
+*** 887,890 ****
+--- 887,897 ----
+    c = rl_read_key ();
+    RL_UNSETSTATE(RL_STATE_MOREINPUT);
++ 
++   if (c < 0)
++     {
++       *nextkey = 0;
++       return -1;
++     }
++ 
+    *nextkey = c;
+  
+***************
+*** 903,906 ****
+--- 910,918 ----
+         c = rl_read_key ();   /* real command */
+         RL_UNSETSTATE(RL_STATE_MOREINPUT);
++        if (c < 0)
++          {
++            *nextkey = 0;
++            return -1;
++          }
+         *nextkey = c;
+       }
+***************
+*** 1225,1236 ****
+       _rl_callback_generic_arg *data;
+  {
+  #if defined (HANDLE_MULTIBYTE)
+!   _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
+  #else
+    RL_SETSTATE(RL_STATE_MOREINPUT);
+!   _rl_vi_last_search_char = rl_read_key ();
+    RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  #endif
+  
+    _rl_callback_func = 0;
+    _rl_want_redisplay = 1;
+--- 1243,1262 ----
+       _rl_callback_generic_arg *data;
+  {
++   int c;
+  #if defined (HANDLE_MULTIBYTE)
+!   c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
+  #else
+    RL_SETSTATE(RL_STATE_MOREINPUT);
+!   c = rl_read_key ();
+    RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  #endif
+  
++   if (c <= 0)
++     return -1;
++ 
++ #if !defined (HANDLE_MULTIBYTE)
++   _rl_vi_last_search_char = c;
++ #endif
++ 
+    _rl_callback_func = 0;
+    _rl_want_redisplay = 1;
+***************
+*** 1248,1251 ****
+--- 1274,1278 ----
+       int count, key;
+  {
++   int c;
+  #if defined (HANDLE_MULTIBYTE)
+    static char *target;
+***************
+*** 1294,1302 ****
+       {
+  #if defined (HANDLE_MULTIBYTE)
+!        _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
+  #else
+         RL_SETSTATE(RL_STATE_MOREINPUT);
+!        _rl_vi_last_search_char = rl_read_key ();
+         RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  #endif
+       }
+--- 1321,1335 ----
+       {
+  #if defined (HANDLE_MULTIBYTE)
+!        c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
+!        if (c <= 0)
+!          return -1;
+!        _rl_vi_last_search_mblen = c;
+  #else
+         RL_SETSTATE(RL_STATE_MOREINPUT);
+!        c = rl_read_key ();
+         RL_UNSETSTATE(RL_STATE_MOREINPUT);
++        if (c < 0)
++          return -1;
++        _rl_vi_last_search_char = c;
+  #endif
+       }
+***************
+*** 1468,1471 ****
+--- 1501,1507 ----
+    RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  
++   if (c < 0)
++     return -1;
++ 
+  #if defined (HANDLE_MULTIBYTE)
+    if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+***************
+*** 1486,1489 ****
+--- 1522,1528 ----
+    _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+  
++   if (c < 0)
++     return -1;
++ 
+    _rl_callback_func = 0;
+    _rl_want_redisplay = 1;
+***************
+*** 1517,1520 ****
+--- 1556,1562 ----
+      _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+  
++   if (c < 0)
++     return -1;
++ 
+    return (_rl_vi_change_char (count, c, mb));
+  }
+***************
+*** 1651,1655 ****
+    RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  
+!   if (ch < 'a' || ch > 'z')
+      {
+        rl_ding ();
+--- 1693,1697 ----
+    RL_UNSETSTATE(RL_STATE_MOREINPUT);
+  
+!   if (ch < 0 || ch < 'a' || ch > 'z')        /* make test against 0 explicit */
+      {
+        rl_ding ();
+***************
+*** 1703,1707 ****
+        return 0;
+      }
+!   else if (ch < 'a' || ch > 'z')
+      {
+        rl_ding ();
+--- 1745,1749 ----
+        return 0;
+      }
+!   else if (ch < 0 || ch < 'a' || ch > 'z')   /* make test against 0 explicit */
+      {
+        rl_ding ();
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 18
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 19
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-020 b/src/patches/bash/bash32-020
new file mode 100644 (file)
index 0000000..8c7e328
--- /dev/null
@@ -0,0 +1,183 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-020
+
+Bug-Reported-by:       Ian A Watson <WATSON_IAN_A@LILLY.COM>
+Bug-Reference-ID:      <OFEC551808.69D02C7F-ON8525729A.0045708D-8525729A.0046150B@EliLilly.lilly.com>
+Bug-Reference-URL:
+
+Bug-Description:
+
+In some cases of error processing, a jump back to the top-level processing
+loop from a builtin command  would leave the shell in an inconsistent state.
+
+Patch:
+
+*** ../bash-3.2-patched/sig.c  Wed Jan 25 14:57:59 2006
+--- sig.c      Sat Mar 10 11:11:30 2007
+***************
+*** 351,354 ****
+--- 351,373 ----
+  #undef XHANDLER
+  
++ /* Run some of the cleanups that should be performed when we run
++    jump_to_top_level from a builtin command context.  XXX - might want to
++    also call reset_parser here. */
++ void
++ top_level_cleanup ()
++ {
++   /* Clean up string parser environment. */
++   while (parse_and_execute_level)
++     parse_and_execute_cleanup ();
++ 
++ #if defined (PROCESS_SUBSTITUTION)
++   unlink_fifo_list ();
++ #endif /* PROCESS_SUBSTITUTION */
++ 
++   run_unwind_protects ();
++   loop_level = continuing = breaking = 0;
++   return_catch_flag = 0;
++ }
++ 
+  /* What to do when we've been interrupted, and it is safe to handle it. */
+  void
+*** ../bash-3.2-patched/sig.h  Wed Jan 25 14:50:27 2006
+--- sig.h      Sat Mar 10 11:14:18 2007
+***************
+*** 122,125 ****
+--- 122,126 ----
+  extern void initialize_terminating_signals __P((void));
+  extern void reset_terminating_signals __P((void));
++ extern void top_level_cleanup __P((void));
+  extern void throw_to_top_level __P((void));
+  extern void jump_to_top_level __P((int)) __attribute__((__noreturn__));
+*** ../bash-3.2-patched/builtins/common.c      Tue Apr  3 16:47:13 2007
+--- builtins/common.c  Mon Apr 30 15:01:33 2007
+***************
+*** 132,135 ****
+--- 132,136 ----
+      {
+        builtin_error (_("too many arguments"));
++       top_level_cleanup ();
+        jump_to_top_level (DISCARD);
+      }
+***************
+*** 396,400 ****
+           throw_to_top_level ();
+         else
+!          jump_to_top_level (DISCARD);
+       }
+        no_args (list->next);
+--- 410,417 ----
+           throw_to_top_level ();
+         else
+!          {
+!            top_level_cleanup ();
+!            jump_to_top_level (DISCARD);
+!          }
+       }
+        no_args (list->next);
+*** ../bash-3.2-patched/subst.c        Tue Apr  3 16:47:19 2007
+--- subst.c    Tue Jul 17 09:45:11 2007
+***************
+*** 1279,1283 ****
+        if (no_longjmp_on_fatal_error == 0)
+       {                       /* { */
+!        report_error ("bad substitution: no closing `%s' in %s", "}", string);
+         last_command_exit_value = EXECUTION_FAILURE;
+         exp_jump_to_top_level (DISCARD);
+--- 1290,1294 ----
+        if (no_longjmp_on_fatal_error == 0)
+       {                       /* { */
+!        report_error (_("bad substitution: no closing `%s' in %s"), "}", string);
+         last_command_exit_value = EXECUTION_FAILURE;
+         exp_jump_to_top_level (DISCARD);
+***************
+*** 7662,7665 ****
+--- 7706,7711 ----
+    expand_no_split_dollar_star = 0;   /* XXX */
+    expanding_redir = 0;
++ 
++   top_level_cleanup ();                      /* from sig.c */
+  
+    jump_to_top_level (v);
+***************
+*** 7880,7884 ****
+           {
+             report_error (_("no match: %s"), tlist->word->word);
+!            jump_to_top_level (DISCARD);
+           }
+         else if (allow_null_glob_expansion == 0)
+--- 7927,7931 ----
+           {
+             report_error (_("no match: %s"), tlist->word->word);
+!            exp_jump_to_top_level (DISCARD);
+           }
+         else if (allow_null_glob_expansion == 0)
+*** ../bash-3.2-patched/arrayfunc.c    Thu Jul 27 09:37:59 2006
+--- arrayfunc.c        Thu May 31 11:55:46 2007
+***************
+*** 619,622 ****
+--- 619,624 ----
+      {
+        last_command_exit_value = EXECUTION_FAILURE;
++ 
++       top_level_cleanup ();      
+        jump_to_top_level (DISCARD);
+      }
+*** ../bash-3.2-patched/expr.c Wed Dec 28 17:47:03 2005
+--- expr.c     Tue Apr 24 14:17:59 2007
+***************
+*** 930,933 ****
+--- 930,934 ----
+       {
+         expr_unwind ();
++        top_level_cleanup ();
+         jump_to_top_level (DISCARD);
+       }
+*** ../bash-3.2-patched/variables.c    Fri Sep  8 13:33:32 2006
+--- variables.c        Tue Jul 17 09:54:59 2007
+***************
+*** 1822,1830 ****
+         lval = evalexp (oval, &expok);        /* ksh93 seems to do this */
+         if (expok == 0)
+!          jump_to_top_level (DISCARD);
+       }
+        rval = evalexp (value, &expok);
+        if (expok == 0)
+!      jump_to_top_level (DISCARD);
+        if (flags & ASS_APPEND)
+       rval += lval;
+--- 1855,1869 ----
+         lval = evalexp (oval, &expok);        /* ksh93 seems to do this */
+         if (expok == 0)
+!          {
+!            top_level_cleanup ();
+!            jump_to_top_level (DISCARD);
+!          }
+       }
+        rval = evalexp (value, &expok);
+        if (expok == 0)
+!      {
+!        top_level_cleanup ();
+!        jump_to_top_level (DISCARD);
+!      }
+        if (flags & ASS_APPEND)
+       rval += lval;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 19
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 20
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-021 b/src/patches/bash/bash32-021
new file mode 100644 (file)
index 0000000..003489c
--- /dev/null
@@ -0,0 +1,72 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-021
+
+Bug-Reported-by:       BAGSHAW Paul RD-TECH-REN <paul.bagshaw@orange-ftgroup.com>
+Bug-Reference-ID:      <941BA0BF46DB8F4983FF7C8AFE800BC205EA7D4B@ftrdmel3.rd.francetelecom.fr>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00065.html
+
+Bug-Description:
+
+When the parser read a backslash-escaped character that would be treated
+internally as an escape, it would double the number of escape characters.
+
+Patch:
+
+*** ../bash-3.2-patched/parse.y        Mon Oct 30 17:22:00 2006
+--- parse.y    Sat Mar 24 17:13:20 2007
+***************
+*** 3377,3381 ****
+       {
+         pass_next_character = 0;
+!        goto got_character;
+       }
+  
+--- 3377,3381 ----
+       {
+         pass_next_character = 0;
+!        goto got_escaped_character;
+       }
+  
+***************
+*** 3651,3660 ****
+      got_character:
+  
+-       all_digit_token &= DIGIT (character);
+-       dollar_present |= character == '$';
+- 
+        if (character == CTLESC || character == CTLNUL)
+       token[token_index++] = CTLESC;
+  
+        token[token_index++] = character;
+  
+--- 3651,3662 ----
+      got_character:
+  
+        if (character == CTLESC || character == CTLNUL)
+       token[token_index++] = CTLESC;
+  
++     got_escaped_character:
++ 
++       all_digit_token &= DIGIT (character);
++       dollar_present |= character == '$';
++ 
+        token[token_index++] = character;
+  
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 20
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 21
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-022 b/src/patches/bash/bash32-022
new file mode 100644 (file)
index 0000000..d3679e6
--- /dev/null
@@ -0,0 +1,126 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-022
+
+Bug-Reported-by:       Chet Ramey <chet.ramey@cwru.edu>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+POSIX specifies that the `read' builtin invoked from an interative shell
+must prompt with $PS2 when a line is continued using a backslash while
+reading from a terminal.
+
+Patch:
+
+*** ../bash-3.2-patched/builtins/read.def      Tue Sep 19 08:45:48 2006
+--- builtins/read.def  Thu May 24 16:03:30 2007
+***************
+*** 128,133 ****
+  {
+    register char *varname;
+!   int size, i, nr, pass_next, saw_escape, eof, opt, retval, code;
+!   int input_is_tty, input_is_pipe, unbuffered_read;
+    int raw, edit, nchars, silent, have_timeout, fd;
+    unsigned int tmout;
+--- 131,136 ----
+  {
+    register char *varname;
+!   int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
+!   int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul;
+    int raw, edit, nchars, silent, have_timeout, fd;
+    unsigned int tmout;
+***************
+*** 135,139 ****
+    char c;
+    char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
+!   char *e, *t, *t1;
+    struct stat tsb;
+    SHELL_VAR *var;
+--- 138,142 ----
+    char c;
+    char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
+!   char *e, *t, *t1, *ps2;
+    struct stat tsb;
+    SHELL_VAR *var;
+***************
+*** 149,152 ****
+--- 152,156 ----
+    USE_VAR(i);
+    USE_VAR(pass_next);
++   USE_VAR(print_ps2);
+    USE_VAR(saw_escape);
+    USE_VAR(input_is_pipe);
+***************
+*** 164,167 ****
+--- 168,172 ----
+  #endif
+    USE_VAR(list);
++   USE_VAR(ps2);
+  
+    i = 0;             /* Index into the string that we are reading. */
+***************
+*** 387,391 ****
+  #endif
+  
+!   for (eof = retval = 0;;)
+      {
+  #if defined (READLINE)
+--- 394,399 ----
+  #endif
+  
+!   ps2 = 0;
+!   for (print_ps2 = eof = retval = 0;;)
+      {
+  #if defined (READLINE)
+***************
+*** 413,416 ****
+--- 421,433 ----
+  #endif
+  
++       if (print_ps2)
++      {
++        if (ps2 == 0)
++          ps2 = get_string_value ("PS2");
++        fprintf (stderr, "%s", ps2 ? ps2 : "");
++        fflush (stderr);
++        print_ps2 = 0;
++      }
++ 
+        if (unbuffered_read)
+       retval = zread (fd, &c, 1);
+***************
+*** 441,445 ****
+         pass_next = 0;
+         if (c == '\n')
+!          i--;                /* back up over the CTLESC */
+         else
+           goto add_char;
+--- 458,466 ----
+         pass_next = 0;
+         if (c == '\n')
+!          {
+!            i--;              /* back up over the CTLESC */
+!            if (interactive && input_is_tty && raw == 0)
+!              print_ps2 = 1;
+!          }
+         else
+           goto add_char;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 21
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 22
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-023 b/src/patches/bash/bash32-023
new file mode 100644 (file)
index 0000000..34a6394
--- /dev/null
@@ -0,0 +1,51 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-023
+
+Bug-Reported-by:       Chet Ramey <chet.ramey@cwru.edu>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+When an error occurs during the pattern removal word expansion, the shell
+can free unallocated memory or free memory multiple times.
+
+Patch:
+
+*** ../bash-3.2-patched/subst.c        Tue Apr  3 16:47:19 2007
+--- subst.c    Tue Jul 17 09:45:11 2007
+***************
+*** 3975,3979 ****
+      patstr++;
+  
+!   pattern = getpattern (patstr, quoted, 1);
+  
+    temp1 = (char *)NULL;              /* shut up gcc */
+--- 4008,4016 ----
+      patstr++;
+  
+!   /* Need to pass getpattern newly-allocated memory in case of expansion --
+!      the expansion code will free the passed string on an error. */
+!   temp1 = savestring (patstr);
+!   pattern = getpattern (temp1, quoted, 1);
+!   free (temp1);
+  
+    temp1 = (char *)NULL;              /* shut up gcc */
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 22
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 23
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-024 b/src/patches/bash/bash32-024
new file mode 100644 (file)
index 0000000..1575f37
--- /dev/null
@@ -0,0 +1,77 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-024
+
+Bug-Reported-by:       Peter Volkov <torre_cremata@mail.ru>
+Bug-Reference-ID:      <1178376645.9063.25.camel@localhost>
+Bug-Reference-URL:     http://bugs.gentoo.org/177095
+
+Bug-Description:
+
+The readline display code miscalculated the screen position when performing
+a redisplay in which the new text occupies more screen space that the old,
+but takes fewer bytes to do so (e.g., when replacing a shorter string
+containing multibyte characters with a longer one containing only ASCII).
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/display.c Thu Apr 26 11:38:22 2007
+--- lib/readline/display.c     Thu Jul 12 23:10:10 2007
+***************
+*** 1519,1527 ****
+        /* Non-zero if we're increasing the number of lines. */
+        int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
+        /* Sometimes it is cheaper to print the characters rather than
+        use the terminal's capabilities.  If we're growing the number
+        of lines, make sure we actually cause the new line to wrap
+        around on auto-wrapping terminals. */
+!       if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
+       {
+         /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
+--- 1568,1596 ----
+        /* Non-zero if we're increasing the number of lines. */
+        int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
++       /* If col_lendiff is > 0, implying that the new string takes up more
++       screen real estate than the old, but lendiff is < 0, meaning that it
++       takes fewer bytes, we need to just output the characters starting
++       from the first difference.  These will overwrite what is on the
++       display, so there's no reason to do a smart update.  This can really
++       only happen in a multibyte environment. */
++       if (lendiff < 0)
++      {
++        _rl_output_some_chars (nfd, temp);
++        _rl_last_c_pos += _rl_col_width (nfd, 0, temp);
++        /* If nfd begins before any invisible characters in the prompt,
++           adjust _rl_last_c_pos to account for wrap_offset and set
++           cpos_adjusted to let the caller know. */
++        if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
++          {
++            _rl_last_c_pos -= wrap_offset;
++            cpos_adjusted = 1;
++          }
++        return;
++      }
+        /* Sometimes it is cheaper to print the characters rather than
+        use the terminal's capabilities.  If we're growing the number
+        of lines, make sure we actually cause the new line to wrap
+        around on auto-wrapping terminals. */
+!       else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
+       {
+         /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 23
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 24
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-025 b/src/patches/bash/bash32-025
new file mode 100644 (file)
index 0000000..4d53d89
--- /dev/null
@@ -0,0 +1,79 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-025
+
+Bug-Reported-by:       Tom Bjorkholm <tom.bjorkholm@ericsson.com>
+Bug-Reference-ID:      <AEA1A32F001C6B4F98614B5B80D7647D01C075E9@esealmw115.eemea.ericsson.se>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-readline/2007-04/msg00004.html
+
+Bug-Description:
+
+An off-by-one error in readline's input buffering caused readline to drop
+each 511th character of buffered input (e.g., when pasting a large amount
+of data into a terminal window).
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/input.c   Wed Aug 16 15:15:16 2006
+--- lib/readline/input.c       Tue Jul 17 09:24:21 2007
+***************
+*** 134,139 ****
+  
+    *key = ibuffer[pop_index++];
+! 
+    if (pop_index >= ibuffer_len)
+      pop_index = 0;
+  
+--- 134,142 ----
+  
+    *key = ibuffer[pop_index++];
+! #if 0
+    if (pop_index >= ibuffer_len)
++ #else
++   if (pop_index > ibuffer_len)
++ #endif
+      pop_index = 0;
+  
+***************
+*** 251,255 ****
+       {
+         k = (*rl_getc_function) (rl_instream);
+!        rl_stuff_char (k);
+         if (k == NEWLINE || k == RETURN)
+           break;
+--- 254,259 ----
+       {
+         k = (*rl_getc_function) (rl_instream);
+!        if (rl_stuff_char (k) == 0)
+!          break;                      /* some problem; no more room */
+         if (k == NEWLINE || k == RETURN)
+           break;
+***************
+*** 374,378 ****
+--- 378,386 ----
+      }
+    ibuffer[push_index++] = key;
++ #if 0
+    if (push_index >= ibuffer_len)
++ #else
++   if (push_index > ibuffer_len)
++ #endif
+      push_index = 0;
+  
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 24
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 25
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-026 b/src/patches/bash/bash32-026
new file mode 100644 (file)
index 0000000..ba7de50
--- /dev/null
@@ -0,0 +1,82 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-026
+
+Bug-Reported-by:       Chet Ramey <chet.ramey@case.edu>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+This keeps the Apple linker from attempting to link bash against Apple's
+readline library "replacement" rather than the one shipped with bash.  It
+extends the configure workaround to Mac OS X Leopard (10.5).
+
+As a side effect, the patch updates the copyright date displayed in the
+version string.
+
+You must re-run configure after applying the patch, and before rebuilding
+bash.
+
+Patch:
+
+*** ../bash-3.2-patched/configure.in   2007-03-06 11:07:38.000000000 -0500
+--- configure.in       2007-11-23 15:37:41.000000000 -0500
+***************
+*** 519,523 ****
+               # dynamic version
+               case "${host_os}" in
+!              darwin8*)       READLINE_LIB='${READLINE_LIBRARY}' ;;
+               *)              READLINE_LIB=-lreadline ;;
+               esac
+--- 519,523 ----
+               # dynamic version
+               case "${host_os}" in
+!              darwin[[89]]*)  READLINE_LIB='${READLINE_LIBRARY}' ;;
+               *)              READLINE_LIB=-lreadline ;;
+               esac
+*** ../bash-3.2-patched/configure      2007-03-24 14:51:22.000000000 -0400
+--- configure  2007-11-23 15:46:15.000000000 -0500
+***************
+*** 4872,4876 ****
+               # dynamic version
+               case "${host_os}" in
+!              darwin8*)       READLINE_LIB='${READLINE_LIBRARY}' ;;
+               *)              READLINE_LIB=-lreadline ;;
+               esac
+--- 4872,4876 ----
+               # dynamic version
+               case "${host_os}" in
+!              darwin[89]*)    READLINE_LIB='${READLINE_LIBRARY}' ;;
+               *)              READLINE_LIB=-lreadline ;;
+               esac
+*** ../bash-3.2-patched/version.c      2005-05-16 11:58:34.000000000 -0400
+--- version.c  2007-11-23 16:03:40.000000000 -0500
+***************
+*** 80,83 ****
+    printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE);
+    if (extended)
+!     printf (_("Copyright (C) 2005 Free Software Foundation, Inc.\n"));
+  }
+--- 80,83 ----
+    printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE);
+    if (extended)
+!     printf (_("Copyright (C) 2007 Free Software Foundation, Inc.\n"));
+  }
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 25
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 26
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-027 b/src/patches/bash/bash32-027
new file mode 100644 (file)
index 0000000..5e110cb
--- /dev/null
@@ -0,0 +1,85 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-027
+
+Bug-Reported-by:       dAniel hAhler <ubuntu@thequod.de>
+Bug-Reference-ID:      <4702ED8A.5000503@thequod.de>
+Bug-Reference-URL:     https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938
+
+Bug-Description:
+
+When updating the display after displaying, for instance, a list of possible
+completions, readline will place the cursor at the wrong position if the
+prompt contains invisible characters and a newline.
+
+Patch:
+
+*** ../bash-3.2.25/lib/readline/display.c      Mon Aug  6 14:26:29 2007
+--- lib/readline/display.c     Wed Oct 10 22:43:58 2007
+***************
+*** 1049,1053 ****
+             else
+               tx = nleft;
+!            if (_rl_last_c_pos > tx)
+               {
+                 _rl_backspace (_rl_last_c_pos - tx);  /* XXX */
+--- 1049,1053 ----
+             else
+               tx = nleft;
+!            if (tx >= 0 && _rl_last_c_pos > tx)
+               {
+                 _rl_backspace (_rl_last_c_pos - tx);  /* XXX */
+***************
+*** 1205,1209 ****
+  {
+    register char *ofd, *ols, *oe, *nfd, *nls, *ne;
+!   int temp, lendiff, wsatend, od, nd;
+    int current_invis_chars;
+    int col_lendiff, col_temp;
+--- 1205,1209 ----
+  {
+    register char *ofd, *ols, *oe, *nfd, *nls, *ne;
+!   int temp, lendiff, wsatend, od, nd, o_cpos;
+    int current_invis_chars;
+    int col_lendiff, col_temp;
+***************
+*** 1466,1469 ****
+--- 1466,1471 ----
+      }
+  
++   o_cpos = _rl_last_c_pos;
++ 
+    /* When this function returns, _rl_last_c_pos is correct, and an absolute
+       cursor postion in multibyte mode, but a buffer index when not in a
+***************
+*** 1475,1479 ****
+       invisible characters in the prompt string.  Let's see if setting this when
+       we make sure we're at the end of the drawn prompt string works. */
+!   if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars)
+      cpos_adjusted = 1;
+  #endif
+--- 1477,1483 ----
+       invisible characters in the prompt string.  Let's see if setting this when
+       we make sure we're at the end of the drawn prompt string works. */
+!   if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && 
+!       (_rl_last_c_pos > 0 || o_cpos > 0) &&
+!       _rl_last_c_pos == prompt_physical_chars)
+      cpos_adjusted = 1;
+  #endif
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 26
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 27
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-028 b/src/patches/bash/bash32-028
new file mode 100644 (file)
index 0000000..e818294
--- /dev/null
@@ -0,0 +1,60 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-028
+
+Bug-Reported-by:       dAniel hAhler <ubuntu@thequod.de>
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+Under some circumstances, readline will incorrectly display a prompt string
+containing invisible characters after the final newline.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400
+--- lib/readline/display.c     2007-11-10 17:51:29.000000000 -0500
+***************
+*** 392,396 ****
+        local_prompt = expand_prompt (p, &prompt_visible_length,
+                                      &prompt_last_invisible,
+!                                     (int *)NULL,
+                                      &prompt_physical_chars);
+        c = *t; *t = '\0';
+--- 420,424 ----
+        local_prompt = expand_prompt (p, &prompt_visible_length,
+                                      &prompt_last_invisible,
+!                                     &prompt_invis_chars_first_line,
+                                      &prompt_physical_chars);
+        c = *t; *t = '\0';
+***************
+*** 399,403 ****
+        local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
+                                                  (int *)NULL,
+!                                                 &prompt_invis_chars_first_line,
+                                                  (int *)NULL);
+        *t = c;
+--- 427,431 ----
+        local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
+                                                  (int *)NULL,
+!                                                 (int *)NULL,
+                                                  (int *)NULL);
+        *t = c;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 27
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 28
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-029 b/src/patches/bash/bash32-029
new file mode 100644 (file)
index 0000000..9de2085
--- /dev/null
@@ -0,0 +1,52 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-029
+
+Bug-Reported-by:       Tomas Janousek <tjanouse@redhat.com>
+Bug-Reference-ID:      <20071102104034.GA26893@redhat.com>
+Bug-Reference-URL:     https://bugzilla.redhat.com/show_bug.cgi?id=286861
+
+Bug-Description:
+
+When the bash arithmetic expression evaluator has temporarily turned off
+evalation, such as when parsing a pre- or post-decrement or -increment
+operator, and an error occurs, evaluation is not re-enabled.
+
+Patch:
+
+*** ../bash-3.2-patched/expr.c 2007-08-25 13:47:05.000000000 -0400
+--- expr.c     2007-10-18 08:08:44.000000000 -0400
+***************
+*** 287,290 ****
+--- 287,292 ----
+      }
+    free (expr_stack[expr_depth]);     /* free the allocated EXPR_CONTEXT */
++ 
++   noeval = 0;        /* XXX */
+  }
+  
+***************
+*** 320,323 ****
+--- 322,326 ----
+  
+    val = 0;
++   noeval = 0;
+  
+    FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf));
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 28
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 29
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-030 b/src/patches/bash/bash32-030
new file mode 100644 (file)
index 0000000..3f12c28
--- /dev/null
@@ -0,0 +1,50 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-030
+
+Bug-Reported-by:       Paul Eggert <eggert@cs.ucla.edu> Andreas Schwab <schwab@suse.de>
+Bug-Reference-ID:      <877il0nu84.fsf_-_@penguin.cs.ucla.edu> <m28x5gparz.fsf@igel.home>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00023.html http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.htmlhttp://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.html
+
+Bug-Description:
+
+If redirections attached to a compound command fail, bash does not set the
+command's exit status correctly.  This only happens when the command is the
+first in a sequential list.
+
+Patch:
+
+*** ../bash-3.2-patched/execute_cmd.c  2007-03-24 14:51:05.000000000 -0400
+--- execute_cmd.c      2007-11-05 22:31:14.000000000 -0500
+***************
+*** 615,619 ****
+        redirection_undo_list = (REDIRECT *)NULL;
+        dispose_exec_redirects ();
+!       return (EXECUTION_FAILURE);
+      }
+  
+--- 620,624 ----
+        redirection_undo_list = (REDIRECT *)NULL;
+        dispose_exec_redirects ();
+!       return (last_command_exit_value = EXECUTION_FAILURE);
+      }
+
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 29
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 30
+  
+  #endif /* _PATCHLEVEL_H_ */
+
+  
diff --git a/src/patches/bash/bash32-031 b/src/patches/bash/bash32-031
new file mode 100644 (file)
index 0000000..6c96fb9
--- /dev/null
@@ -0,0 +1,62 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-031
+
+Bug-Reported-by:       Miroslav Lichvar <mlichvar@redhat.com>
+Bug-Reference-ID:      Fri, 02 Nov 2007 14:07:45 +0100
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-readline/2007-11/msg00000.html
+
+Bug-Description:
+
+In certain cases when outputting characters at the end of the line,
+e.g., when displaying the prompt string, readline positions the cursor
+incorrectly if the prompt string contains invisible characters and the
+text being drawn begins before the last invisible character in the line.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400
+--- lib/readline/display.c     2007-11-10 17:51:29.000000000 -0500
+***************
+*** 1566,1574 ****
+         else
+           {
+-            /* We have horizontal scrolling and we are not inserting at
+-               the end.  We have invisible characters in this line.  This
+-               is a dumb update. */
+             _rl_output_some_chars (nfd, temp);
+             _rl_last_c_pos += col_temp;
+             return;
+           }
+--- 1619,1632 ----
+         else
+           {
+             _rl_output_some_chars (nfd, temp);
+             _rl_last_c_pos += col_temp;
++            /* If nfd begins before any invisible characters in the prompt,
++               adjust _rl_last_c_pos to account for wrap_offset and set
++               cpos_adjusted to let the caller know. */
++            if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
++              {
++                _rl_last_c_pos -= wrap_offset;
++                cpos_adjusted = 1;
++              }
+             return;
+           }
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 30
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 31
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-032 b/src/patches/bash/bash32-032
new file mode 100644 (file)
index 0000000..5e53e29
--- /dev/null
@@ -0,0 +1,47 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-032
+
+Bug-Reported-by:       Uwe Doering <gemini@geminix.org>
+Bug-Reference-ID:      <46F3DD72.2090801@geminix.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00102.html
+
+Bug-Description:
+
+There is an off-by-one error in the code that buffers characters received
+very quickly in succession, causing characters to be dropped.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/input.c   2007-08-25 13:47:10.000000000 -0400
+--- lib/readline/input.c       2007-10-12 22:55:25.000000000 -0400
+***************
+*** 155,159 ****
+        pop_index--;
+        if (pop_index < 0)
+!      pop_index = ibuffer_len - 1;
+        ibuffer[pop_index] = key;
+        return (1);
+--- 155,159 ----
+        pop_index--;
+        if (pop_index < 0)
+!      pop_index = ibuffer_len;
+        ibuffer[pop_index] = key;
+        return (1);
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 31
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 32
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-033 b/src/patches/bash/bash32-033
new file mode 100644 (file)
index 0000000..0d69810
--- /dev/null
@@ -0,0 +1,88 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-033
+
+Bug-Reported-by:       Christophe Martin <schplurtz@free.fr>
+Bug-Reference-ID:      <465ABA4A.3030805@free.fr>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00104.html
+
+Bug-Description:
+
+References made within a function to an uninitialized local array variable
+using the [*] subscript in a double-quoted string  can result in spurious
+ASCII 127 characters in the expanded value.
+
+Patch:
+
+*** ../bash-3.2-patched/arrayfunc.c    2007-08-25 13:47:05.000000000 -0400
+--- arrayfunc.c        2007-05-31 11:55:46.000000000 -0400
+***************
+*** 723,727 ****
+      {
+        if (rtype)
+!      *rtype = 1;
+        if (allow_all == 0)
+       {
+--- 723,727 ----
+      {
+        if (rtype)
+!      *rtype = (t[0] == '*') ? 1 : 2;
+        if (allow_all == 0)
+       {
+*** ../bash-3.2-patched/subst.c        2007-08-25 13:47:08.000000000 -0400
+--- subst.c    2007-11-14 15:43:00.000000000 -0500
+***************
+*** 4908,4915 ****
+    intmax_t arg_index;
+    SHELL_VAR *var;
+!   int atype;
+  
+    ret = 0;
+    temp = 0;
+  
+    /* Handle multiple digit arguments, as in ${11}. */  
+--- 4973,4981 ----
+    intmax_t arg_index;
+    SHELL_VAR *var;
+!   int atype, rflags;
+  
+    ret = 0;
+    temp = 0;
++   rflags = 0;
+  
+    /* Handle multiple digit arguments, as in ${11}. */  
+***************
+*** 4944,4947 ****
+--- 5010,5015 ----
+                 ? quote_string (temp)
+                 : quote_escapes (temp);
++       else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
++      rflags |= W_HASQUOTEDNULL;
+      }
+  #endif
+***************
+*** 4971,4974 ****
+--- 5039,5043 ----
+        ret = alloc_word_desc ();
+        ret->word = temp;
++       ret->flags |= rflags;
+      }
+    return ret;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 32
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 33
+  
+  #endif /* _PATCHLEVEL_H_ */
+
diff --git a/src/patches/bash/bash32-034 b/src/patches/bash/bash32-034
new file mode 100644 (file)
index 0000000..4f08162
--- /dev/null
@@ -0,0 +1,74 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-034
+
+Bug-Reported-by:       Ian Campbell <ian.campbell@xensource.com>
+Bug-Reference-ID:      <EXCHPAFExU3l5bhn1ow00001dfe@rpc.xensource.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2007-10/msg00060.html
+
+Bug-Description:
+
+The bash getcwd replacement will write past the end of allocated memory
+when it allocates the buffer itself if it uses the buffer size passed as
+an argument, and that size is less than the length of the pathname.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/sh/getcwd.c        2004-07-21 17:15:19.000000000 -0400
+--- lib/sh/getcwd.c    2007-12-31 19:26:36.000000000 -0500
+***************
+*** 252,268 ****
+    {
+      size_t len = pathbuf + pathsize - pathp;
+      if (buf == NULL)
+        {
+!      if (len < (size_t) size)
+!        len = size;
+!      buf = (char *) malloc (len);
+       if (buf == NULL)
+         goto lose2;
+        }
+!     else if ((size_t) size < len)
+!       {
+!      errno = ERANGE;
+!      goto lose2;
+!       }
+      (void) memcpy((PTR_T) buf, (PTR_T) pathp, len);
+    }
+--- 287,305 ----
+    {
+      size_t len = pathbuf + pathsize - pathp;
++     if (buf == NULL && size <= 0)
++       size = len;
++ 
++     if ((size_t) size < len)
++       {
++      errno = ERANGE;
++      goto lose2;
++       }
+      if (buf == NULL)
+        {
+!      buf = (char *) malloc (size);
+       if (buf == NULL)
+         goto lose2;
+        }
+! 
+      (void) memcpy((PTR_T) buf, (PTR_T) pathp, len);
+    }
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 33
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 34
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-035 b/src/patches/bash/bash32-035
new file mode 100644 (file)
index 0000000..55506ba
--- /dev/null
@@ -0,0 +1,159 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-035
+
+Bug-Reported-by:       Ingo Molnar <mingo@elte.hu>
+Bug-Reference-ID:      <20071205202901.GA25202@elte.hu>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2007-12/msg00014.html
+
+Bug-Description:
+
+Bash incorrectly puts the second and subsequent children spawned by a
+shell forked to run a command substitution in the wrong process group.
+
+Patch:
+
+*** ../bash-3.2-patched/subst.c        2007-12-13 22:31:21.000000000 -0500
+--- subst.c    2008-01-17 22:48:15.000000000 -0500
+***************
+*** 4621,4627 ****
+  
+  #if defined (JOB_CONTROL)
+    set_sigchld_handler ();
+    stop_making_children ();
+!   pipeline_pgrp = old_pipeline_pgrp;
+  #else
+    stop_making_children ();
+--- 4721,4728 ----
+  
+  #if defined (JOB_CONTROL)
+    set_sigchld_handler ();
+    stop_making_children ();
+!   if (pid != 0)
+!     pipeline_pgrp = old_pipeline_pgrp;
+  #else
+    stop_making_children ();
+*** ../bash-3.2-patched/jobs.c 2007-08-25 13:46:59.000000000 -0400
+--- jobs.c     2007-12-08 16:47:43.000000000 -0500
+***************
+*** 251,254 ****
+--- 251,255 ----
+  static int set_job_status_and_cleanup __P((int));
+  
++ static WAIT job_signal_status __P((int));
+  static WAIT raw_job_exit_status __P((int));
+  
+***************
+*** 2220,2223 ****
+--- 2238,2261 ----
+  }
+  
++ static WAIT
++ job_signal_status (job)
++      int job;
++ {
++   register PROCESS *p;
++   WAIT s;
++ 
++   p = jobs[job]->pipe;
++   do
++     {
++       s = p->status;
++       if (WIFSIGNALED(s) || WIFSTOPPED(s))
++      break;
++       p = p->next;
++     }
++   while (p != jobs[job]->pipe);
++ 
++   return s;
++ }
++   
+  /* Return the exit status of the last process in the pipeline for job JOB.
+     This is the exit status of the entire job. */
+***************
+*** 2302,2310 ****
+       received, only if one of the jobs run is killed via SIGINT.  If
+       job control is not set, the job will be run in the same pgrp as
+!      the shell, and the shell will see any signals the job gets. */
+  
+    /* This is possibly a race condition -- should it go in stop_pipeline? */
+    wait_sigint_received = 0;
+!   if (job_control == 0)
+      {
+        old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+--- 2343,2354 ----
+       received, only if one of the jobs run is killed via SIGINT.  If
+       job control is not set, the job will be run in the same pgrp as
+!      the shell, and the shell will see any signals the job gets.  In
+!      fact, we want this set every time the waiting shell and the waited-
+!      for process are in the same process group, including command
+!      substitution. */
+  
+    /* This is possibly a race condition -- should it go in stop_pipeline? */
+    wait_sigint_received = 0;
+!   if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB))
+      {
+        old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+***************
+*** 2452,2464 ****
+            the last process in the pipeline.  If no process exits due to a
+            signal, S is left as the status of the last job in the pipeline. */
+!        p = jobs[job]->pipe;
+!        do
+!          {
+!            s = p->status;
+!            if (WIFSIGNALED(s) || WIFSTOPPED(s))
+!              break;
+!            p = p->next;
+!          }
+!        while (p != jobs[job]->pipe);
+  
+         if (WIFSIGNALED (s) || WIFSTOPPED (s))
+--- 2496,2500 ----
+            the last process in the pipeline.  If no process exits due to a
+            signal, S is left as the status of the last job in the pipeline. */
+!        s = job_signal_status (job);
+  
+         if (WIFSIGNALED (s) || WIFSTOPPED (s))
+***************
+*** 2494,2497 ****
+--- 2530,2551 ----
+           }
+       }
++       else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received)
++      {
++        /* If waiting for a job in a subshell started to do command
++           substitution, simulate getting and being killed by the SIGINT to
++           pass the status back to our parent. */
++        s = job_signal_status (job);
++      
++        if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0)
++          {
++            UNBLOCK_CHILD (oset);
++            restore_sigint_handler ();
++            old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL);
++            if (old_sigint_handler == SIG_IGN)
++              restore_sigint_handler ();
++            else
++              kill (getpid (), SIGINT);
++          }
++      }
+  
+        /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 34
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 35
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-036 b/src/patches/bash/bash32-036
new file mode 100644 (file)
index 0000000..ef22e60
--- /dev/null
@@ -0,0 +1,44 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-036
+
+Bug-Reported-by:       Len Lattanzi <llattanzi@apple.com>
+Bug-Reference-ID:      <87493131-7AEC-4301-A684-E6CC6D06E3E1@apple.com>
+Bug-Reference-URL:
+
+Bug-Description:
+
+When initializing a subshell, bash did not reset a sentinel keeping track
+of the number of command substitutions, leading to an infinite loop if
+an error was encountered in the subshell.
+
+Patch:
+
+*** ../bash-3.2-patched/execute_cmd.c  2007-12-13 22:31:14.000000000 -0500
+--- execute_cmd.c      2007-12-20 08:52:34.000000000 -0500
+***************
+*** 3881,3884 ****
+--- 3916,3921 ----
+  
+    clear_unwind_protect_list (0);
++   /* XXX -- are there other things we should be resetting here? */
++   parse_and_execute_level = 0;               /* nothing left to restore it */
+  
+    /* We're no longer inside a shell function. */
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 35
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 36
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-037 b/src/patches/bash/bash32-037
new file mode 100644 (file)
index 0000000..376bd93
--- /dev/null
@@ -0,0 +1,110 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-037
+
+Bug-Reported-by:       jared r r spiegel <jrrs@iorek.ice-nine.org>
+Bug-Reference-ID:      <200801152201.m0FM1lDp021260@iorek.ice-nine.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-01/msg00049.html
+
+Bug-Description:
+
+Bash inappropriately evaluates command substitutions while expanding
+directory names as part of command substitution.
+
+Patch:
+
+*** ../bash-3.2-patched/subst.c        2007-12-13 22:31:21.000000000 -0500
+--- subst.c    2008-01-17 22:48:15.000000000 -0500
+***************
+*** 2815,2821 ****
+     to jump_to_top_level here so we don't endlessly loop. */
+  WORD_LIST *
+! expand_prompt_string (string, quoted)
+       char *string;
+       int quoted;
+  {
+    WORD_LIST *value;
+--- 2895,2902 ----
+     to jump_to_top_level here so we don't endlessly loop. */
+  WORD_LIST *
+! expand_prompt_string (string, quoted, wflags)
+       char *string;
+       int quoted;
++      int wflags;
+  {
+    WORD_LIST *value;
+***************
+*** 2825,2829 ****
+      return ((WORD_LIST *)NULL);
+  
+!   td.flags = 0;
+    td.word = savestring (string);
+  
+--- 2906,2910 ----
+      return ((WORD_LIST *)NULL);
+  
+!   td.flags = wflags;
+    td.word = savestring (string);
+  
+*** ../bash-3.2-patched/subst.h        2007-03-24 14:51:05.000000000 -0400
+--- subst.h    2008-01-17 22:46:08.000000000 -0500
+***************
+*** 136,140 ****
+  
+  /* Expand a prompt string. */
+! extern WORD_LIST *expand_prompt_string __P((char *, int));
+  
+  /* Expand STRING just as if you were expanding a word.  This also returns
+--- 137,141 ----
+  
+  /* Expand a prompt string. */
+! extern WORD_LIST *expand_prompt_string __P((char *, int, int));
+  
+  /* Expand STRING just as if you were expanding a word.  This also returns
+*** ../bash-3.2-patched/parse.y        2007-08-25 13:47:06.000000000 -0400
+--- parse.y    2008-01-17 22:46:30.000000000 -0500
+***************
+*** 4367,4371 ****
+      {
+        last_exit_value = last_command_exit_value;
+!       list = expand_prompt_string (result, Q_DOUBLE_QUOTES);
+        free (result);
+        result = string_list (list);
+--- 4367,4371 ----
+      {
+        last_exit_value = last_command_exit_value;
+!       list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0);
+        free (result);
+        result = string_list (list);
+*** ../bash-3.2-patched/bashline.c     2006-07-29 16:39:30.000000000 -0400
+--- bashline.c 2008-02-17 12:53:42.000000000 -0500
+***************
+*** 2358,2362 ****
+      {
+        new_dirname = savestring (local_dirname);
+!       wl = expand_prompt_string (new_dirname, 0);    /* does the right thing */
+        if (wl)
+       {
+--- 2376,2380 ----
+      {
+        new_dirname = savestring (local_dirname);
+!       wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB);        /* does the right thing */
+        if (wl)
+       {
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 36
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 37
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-038 b/src/patches/bash/bash32-038
new file mode 100644 (file)
index 0000000..842b1b5
--- /dev/null
@@ -0,0 +1,80 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-038
+
+Bug-Reported-by:       Wojciech Puchar <wojtek@wojtek.tensor.gdynia.pl>
+Bug-Reference-ID:      <200803131141.m2DBf9vo001136@wojtek.tensor.gdynia.pl>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-03/msg00029.html
+
+Bug-Description:
+
+When reading input lines into a single variable using the `read' builtin,
+bash did not free the memory it read after assigining it to the named
+variable, causing a memory leak noticable when reading large amounts of
+data.
+
+
+Patch:
+
+*** ../bash-3.2-patched/builtins/read.def      2007-08-25 13:47:07.000000000 -0400
+--- builtins/read.def  2008-03-07 12:55:47.000000000 -0500
+***************
+*** 135,139 ****
+    char c;
+    char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
+!   char *e, *t, *t1, *ps2;
+    struct stat tsb;
+    SHELL_VAR *var;
+--- 152,156 ----
+    char c;
+    char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
+!   char *e, *t, *t1, *ps2, *tofree;
+    struct stat tsb;
+    SHELL_VAR *var;
+***************
+*** 675,678 ****
+--- 728,732 ----
+    /* Check whether or not the number of fields is exactly the same as the
+       number of variables. */
++   tofree = NULL;
+    if (*input_string)
+      {
+***************
+*** 680,684 ****
+        t = get_word_from_string (&input_string, ifs_chars, &e);
+        if (*input_string == 0)
+!      input_string = t;
+        else
+       input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
+--- 734,738 ----
+        t = get_word_from_string (&input_string, ifs_chars, &e);
+        if (*input_string == 0)
+!      tofree = input_string = t;
+        else
+       input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
+***************
+*** 695,698 ****
+--- 749,754 ----
+      var = bind_read_variable (list->word->word, input_string);
+    stupidly_hack_special_variables (list->word->word);
++   FREE (tofree);
++ 
+    if (var)
+      VUNSETATTR (var, att_invisible);
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 37
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 38
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-039 b/src/patches/bash/bash32-039
new file mode 100644 (file)
index 0000000..c225a5a
--- /dev/null
@@ -0,0 +1,175 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-039
+
+Bug-Reported-by:       rew@erebor.com
+Bug-Reference-ID:      <20070119065603.546D011E9C@kansas.erebor.com>
+Bug-Reference-URL:     
+
+Bug-Description:
+
+Bash-3.2 changed the behavior of the [[ command's `=~' operator when the
+right-hand side was quoted:  it matched the quoted portions as strings.
+This patch introduces a new shell option: compat31.  When enabled, it
+restores the bash-3.1 behavior with respect to evaluating quoted arguments
+to the =~ operator.
+
+Patch:
+
+*** ../bash-3.2-patched/execute_cmd.c  2007-12-14 21:12:39.000000000 -0500
+--- execute_cmd.c      2008-02-22 21:20:40.000000000 -0500
+***************
+*** 2547,2551 ****
+        if (arg1 == 0)
+       arg1 = nullstr;
+!       arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0));
+        if (arg2 == 0)
+       arg2 = nullstr;
+--- 2552,2557 ----
+        if (arg1 == 0)
+       arg1 = nullstr;
+!       arg2 = cond_expand_word (cond->right->op,
+!                             (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0));
+        if (arg2 == 0)
+       arg2 = nullstr;
+*** ../bash-3.2-patched/shell.h        2003-06-01 15:04:36.000000000 -0400
+--- shell.h    2008-02-22 21:16:48.000000000 -0500
+***************
+*** 90,93 ****
+--- 90,94 ----
+  extern int interactive, interactive_shell;
+  extern int startup_state;
++ extern int shell_compatibility_level;
+  
+  /* Structure to pass around that holds a bitmap of file descriptors
+*** ../bash-3.2-patched/version.c      2007-12-14 21:12:29.000000000 -0500
+--- version.c  2008-04-10 08:22:22.000000000 -0400
+***************
+*** 44,47 ****
+--- 44,50 ----
+  const char *sccs_version = SCCSVERSION;
+  
++ /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */
++ int shell_compatibility_level = 32;
++ 
+  /* Functions for getting, setting, and displaying the shell version. */
+  
+*** ../bash-3.2-patched/builtins/shopt.def     2005-02-19 17:25:03.000000000 -0500
+--- builtins/shopt.def 2008-04-10 08:13:32.000000000 -0400
+***************
+*** 102,105 ****
+--- 102,107 ----
+  static int set_shellopts_after_change __P((int));
+  
++ static int set_compatibility_level __P((int));
++ 
+  #if defined (RESTRICTED_SHELL)
+  static int set_restricted_shell __P((int));
+***************
+*** 107,110 ****
+--- 109,113 ----
+  
+  static int shopt_login_shell;
++ static int shopt_compat31;
+  
+  typedef int shopt_set_func_t __P((int));
+***************
+*** 122,125 ****
+--- 125,129 ----
+    { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL },
+  #endif
++   { "compat31", &shopt_compat31, set_compatibility_level },
+    { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL },
+    { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL },
+***************
+*** 460,463 ****
+--- 464,479 ----
+  }
+  
++ static int
++ set_compatibility_level (mode)
++      int mode;
++ {
++   /* Need to change logic here as we add more compatibility levels */
++   if (shopt_compat31)
++     shell_compatibility_level = 31;
++   else
++     shell_compatibility_level = 32;
++   return 0;
++ }
++ 
+  #if defined (RESTRICTED_SHELL)
+  /* Don't allow the value of restricted_shell to be modified. */
+*** ../bash-3.2-patched/doc/bash.1     2006-09-28 10:26:05.000000000 -0400
+--- doc/bash.1 2008-04-25 12:32:49.000000000 -0400
+***************
+*** 7978,7981 ****
+--- 8200,8209 ----
+  easy re-editing of multi-line commands.
+  .TP 8
++ .B compat31
++ If set,
++ .B bash
++ changes its behavior to that of version 3.1 with respect to quoted
++ arguments to the conditional command's =~ operator.
++ .TP 8
+  .B dotglob
+  If set, 
+*** ../bash-20080214/doc/bashref.texi  2008-02-08 21:28:35.000000000 -0500
+--- doc/bashref.texi   2008-02-22 21:44:51.000000000 -0500
+***************
+*** 4053,4056 ****
+--- 4061,4069 ----
+  easy re-editing of multi-line commands.
+  
++ @item compat31
++ If set, Bash
++ changes its behavior to that of version 3.1 with respect to quoted
++ arguments to the conditional command's =~ operator.
++ 
+  @item dotglob
+  If set, Bash includes filenames beginning with a `.' in
+*** ../bash-3.2-patched/tests/shopt.right      2005-02-19 17:46:09.000000000 -0500
+--- tests/shopt.right  2008-04-28 09:13:07.000000000 -0400
+***************
+*** 7,10 ****
+--- 7,11 ----
+  shopt -u checkwinsize
+  shopt -s cmdhist
++ shopt -u compat31
+  shopt -u dotglob
+  shopt -u execfail
+***************
+*** 54,57 ****
+--- 55,59 ----
+  shopt -u checkhash
+  shopt -u checkwinsize
++ shopt -u compat31
+  shopt -u dotglob
+  shopt -u execfail
+***************
+*** 78,81 ****
+--- 80,84 ----
+  checkhash            off
+  checkwinsize         off
++ compat31             off
+  dotglob              off
+  execfail             off
+
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 38
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 39
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-040 b/src/patches/bash/bash32-040
new file mode 100644 (file)
index 0000000..50b85bb
--- /dev/null
@@ -0,0 +1,47 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-040
+
+Bug-Reported-by:       John McCabe-Dansted
+Bug-Reference-ID:
+Bug-Reference-URL:     https://bugs.launchpad.net/ubuntu/+source/bash/+bug/202885
+
+Bug-Description:
+
+When using the `set' builtin to list all shell variables, the shell uses
+the wrong variable when computing the length of a variable's value.
+
+Patch:
+
+*** ../bash-3.2-patched/array.c        2007-03-24 14:51:03.000000000 -0400
+--- array.c    2008-08-17 13:07:04.000000000 -0400
+***************
+*** 684,688 ****
+               valstr = element_value (ae) ? sh_double_quote (element_value(ae))
+                                           : (char *)NULL;
+!              elen = STRLEN (indstr) + 8 + STRLEN (valstr);
+               RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize);
+  
+--- 809,813 ----
+               valstr = element_value (ae) ? sh_double_quote (element_value(ae))
+                                           : (char *)NULL;
+!              elen = STRLEN (is) + 8 + STRLEN (valstr);
+               RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize);
+  
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 39
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 40
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-041 b/src/patches/bash/bash32-041
new file mode 100644 (file)
index 0000000..3c05c04
--- /dev/null
@@ -0,0 +1,154 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-041
+
+Bug-Reported-by:       Dan Jacobson <jidanni@jidanni.org>
+Bug-Reference-ID:      <873arjs11h.fsf@jidanni.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-02/msg00049.html
+
+Bug-Description:
+
+Bash saved and restored the value of `set -o history' while sourcing files,
+preventing users from turning off history with `set +o history' in .bashrc.
+
+Patch:
+
+*** ../bash-3.2-patched/bashhist.c     2005-12-26 13:31:16.000000000 -0500
+--- bashhist.c 2008-08-17 13:07:40.000000000 -0400
+***************
+*** 81,84 ****
+--- 81,85 ----
+     becomes zero when we read lines from a file, for example. */
+  int remember_on_history = 1;
++ int enable_history_list = 1; /* value for `set -o history' */
+  
+  /* The number of lines that Bash has added to this history session.  The
+***************
+*** 235,239 ****
+    history_expansion_inhibited = 1;
+  #endif
+!   remember_on_history = interact != 0;
+    history_inhibit_expansion_function = bash_history_inhibit_expansion;
+  }
+--- 236,240 ----
+    history_expansion_inhibited = 1;
+  #endif
+!   remember_on_history = enable_history_list = interact != 0;
+    history_inhibit_expansion_function = bash_history_inhibit_expansion;
+  }
+*** ../bash-3.2-patched/builtins/set.def       2006-07-27 09:41:43.000000000 -0400
+--- builtins/set.def   2008-08-14 16:33:41.000000000 -0400
+***************
+*** 190,194 ****
+  #endif /* BANG_HISTORY */
+  #if defined (HISTORY)
+!   { "history",   '\0', &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL },
+  #endif
+    { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL },
+--- 198,202 ----
+  #endif /* BANG_HISTORY */
+  #if defined (HISTORY)
+!   { "history",   '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL },
+  #endif
+    { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL },
+***************
+*** 382,385 ****
+--- 390,394 ----
+    if (on_or_off == FLAG_ON)
+      {
++       enable_history_list = 1;
+        bash_history_enable ();
+        if (history_lines_this_session == 0)
+***************
+*** 387,392 ****
+      }
+    else
+!     bash_history_disable ();
+!   return (1 - remember_on_history);
+  }
+  #endif
+--- 396,404 ----
+      }
+    else
+!     {
+!       enable_history_list = 0;
+!       bash_history_disable ();
+!     }
+!   return (1 - enable_history_list);
+  }
+  #endif
+***************
+*** 566,570 ****
+  {
+  #if defined (HISTORY)
+!   remember_on_history = 1;
+  #endif
+    ignoreeof = 0;
+--- 578,582 ----
+  {
+  #if defined (HISTORY)
+!   remember_on_history = enable_history_list = 1;
+  #endif
+    ignoreeof = 0;
+*** ../bash-3.2-patched/builtins/evalstring.c  2006-07-28 15:12:16.000000000 -0400
+--- builtins/evalstring.c      2008-11-10 21:17:16.000000000 -0500
+***************
+*** 68,71 ****
+--- 68,79 ----
+  static int cat_file __P((REDIRECT *));
+  
++ #if defined (HISTORY)
++ static void
++ set_history_remembering ()
++ {
++   remember_on_history = enable_history_list;
++ }
++ #endif
++ 
+  /* How to force parse_and_execute () to clean up after itself. */
+  void
+***************
+*** 116,120 ****
+  
+  #if defined (HISTORY)
+!   unwind_protect_int (remember_on_history);  /* can be used in scripts */
+  #  if defined (BANG_HISTORY)
+    if (interactive_shell)
+--- 124,131 ----
+  
+  #if defined (HISTORY)
+!   if (parse_and_execute_level == 0)
+!     add_unwind_protect (set_history_remembering, (char *)NULL);
+!   else
+!     unwind_protect_int (remember_on_history);        /* can be used in scripts */
+  #  if defined (BANG_HISTORY)
+    if (interactive_shell)
+*** ../bash-3.2-patched/bashhist.h     2005-07-01 15:44:41.000000000 -0400
+--- bashhist.h 2008-08-17 12:51:07.000000000 -0400
+***************
+*** 32,35 ****
+--- 32,38 ----
+  
+  extern int remember_on_history;
++ extern int enable_history_list;              /* value for `set -o history' */
++ extern int literal_history;          /* controlled by `shopt lithist' */
++ extern int force_append_history;
+  extern int history_lines_this_session;
+  extern int history_lines_in_file;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 40
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 41
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-042 b/src/patches/bash/bash32-042
new file mode 100644 (file)
index 0000000..4c9f4d6
--- /dev/null
@@ -0,0 +1,48 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-042
+
+Bug-Reported-by:       Archimerged Ark Submedes <archimerged@gmail.com>
+Bug-Reference-ID:      <5ba4bef00804182116g65ff71e0qdffcf672f205e708@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-04/msg00041.html
+
+Bug-Description:
+
+An operator precedence error prevented the bash arithmetic evaluator from
+parsing conditional commands correctly.
+
+Patch:
+
+*** ../bash-3.2-patched/expr.c 2007-12-13 22:30:43.000000000 -0500
+--- expr.c     2008-08-17 13:09:59.000000000 -0400
+***************
+*** 521,525 ****
+         noeval++;
+       }
+!       val2 = explor ();
+        if (set_noeval)
+       noeval--;
+--- 521,526 ----
+         noeval++;
+       }
+! 
+!       val2 = expcond ();
+        if (set_noeval)
+       noeval--;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 41
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 42
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-043 b/src/patches/bash/bash32-043
new file mode 100644 (file)
index 0000000..5a51843
--- /dev/null
@@ -0,0 +1,62 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-043
+
+Bug-Reported-by:       Morita Sho <morita-pub-en-debian@inz.sakura.ne.jp>
+Bug-Reference-ID:
+Bug-Reference-URL:     http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478096
+
+Bug-Description:
+
+Side effects caused by setting function-local versions of variables bash
+handles specially persisted after the function returned.
+
+Patch:
+
+*** ../bash-3.2-patched/variables.c    2007-08-25 13:47:05.000000000 -0400
+--- variables.c        2008-11-09 17:47:31.000000000 -0500
+***************
+*** 3459,3465 ****
+       var->attributes &= ~(att_tempvar|att_propagate);
+        else
+!         shell_variables->flags |= VC_HASTMPVAR;
+        v->attributes |= var->attributes;
+      }
+  
+    dispose_variable (var);
+--- 3771,3779 ----
+       var->attributes &= ~(att_tempvar|att_propagate);
+        else
+!      shell_variables->flags |= VC_HASTMPVAR;
+        v->attributes |= var->attributes;
+      }
++   else
++     stupidly_hack_special_variables (var->name);     /* XXX */
+  
+    dispose_variable (var);
+***************
+*** 3548,3551 ****
+--- 3862,3867 ----
+        v->attributes |= var->attributes;
+      }
++   else
++     stupidly_hack_special_variables (var->name);     /* XXX */
+  
+    dispose_variable (var);
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 42
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 43
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-044 b/src/patches/bash/bash32-044
new file mode 100644 (file)
index 0000000..3e7a392
--- /dev/null
@@ -0,0 +1,150 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-044
+
+Bug-Reported-by:       slinkp <stuff@slinkp.com>
+Bug-Reference-ID:      <da52a26a-9f38-4861-a918-14d3482b539d@c65g2000hsa.googlegroups.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-05/msg00085.html
+
+Bug-Description:
+
+The presence of invisible characters in a prompt longer than the screenwidth
+with invisible characters on the first and last prompt lines caused readline
+to place the cursor in the wrong physical location.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/display.c 2007-12-14 21:12:40.000000000 -0500
+--- lib/readline/display.c     2008-10-23 09:39:46.000000000 -0400
+***************
+*** 911,914 ****
+--- 944,951 ----
+            OFFSET (which has already been calculated above).  */
+  
++ #define INVIS_FIRST()        (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset)
++ #define WRAP_OFFSET(line, offset)  ((line == 0) \
++                                      ? (offset ? INVIS_FIRST() : 0) \
++                                      : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0))
+  #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)
+  #define VIS_LLEN(l)  ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
+***************
+*** 945,949 ****
+                 _rl_last_c_pos > wrap_offset &&
+                 o_cpos < prompt_last_invisible)
+!              _rl_last_c_pos -= wrap_offset;
+                 
+             /* If this is the line with the prompt, we might need to
+--- 982,992 ----
+                 _rl_last_c_pos > wrap_offset &&
+                 o_cpos < prompt_last_invisible)
+!              _rl_last_c_pos -= prompt_invis_chars_first_line;        /* XXX - was wrap_offset */
+!            else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth &&
+!                      (MB_CUR_MAX > 1 && rl_byte_oriented == 0) &&
+!                      cpos_adjusted == 0 &&
+!                      _rl_last_c_pos != o_cpos &&
+!                      _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line))
+!              _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line);
+                 
+             /* If this is the line with the prompt, we might need to
+***************
+*** 1205,1209 ****
+  {
+    register char *ofd, *ols, *oe, *nfd, *nls, *ne;
+!   int temp, lendiff, wsatend, od, nd, o_cpos;
+    int current_invis_chars;
+    int col_lendiff, col_temp;
+--- 1264,1268 ----
+  {
+    register char *ofd, *ols, *oe, *nfd, *nls, *ne;
+!   int temp, lendiff, wsatend, od, nd, twidth, o_cpos;
+    int current_invis_chars;
+    int col_lendiff, col_temp;
+***************
+*** 1221,1225 ****
+      temp = _rl_last_c_pos;
+    else
+!     temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
+    if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
+       && _rl_last_v_pos == current_line - 1)
+--- 1280,1284 ----
+      temp = _rl_last_c_pos;
+    else
+!     temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset);
+    if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
+       && _rl_last_v_pos == current_line - 1)
+***************
+*** 1587,1599 ****
+           {
+             _rl_output_some_chars (nfd + lendiff, temp - lendiff);
+- #if 1
+            /* XXX -- this bears closer inspection.  Fixes a redisplay bug
+               reported against bash-3.0-alpha by Andreas Schwab involving
+               multibyte characters and prompt strings with invisible
+               characters, but was previously disabled. */
+!            _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
+! #else
+!            _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff);
+! #endif
+           }
+       }
+--- 1648,1660 ----
+           {
+             _rl_output_some_chars (nfd + lendiff, temp - lendiff);
+            /* XXX -- this bears closer inspection.  Fixes a redisplay bug
+               reported against bash-3.0-alpha by Andreas Schwab involving
+               multibyte characters and prompt strings with invisible
+               characters, but was previously disabled. */
+!            if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+!              twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
+!            else
+!              twidth = temp - lendiff;
+!            _rl_last_c_pos += twidth;
+           }
+       }
+***************
+*** 1789,1793 ****
+    int cpos, dpos;            /* current and desired cursor positions */
+  
+!   woff = W_OFFSET (_rl_last_v_pos, wrap_offset);
+    cpos = _rl_last_c_pos;
+  #if defined (HANDLE_MULTIBYTE)
+--- 1850,1854 ----
+    int cpos, dpos;            /* current and desired cursor positions */
+  
+!   woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset);
+    cpos = _rl_last_c_pos;
+  #if defined (HANDLE_MULTIBYTE)
+***************
+*** 1803,1807 ****
+        prompt string, since they're both buffer indices and DPOS is a
+        desired display position. */
+!       if (new > prompt_last_invisible)               /* XXX - don't use woff here */
+       {
+         dpos -= woff;
+--- 1864,1872 ----
+        prompt string, since they're both buffer indices and DPOS is a
+        desired display position. */
+!       if ((new > prompt_last_invisible) ||           /* XXX - don't use woff here */
+!        (prompt_physical_chars > _rl_screenwidth &&
+!         _rl_last_v_pos == prompt_last_screen_line &&
+!         wrap_offset != woff &&
+!         new > (prompt_last_invisible-_rl_screenwidth-wrap_offset)))
+       {
+         dpos -= woff;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 43
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 44
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-045 b/src/patches/bash/bash32-045
new file mode 100644 (file)
index 0000000..68b91ff
--- /dev/null
@@ -0,0 +1,50 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-045
+
+Bug-Reported-by:       Roman Rakus <rrakus@redhat.com>
+Bug-Reference-ID:      <4864B4A0.1060402@redhat.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-06/msg00098.html
+
+Bug-Description:
+
+When short-circuiting execution due to the `break' or `continue' builtins,
+bash did not preserve the value of $?.
+
+Patch:
+
+*** ../bash-3.2-patched/execute_cmd.c  2008-04-28 22:00:24.000000000 -0400
+--- execute_cmd.c      2008-10-18 14:35:03.000000000 -0400
+***************
+*** 502,507 ****
+--- 514,526 ----
+    volatile int save_line_number;
+  
++ #if 0
+    if (command == 0 || breaking || continuing || read_but_dont_execute)
+      return (EXECUTION_SUCCESS);
++ #else
++   if (breaking || continuing)
++     return (last_command_exit_value);
++   if (command == 0 || read_but_dont_execute)
++     return (EXECUTION_SUCCESS);
++ #endif
+  
+    QUIT;
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 44
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 45
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-046 b/src/patches/bash/bash32-046
new file mode 100644 (file)
index 0000000..78aaf01
--- /dev/null
@@ -0,0 +1,47 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-046
+
+Bug-Reported-by:       Wang Xin <wxinee@gmail.com>
+Bug-Reference-ID:      <9a73e1570807062042ide16698m10e1b18036c95592@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-07/msg00014.html
+
+Bug-Description:
+
+Bash did not compute the length of multibyte characters correctly when
+performing array element length references (e.g., ${#var[subscript]}).
+
+Patch:
+
+*** /usr/src/local/bash/bash-3.2-patched/subst.c       2008-04-28 22:00:20.000000000 -0400
+--- subst.c    2008-11-10 22:02:38.000000000 -0500
+***************
+*** 4813,4817 ****
+      t = (ind == 0) ? value_cell (var) : (char *)NULL;
+  
+!   len = STRLEN (t);
+    return (len);
+  }
+--- 4813,4817 ----
+      t = (ind == 0) ? value_cell (var) : (char *)NULL;
+  
+!   len = MB_STRLEN (t);
+    return (len);
+  }
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 45
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 46
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-047 b/src/patches/bash/bash32-047
new file mode 100644 (file)
index 0000000..b8272b1
--- /dev/null
@@ -0,0 +1,65 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-047
+
+Bug-Reported-by:       Roman Rakus <rrakus@redhat.com>
+Bug-Reference-ID:      <48A89EBC.906@redhat.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-08/msg00026.html
+
+Bug-Description:
+
+When using the `.' (source) builtin, under certain circumstances bash was
+too careful in discarding state to preserve internal consistency.  One
+effect was that assignments to readonly variables would cause entire scripts
+to be aborted instead of execution of the offending command.  This behavior
+was introduced by bash-3.2 patch 20.
+
+Patch:
+
+*** /usr/src/local/chet/src/bash/bash-3.2-patched/subst.c      2008-04-29 21:24:55.000000000 -0400
+--- subst.c    2008-11-13 17:44:25.000000000 -0500
+***************
+*** 138,142 ****
+  extern int last_command_exit_value, last_command_exit_signal;
+  extern int subshell_environment;
+! extern int subshell_level;
+  extern int eof_encountered;
+  extern int return_catch_flag, return_catch_value;
+--- 138,142 ----
+  extern int last_command_exit_value, last_command_exit_signal;
+  extern int subshell_environment;
+! extern int subshell_level, parse_and_execute_level;
+  extern int eof_encountered;
+  extern int return_catch_flag, return_catch_value;
+***************
+*** 7673,7677 ****
+    expanding_redir = 0;
+  
+!   top_level_cleanup ();                      /* from sig.c */
+  
+    jump_to_top_level (v);
+--- 7673,7679 ----
+    expanding_redir = 0;
+  
+!   if (parse_and_execute_level == 0)
+!     top_level_cleanup ();                    /* from sig.c */
+! 
+  
+    jump_to_top_level (v);
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 46
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 47
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-048 b/src/patches/bash/bash32-048
new file mode 100644 (file)
index 0000000..551dade
--- /dev/null
@@ -0,0 +1,56 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-048
+
+Bug-Reported-by:       Steffen Kiess <s-kiess@web.de>
+Bug-Reference-ID:      <1223929957.5383.6.camel@fips>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2008-10/msg00047.html
+
+Bug-Description:
+
+When invoked as `bash -c', bash did not execute an EXIT trap when the last
+command in the executed list was a command run from the file system.
+
+Patch:
+
+*** /Users/chet/src/bash/bash-3.2-patched/builtins/evalstring.c        2006-07-28 15:12:16.000000000 -0400
+--- builtins/evalstring.c      2008-11-13 18:38:45.000000000 -0500
+***************
+*** 249,252 ****
+--- 249,253 ----
+              *   we're not running a trap AND
+              *   we have parsed the full command (string == '\0') AND
++             *   we're not going to run the exit trap AND
+              *   we have a simple command without redirections AND
+              *   the command is not being timed AND
+***************
+*** 259,263 ****
+                 *bash_input.location.string == '\0' &&
+                 command->type == cm_simple &&
+!                !command->redirects && !command->value.Simple->redirects &&
+                 ((command->flags & CMD_TIME_PIPELINE) == 0) &&
+                 ((command->flags & CMD_INVERT_RETURN) == 0))
+--- 260,265 ----
+                 *bash_input.location.string == '\0' &&
+                 command->type == cm_simple &&
+!                signal_is_trapped (EXIT_TRAP) == 0 &&
+!                command->redirects == 0 && command->value.Simple->redirects == 0 &&
+                 ((command->flags & CMD_TIME_PIPELINE) == 0) &&
+                 ((command->flags & CMD_INVERT_RETURN) == 0))
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 47
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 48
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-049 b/src/patches/bash/bash32-049
new file mode 100644 (file)
index 0000000..469c4c8
--- /dev/null
@@ -0,0 +1,64 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-049
+
+Bug-Reported-by:       Len Lattanzi <llattanzi@apple.com>
+Bug-Reference-ID:      <52B1297F-6675-45CC-B63E-24745337D006@apple.com>
+Bug-Reference-URL:     
+
+Bug-Description:
+
+On systems where mbrtowc() returns -2 when passed a length argument with
+value 0, when using a multibyte locale, Readline's emacs-mode forward-char
+at the end of a line will leave the point beyond the end of the line.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/mbutil.c  2009-05-29 23:09:26.000000000 -0400
+--- lib/readline/mbutil.c      2009-05-29 23:10:12.000000000 -0400
+***************
+*** 78,82 ****
+       int seed, count, find_non_zero;
+  {
+!   size_t tmp;
+    mbstate_t ps;
+    int point;
+--- 78,82 ----
+       int seed, count, find_non_zero;
+  {
+!   size_t tmp, len;
+    mbstate_t ps;
+    int point;
+***************
+*** 99,103 ****
+    while (count > 0)  
+      {
+!       tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps);
+        if (MB_INVALIDCH ((size_t)tmp))
+       {
+--- 99,106 ----
+    while (count > 0)  
+      {
+!       len = strlen (string + point);
+!       if (len == 0)
+!      break;
+!       tmp = mbrtowc (&wc, string+point, len, &ps);
+        if (MB_INVALIDCH ((size_t)tmp))
+       {
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 48
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 49
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-050 b/src/patches/bash/bash32-050
new file mode 100644 (file)
index 0000000..aef537e
--- /dev/null
@@ -0,0 +1,56 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-050
+
+Bug-Reported-by:       Jan Hnatek <Jan.Hnatek@Sun.COM>
+Bug-Reference-ID:      <4A44991F.8010005@sun.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2009-06/msg00084.html
+
+Bug-Description:
+
+On systems where mbrtowc() returns -2 when passed a length argument with
+value 0, when using a multibyte locale, Readline's emacs-mode forward-char
+at the end of a line will leave the point beyond the end of the line.
+
+Patch:
+
+*** ../bash-3.2-patched/lib/readline/mbutil.c  2009-06-16 11:26:50.000000000 -0400
+--- lib/readline/mbutil.c      2009-01-04 14:32:33.000000000 -0500
+***************
+*** 132,141 ****
+      {
+        tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
+!       while (tmp > 0 && wcwidth (wc) == 0)
+       {
+         point += tmp;
+         tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
+-        if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp))
+-          break;
+       }
+      }
+--- 130,137 ----
+      {
+        tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
+!       while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && wcwidth (wc) == 0)
+       {
+         point += tmp;
+         tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
+       }
+      }
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 49
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 50
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-051 b/src/patches/bash/bash32-051
new file mode 100644 (file)
index 0000000..404fbd6
--- /dev/null
@@ -0,0 +1,46 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-051
+
+Bug-Reported-by:       werner@suse.de
+Bug-Reference-ID:      <201002251238.o1PCcYcg016893@boole.suse.de>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2010-02/msg00132.html
+
+Bug-Description:
+
+When the `read' builtin times out after the timeout specified with -t is
+exceeded, it does not reset the flags that tell signal handlers to process
+signals immediately instead of deferring their handling.  This can result
+in unsafe functions being called from signal handlers, which can cause bash
+to hang or dump core.
+
+Patch:
+
+*** ../bash-3.2-patched/builtins/read.def      2008-04-29 21:25:00.000000000 -0400
+--- builtins/read.def  2010-03-17 09:50:51.000000000 -0400
+***************
+*** 327,330 ****
+--- 327,332 ----
+        if (code)
+       {
++        interrupt_immediately--;
++        terminate_immediately = 0;
+         run_unwind_frame ("read_builtin");
+         return (EXECUTION_FAILURE);
+*** ../bash-3.2/patchlevel.h   Thu Apr 13 08:31:04 2006
+--- patchlevel.h       Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 50
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 51
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/ncurses-5.5-fixes-1.patch b/src/patches/ncurses-5.5-fixes-1.patch
deleted file mode 100644 (file)
index 73e084d..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-Submitted by: Alexander E. Patrakov
-Date: 2005-12-07
-Initial Package Version: 5.5
-Upstream Status: Backport
-Origin: Cherry-picked from ftp://invisible-island.net/ncurses/5.5/*.gz
-Description: Fixes the following bugs:
-
-* memory leak in keyname()
-* mishandling of overlapped wide characters, http://bugs.debian.org/316663
-* problems with line-drawing characters on cygwin, http://bugs.debian.org/338234
-* mishandling of EINTR in tcgetattr/tcsetattr, http://bugs.debian.org/339518
-* mishandling of single-column multibyte characters, http://bugs.debian.org/341661
-
---- ncurses-5.5-20051015+/ncurses/base/MKkeyname.awk   2005-04-30 19:26:25.000000000 +0000
-+++ ncurses-5.5-20051022/ncurses/base/MKkeyname.awk    2005-10-22 19:01:23.000000000 +0000
-@@ -97,6 +97,7 @@
-       print "                                         break;"
-       print "                                 }"
-       print "                         }"
-+      print "                         free(bound);"
-       print "                         if (result != 0)"
-       print "                                 break;"
-       print "                 }"
---- ncurses-5.5-20051022+/ncurses/base/lib_addch.c     2005-03-27 16:52:16.000000000 +0000
-+++ ncurses-5.5-20051029/ncurses/base/lib_addch.c      2005-10-30 00:51:36.000000000 +0000
-@@ -315,7 +315,7 @@
-            * setup though.
-            */
-           for (i = 0; i < len; ++i) {
--              if (isWidecBase(win->_line[y].text[i])) {
-+              if (isWidecBase(win->_line[y].text[x + i])) {
-                   break;
-               } else if (isWidecExt(win->_line[y].text[x + i])) {
-                   for (j = i; x + j <= win->_maxx; ++j) {
-@@ -334,7 +334,9 @@
-           for (i = 0; i < len; ++i) {
-               NCURSES_CH_T value = ch;
-               SetWidecExt(value, i);
--              TR(TRACE_VIRTPUT, ("multicolumn %d:%d", i + 1, len));
-+              TR(TRACE_VIRTPUT, ("multicolumn %d:%d (%d,%d)",
-+                                 i + 1, len,
-+                                 win->_begy + y, win->_begx + x));
-               line->text[x] = value;
-               CHANGED_CELL(line, x);
-               ++x;
---- ncurses-5.5-20051022+/ncurses/base/lib_bkgd.c      2005-04-16 18:03:48.000000000 +0000
-+++ ncurses-5.5-20051029/ncurses/base/lib_bkgd.c       2005-10-30 00:41:09.000000000 +0000
-@@ -131,11 +131,11 @@
-       for (y = 0; y <= win->_maxy; y++) {
-           for (x = 0; x <= win->_maxx; x++) {
--              if (CharEq(win->_line[y].text[x], old_bkgrnd))
-+              if (CharEq(win->_line[y].text[x], old_bkgrnd)) {
-                   win->_line[y].text[x] = win->_nc_bkgd;
--              else {
-+              } else {
-                   NCURSES_CH_T wch = win->_line[y].text[x];
--                  RemAttr(wch, (~A_ALTCHARSET));
-+                  RemAttr(wch, (~(A_ALTCHARSET | A_CHARTEXT)));
-                   win->_line[y].text[x] = _nc_render(win, wch);
-               }
-           }
---- ncurses-5.5-20051022+/ncurses/base/lib_erase.c     2001-12-19 01:06:13.000000000 +0000
-+++ ncurses-5.5-20051029/ncurses/base/lib_erase.c      2005-10-30 00:36:36.000000000 +0000
-@@ -58,6 +59,24 @@
-           start = win->_line[y].text;
-           end = &start[win->_maxx];
-+          /*
-+           * If this is a derived window, we have to handle the case where
-+           * a multicolumn character extends into the window that we are
-+           * erasing.
-+           */
-+          if_WIDEC({
-+              if (isWidecExt(start[0])) {
-+                  int x = (win->_parent != 0) ? (win->_begx) : 0;
-+                  while (x-- > 0) {
-+                      if (isWidecBase(start[-1])) {
-+                          --start;
-+                          break;
-+                      }
-+                      --start;
-+                  }
-+              }
-+          });
-+
-           for (sp = start; sp <= end; sp++)
-               *sp = blank;
---- ncurses-5.5-20051029+/misc/terminfo.src    2005-10-26 23:21:06.000000000 +0000
-+++ ncurses-5.5-20051112/misc/terminfo.src     2005-11-12 23:01:03.000000000 +0000
-@@ -4731,32 +4731,35 @@
- #   civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c
- #   ech   [erase characters param] broken \E[%p1%dX
- #   kcbt  [back-tab key] not implemented in cygwin?  \E[Z
-+#
-+# 2005/11/12 -TD
-+#     Remove cbt since it does not work in current cygwin
-+#     Add 'mir' and 'in' flags based on tack
- cygwin|ansi emulation for Cygwin, 
--      am, hs, in, msgr, xon, 
-+      am, hs, mir, msgr, xon, 
-       colors#8, it#8, pairs#64, 
-       acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, 
--      bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, cr=^M, 
--      cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, 
--      cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
--      cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, 
--      dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, 
--      home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, 
--      ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, 
--      kb2=\E[G, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, 
--      kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, 
--      kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, 
--      kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, 
--      kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, 
--      kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, 
--      kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~, 
--      knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m, 
--      rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, 
--      rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmpch=\E[10m, 
--      rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, sc=\E7, 
--      setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
-+      bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD, 
-+      cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, 
-+      cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 
-+      cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, 
-+      dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H, 
-+      hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@, 
-+      il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G, 
-+      kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
-+      kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~, 
-+      kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
-+      kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
-+      kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, 
-+      kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
-+      khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, 
-+      nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, 
-+      rmacs=\E[10m, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, 
-+      rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, 
-+      sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
-       sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, 
--      sgr0=\E[0;10m, smacs=\E11m, smcup=\E7\E[?47h, smir=\E[4h, 
--      smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, 
-+      sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h, 
-+      smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, 
-       u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\E[c, 
-       vpa=\E[%i%p1%dd, 
---- ncurses-5.5-20051112+/ncurses/tinfo/lib_ttyflags.c 2003-05-17 23:50:37.000000000 +0000
-+++ ncurses-5.5-20051119/ncurses/tinfo/lib_ttyflags.c  2005-11-19 20:36:23.000000000 +0000
-@@ -59,28 +59,51 @@
- NCURSES_EXPORT(int)
- _nc_get_tty_mode(TTY * buf)
- {
--    if (cur_term == 0
--      || GET_TTY(cur_term->Filedes, buf) != 0) {
--      memset(buf, 0, sizeof(*buf));
--      return (ERR);
-+    int result = OK;
-+
-+    if (cur_term == 0) {
-+      result = ERR;
-+    } else {
-+      for (;;) {
-+          if (GET_TTY(cur_term->Filedes, buf) != 0) {
-+              if (errno == EINTR)
-+                  continue;
-+              result = ERR;
-+          }
-+          break;
-+      }
-     }
-+
-+    if (result == ERR)
-+      memset(buf, 0, sizeof(*buf));
-+
-     TR(TRACE_BITS, ("_nc_get_tty_mode(%d): %s",
-                   cur_term->Filedes, _nc_trace_ttymode(buf)));
--    return (OK);
-+    return (result);
- }
- NCURSES_EXPORT(int)
- _nc_set_tty_mode(TTY * buf)
- {
--    if (cur_term == 0
--      || SET_TTY(cur_term->Filedes, buf) != 0) {
--      if ((errno == ENOTTY) && (SP != 0))
--          SP->_notty = TRUE;
--      return (ERR);
-+    int result = OK;
-+
-+    if (cur_term == 0) {
-+      result = ERR;
-+    } else {
-+      for (;;) {
-+          if (SET_TTY(cur_term->Filedes, buf) != 0) {
-+              if (errno == EINTR)
-+                  continue;
-+              if ((errno == ENOTTY) && (SP != 0))
-+                  SP->_notty = TRUE;
-+              result = ERR;
-+          }
-+          break;
-+      }
-     }
-     TR(TRACE_BITS, ("_nc_set_tty_mode(%d): %s",
-                   cur_term->Filedes, _nc_trace_ttymode(buf)));
--    return (OK);
-+    return (result);
- }
- NCURSES_EXPORT(int)
---- ncurses-5.5-20051126+/ncurses/widechar/lib_ins_wch.c       2005-09-17 19:25:13.000000000 +0000
-+++ ncurses-5.5-20051203/ncurses/widechar/lib_ins_wch.c        2005-12-03 20:24:19.000000000 +0000
-@@ -117,7 +117,7 @@
-           for (cp = wstr; *cp && ((cp - wstr) < n); cp++) {
-               int len = wcwidth(*cp);
--              if (len != 1) {
-+              if (len != 1 || !is8bits(*cp)) {
-                   cchar_t tmp_cchar;
-                   wchar_t tmp_wchar = *cp;
-                   memset(&tmp_cchar, 0, sizeof(tmp_cchar));