Merge pull request #4940 from diizzyy/patch-95
authorJo-Philipp Wich <jo@mein.io>
Thu, 19 Oct 2017 09:24:05 +0000 (11:24 +0200)
committerGitHub <noreply@github.com>
Thu, 19 Oct 2017 09:24:05 +0000 (11:24 +0200)
libs/libpng: Update to 1.6.32

128 files changed:
.travis/626471F1.asc [new file with mode: 0644]
.travis/D52BBB6B.asc [new file with mode: 0644]
.travis_do.sh
admin/sudo/Makefile
lang/perl/Makefile
lang/perl/files/base.config
lang/python/django/Makefile
lang/python/python-lxml/Makefile
libs/glib2/Makefile
libs/libgphoto2/Makefile
libs/libgphoto2/patches/001-automake-compat.patch
libs/libgphoto2/patches/002-no-docs-examples-test-translations.patch
libs/libuv/Makefile
libs/qrencode/Makefile
libs/qrencode/patches/001-add-inline-svg.patch [new file with mode: 0644]
libs/qrencode/patches/001-disable-png.patch [deleted file]
mail/dovecot/Makefile
mail/mutt/Makefile
mail/mutt/patches/0001-no-po-and-docs.patch [deleted file]
mail/mutt/patches/0001-no-po.patch [new file with mode: 0644]
mail/mutt/patches/100-CVE-2014-9116.patch [deleted file]
multimedia/gphoto2/Makefile
multimedia/gphoto2/patches/001-automake-compat.patch
multimedia/gphoto2/patches/002-no-docs-test.patch
net/adblock/Makefile
net/adblock/files/README.md
net/adblock/files/adblock.conf
net/adblock/files/adblock.sh
net/apache/Config.in [new file with mode: 0644]
net/apache/Makefile
net/clamav/Makefile
net/fwknop/Makefile
net/fwknop/files/fwknopd
net/fwknop/files/fwknopd.init
net/haproxy/Makefile
net/haproxy/patches/0001-BUG-MEDIUM-connection-remove-useless-flag-CO_FL_DATA.patch [new file with mode: 0644]
net/haproxy/patches/0001-BUG-MINOR-peers-peer-synchronization-issue-with-seve.patch [deleted file]
net/haproxy/patches/0002-BUG-MINOR-lua-In-error-case-the-safe-mode-is-not-rem.patch [deleted file]
net/haproxy/patches/0003-BUG-MINOR-lua-executes-the-function-destroying-the-L.patch [deleted file]
net/haproxy/patches/0004-BUG-MAJOR-lua-socket-resources-not-detroyed-when-the.patch [deleted file]
net/haproxy/patches/0005-BUG-MEDIUM-lua-bad-memory-access.patch [deleted file]
net/haproxy/patches/0006-DOC-update-CONTRIBUTING-regarding-optional-parts-and.patch [deleted file]
net/haproxy/patches/0007-DOC-update-the-list-of-OpenSSL-versions-in-the-READM.patch [deleted file]
net/haproxy/patches/0008-MINOR-tools-add-a-portable-timegm-alternative.patch [deleted file]
net/haproxy/patches/0009-BUILD-lua-replace-timegm-with-my_timegm-to-fix-build.patch [deleted file]
net/haproxy/patches/0010-DOC-Updated-51Degrees-git-URL-to-point-to-a-stable-v.patch [deleted file]
net/haproxy/patches/0011-BUG-MINOR-http-Set-the-response-error-state-in-http_.patch [deleted file]
net/haproxy/patches/0012-MINOR-http-Reorder-rewrite-checks-in-http_resync_sta.patch [deleted file]
net/haproxy/patches/0013-MINOR-http-Switch-requests-responses-in-TUNNEL-mode-.patch [deleted file]
net/haproxy/patches/0014-BUG-MEDIUM-http-Switch-HTTP-responses-in-TUNNEL-mode.patch [deleted file]
net/haproxy/patches/0015-BUG-MAJOR-http-Fix-possible-infinity-loop-in-http_sy.patch [deleted file]
net/haproxy/patches/0016-BUG-MINOR-lua-Fix-Server.get_addr-port-values.patch [deleted file]
net/haproxy/patches/0017-BUG-MINOR-lua-Correctly-use-INET6_ADDRSTRLEN-in-Serv.patch [deleted file]
net/haproxy/patches/0018-BUG-MINOR-lua-always-detach-the-tcp-http-tasks-befor.patch [deleted file]
net/memcached/Makefile
net/noddos/Makefile
net/tcpreplay/Makefile
net/wireguard/Makefile [deleted file]
net/wireguard/files/wireguard.sh [deleted file]
net/xl2tpd/Makefile
net/xl2tpd/files/options.xl2tpd
net/xl2tpd/patches/100-makefile_opt_flags.patch [deleted file]
net/xl2tpd/patches/110-makefile_dont_build_pfc.patch [deleted file]
net/xl2tpd/patches/120-no-bsd-signal-in-musl.patch [deleted file]
net/xl2tpd/patches/200-xl2tpd-control-fix-xl2tpd-hanged-up-in-fopen.patch [deleted file]
sound/lame/Makefile
sound/lame/patches/001-automake-compat.patch [deleted file]
sound/pulseaudio/Makefile
utils/acpid/Makefile
utils/at/Makefile
utils/bash/Makefile
utils/bash/patches/001-compile-fix.patch
utils/bash/patches/002-force-internal-readline.patch
utils/bash/patches/101-upstream-bash43-001.patch [deleted file]
utils/bash/patches/101-upstream-bash44-001.patch [new file with mode: 0644]
utils/bash/patches/102-upstream-bash43-002.patch [deleted file]
utils/bash/patches/102-upstream-bash44-002.patch [new file with mode: 0644]
utils/bash/patches/103-upstream-bash43-003.patch [deleted file]
utils/bash/patches/103-upstream-bash44-003.patch [new file with mode: 0644]
utils/bash/patches/104-upstream-bash43-004.patch [deleted file]
utils/bash/patches/104-upstream-bash44-004.patch [new file with mode: 0644]
utils/bash/patches/105-upstream-bash43-005.patch [deleted file]
utils/bash/patches/105-upstream-bash44-005.patch [new file with mode: 0644]
utils/bash/patches/106-upstream-bash43-006.patch [deleted file]
utils/bash/patches/106-upstream-bash44-006.patch [new file with mode: 0644]
utils/bash/patches/107-upstream-bash43-007.patch [deleted file]
utils/bash/patches/107-upstream-bash44-007.patch [new file with mode: 0644]
utils/bash/patches/108-upstream-bash43-008.patch [deleted file]
utils/bash/patches/108-upstream-bash44-008.patch [new file with mode: 0644]
utils/bash/patches/109-upstream-bash43-009.patch [deleted file]
utils/bash/patches/109-upstream-bash44-009.patch [new file with mode: 0644]
utils/bash/patches/110-upstream-bash43-010.patch [deleted file]
utils/bash/patches/110-upstream-bash44-010.patch [new file with mode: 0644]
utils/bash/patches/111-upstream-bash43-011.patch [deleted file]
utils/bash/patches/111-upstream-bash44-011.patch [new file with mode: 0644]
utils/bash/patches/112-upstream-bash43-012.patch [deleted file]
utils/bash/patches/112-upstream-bash44-012.patch [new file with mode: 0644]
utils/bash/patches/113-upstream-bash43-013.patch [deleted file]
utils/bash/patches/114-upstream-bash43-014.patch [deleted file]
utils/bash/patches/115-upstream-bash43-015.patch [deleted file]
utils/bash/patches/116-upstream-bash43-016.patch [deleted file]
utils/bash/patches/117-upstream-bash43-017.patch [deleted file]
utils/bash/patches/118-upstream-bash43-018.patch [deleted file]
utils/bash/patches/119-upstream-bash43-019.patch [deleted file]
utils/bash/patches/120-upstream-bash43-020.patch [deleted file]
utils/bash/patches/121-upstream-bash43-021.patch [deleted file]
utils/bash/patches/122-upstream-bash43-022.patch [deleted file]
utils/bash/patches/123-upstream-bash43-023.patch [deleted file]
utils/bash/patches/124-upstream-bash43-024.patch [deleted file]
utils/bash/patches/125-upstream-bash43-025.patch [deleted file]
utils/bash/patches/126-upstream-bash43-026.patch [deleted file]
utils/bash/patches/127-upstream-bash43-027.patch [deleted file]
utils/bash/patches/128-upstream-bash43-028.patch [deleted file]
utils/bash/patches/129-upstream-bash43-029.patch [deleted file]
utils/bash/patches/130-upstream-bash43-030.patch [deleted file]
utils/bash/patches/131-upstream-bash43-031.patch [deleted file]
utils/bash/patches/132-upstream-bash43-032.patch [deleted file]
utils/bash/patches/133-upstream-bash43-033.patch [deleted file]
utils/bash/patches/134-upstream-bash43-034.patch [deleted file]
utils/bash/patches/135-upstream-bash43-035.patch [deleted file]
utils/bash/patches/136-upstream-bash43-036.patch [deleted file]
utils/bash/patches/137-upstream-bash43-037.patch [deleted file]
utils/bash/patches/138-upstream-bash43-038.patch [deleted file]
utils/bash/patches/139-upstream-bash43-039.patch [deleted file]
utils/bash/patches/140-upstream-bash43-040.patch [deleted file]
utils/bash/patches/141-upstream-bash43-041.patch [deleted file]
utils/bash/patches/142-upstream-bash43-042.patch [deleted file]
utils/vim/Makefile

diff --git a/.travis/626471F1.asc b/.travis/626471F1.asc
new file mode 100644 (file)
index 0000000..3a96895
--- /dev/null
@@ -0,0 +1,64 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Comment: LEDE GnuPG key for unattended build jobs
+
+mQINBFeXZ7wBEAC3QZ+jhWrdj2XW9AdZpZrgHETZCW7lXxI3pJ2kS4UXNq+40KR2
+GJOdsXDnLb7ZiHNn6yio6qKLXFD/bimxK+22HSJlc3LSF2kKzNrgKoFR2rIKbL3c
+Us7GpWY8VqGTrfwR6OQNcoWqa1n5/tK9xuqKhfpoA2Eci8K+w5YCzCmnOz2vzbgS
+ptuFshTKYI2Z/DLQZyP+OQkEYPfCdani2KsISn4DTx8xFjmW/sb/zf0isemTwWyK
+Oh76FTa0tYdjTtAv3JHqyr2XkddM/oUSc09baCOfhUdo7Ep5rUqKw7BQsjreBYoZ
+WcL/hmlIksUrFlqo/HRpoBgCZpSjsF/Z9otZpSugMHVVlRCnAKQiWxWAd+V+y2FG
+q79myPgiMkbkaIrCelrUhDFRQ5wTnfAppFolw+xtT9bwdkwxZDNBe6PCYuLqD8wg
+jtDtt3q5UaUOMGJrMDKZ0Wi6ycdl/sM59kLfyBV4ybmYkwOLTlMvOATiyUZeJJZO
+2bTKBvD+izsx3Ea4VLPWYSFmk6QwaOMtj6tcXwBgtljzqMJ0S9Gubmopy3WAkP/m
+/6ETJpuIupqEtvbRTX4O/+qnBgY40aQX7B4NgJi2SypP/WML5v2B2amLlhTcN+we
+ULWyH9KvfKny5mrtG5C9xq1eAgKtB2QEDEbRyz34DWVWGpqIY1mscaNv8wARAQAB
+tFtMRURFIEJ1aWxkIFN5c3RlbSAoTEVERSBHbnVQRyBrZXkgZm9yIHVuYXR0ZW5k
+ZWQgYnVpbGQgam9icykgPGxlZGUtYWRtQGxpc3RzLmluZnJhZGVhZC5vcmc+iQI4
+BBMBAgAiBQJXl2e8AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDNhLzt
+YmRx8aJ2D/9eRQWekaeX8eAcAgzguFS12ODlg23lJx00d0zLhZcA6LycYJRmFN+M
+0tsVDZ6y7bLy1/h0YFYvYlJk4ZE+6sb4I/GSkMyqeZAy8whELYfEphXVYx0/wgyn
+d57wE0lDo8/zmt3rK1eD0zJioN7cL3A/t3L++al4gwmqtTfUIl96AXc3YBe/rwXS
+i7ShENVKYjTaMugP5BJ9kUZuaIjmXZWvREbURgBMWR7uR56XKJBwDBQMtHq2AoZs
+2iNR3dG8r70Sb/cMSgAqhwDZfeV71r7+Pd+asvxYb0JeNNgZ2ss/BA5yapUKZLgu
+hV6y7JSfHdb7q1t1j/wfqgYtQJB5K31JGxj+yaRxcF8LbvGZBNhaIJV+s4HmTeq4
+yI20pCRNd8lLY80XAISTk8DPwgTLOvMPKbDYW4+/FC8J6qoD9DByQxDduUWn5uD4
+LbVZ96v9+Ltf9LJzaxFVSE/dSsvgFNjo6u29ueG6aTxUIOc4Wi3mC0qNhqoyAbg6
+Xg922EF/sd6hf3aQU9rpcPbcsNognGgrKfyREvMlBsQ9U3pRcKPlG05bfUcayXkh
+59qIVU4kKCaW6LBy1fkBYyY3Nj5eoCAe9fm9ivi58FdI+7sKc2A1fMuVS83B370s
+qAsu6v2rvqYz6nS5VFIWYJmL8kbUmf5FWwbucH7/jr9s3bB0wUHcI7kCDQRXl2h/
+ARAAztMdT5ig5MKM02TFsmGvdc0SQVHPJymPTh6i/XwAbSeaTErvGLP3ke+2cdCj
+MOes4steII5MU6aD57i1zU/6xhZ2Zr8sZ4fCOzfqoI4AOIeeuiO+I5by2P+M+vj2
+v/U7KMWeixFjTkotWcvGGriP1jcRY1FHMrTfq/5lZYNHHzz/2zvszq02/WP+b/Gh
+1Rf1yfr5DlXKw6Q+7fkCg8BWfLichTtHiR0OcO0mtD6ECxz+iqDElbSAeE9Q02fO
+FTF4snHwCJvykHQ4EKudEoXcIEOR8TyH2tKorD821E/DSV9OA9XIBpDHavFQ3GCs
+29GQcqci46nOLn/LWqgTB86sgH4mnQrGsceVYzf8avM8c8TyxkufBd/k01lPn1sK
+/573AWdFRXVmOCMmlxPcI8k1+iGH1C7z0aX43NvhEI3xfbgTK8E/7Klrn/5xXUu2
+UBYov0gKaZRy3LpGF/ySR1pvnHZmUP58my2LDfWDHdHrGmkjLaqyk/+qC9NKwUQB
+S7jV7Mm15B0bkR7grLx+vN5lXVeGwyDL2dbRT0+cH8loHb+lBOR8AbDm4SJXdaRd
+DtPyq85KN+jm+9NToRz+oydL9rmguU5zRcIDtaFiYr7ZtkLJU3U02rp0uf/DdytF
+tzS/YEbpgg2Ui37q55ml707zJL2DvBffy/F2kiNpVfZ4u5cAEQEAAYkEPgQYAQIA
+CQUCV5dofwIbAgIpCRDNhLztYmRx8cFdIAQZAQIABgUCV5dofwAKCRD5NSWoi2mQ
+KQ/PD/9c/snQ2iok9H9PFinYmuOA6tf4Nbn0yX9oOTslDJ8ot6SB4OXGXGeT0lvq
+ytbYVeAlifBElYRVFYZt76dbjhqmsmDMZsYHbaXIYLZSPuTETVE3pZrpWhm9Qkhb
+eEyihAofgWleBmJcd8VXnrzsNkJGNokA6gqZ/ldqJtzMwkeHM58DHo/gFNNNlxe8
+M83PHA0rN48F6DU4tZeEvz+/QGrnn4DWcBhmWo+2ZLvTLI4cB9389j8ks7FFFXLi
+1gnWigWr29uGv8iZpAneY6414cZW3G79wTIwAATRvIvrI9pcvriUrMdOycTcwXOa
+d9eXq/mJdg8dEpKiIA8Vc9UNdT93aZt8r610LbORmdq+wFjEhWvh7xKu9hFm/3UM
+QUaVl3jsIlqZT4G8es+RLHnKVOzLMRovqRKRbsCsXxIxsVqxzhKQ5+wLCpisVNfH
+51WCTSLoAz7s0jKLCSzueUIbhV2vNBM5lFLNCl35UgN1aYuRusI7GyqkPT/A8VWj
+xVxn7o2SBIwyu4hZ4jFsq3qHOygIuRtdOHRX1vREmp7FA3+fVnx0CJUilfnGjhf/
+oydfEC6GuWUn9kTEf2eJsONwQ9gPQ9QC9cFGRFRrVwQcejr7V+DBZSdzY8YLvn7R
+qR3MmlXdpWijqj7noi2C+kbVqbLiX/LWe2axgKE+UTB7lGdl7v25D/99uFIzJmqA
+dhEAEQgb17L7kOV0MOBwFtZ6fElJaQEQV49JiQmgTzALDgXD0ACpT5qoQYCBTwuz
+m2D93ekfMnzxF8PmwW6a2czrG1KoRir2EayhgEoOJuWHLneb5nUc7X3krGNSJ3my
++lMw2QA3wIX7EAS6JJUnZFp7wawecdCekRF9ZE1Z/ZBiUZR17DkbAoYjEYZFxiXA
+cG6sFEM9uTG+y91RcQPq8tY+jw2d76ZjHSnoKjnP2VxsmtiWQ7yLj/5tjrVzQftI
+bbQQTK4V4O4aV2Y1wgkDbNPNJ6t0biQkHQv+4vaLMonOfMgGdWdYJ4hE9nlt61Aq
+GidOnyMxOb+2XpVypOoOPcTyTqe8BUjCcvHQwukZLk3XE7OQoR0wZBFhOr4JCYzT
+xIz9XYrSykZgkZMp8O4zbP+j1ZTXtJEvvPHjOS1HkL1O1H+W98dnl+oQMNQhHvvE
+6UfWEolfuWvBpfP12pUnRQAAyCBql4JAFeoCJEdJGkz8oFOFxv0kCpd7JM1gWEs2
+u0w61+5MelmliHImWiyhgV4XyKW6jeKWIpe9E5L7b8SPI5HHdT7opy3G7aD1XI3k
+jdaIiMnJbq0nSvc5VqRE7Uv0EEcepvFeiuYHYydluxRyNf/ts2JskfEnsOc1JiS+
+GPeIoGmFL85qtFOzc4sqYQGhLj9iMRfmNw==
+=W2Tk
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/.travis/D52BBB6B.asc b/.travis/D52BBB6B.asc
new file mode 100644 (file)
index 0000000..7a001d8
--- /dev/null
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Comment: LEDE 17.01 "Reboot" public key
+
+mQINBFh9DQ8BEACmjR9z4mEXjTWBTcqHI8U38III55qStU4zX4mtYEm8KjaNyBu0
+F8ghe22IAPQcHuvQh0lzr2AoTYi+ZAUlHrLb3s+YdJJD2KoSD1nXW8PgtoT92tai
+utJjSKsB2ZWJc4nskAYXTkDmhTuuHBEg9hvljhXkrPxmcEDN/v1f5fv82U8JLYwt
+g1mGJmW7SsdKtkJbAmEMCi/MFFA2fxLNV33qGhzm4UeAsUrLIGBjbCtU/BK8Im28
+eAF9VP08OUK/QX7te6K6qumvuEIIc/GG4yatdbxltS1SjWYMS0vpqXm4v50CoMaB
+/XCcdq1zlIyIxQW9UF6xJDLhsHv/3iOginR/vRDbdRWk/YPwlx/d9h9GK309YhXu
+GUK/lrBHIZwZ4VEowYjK76isXmRuU9ZeTK9SeKdIyLzYg5NIXW9cvGR+4NKIqfmE
+xxbVupm7Vc+3n4KUdS2t9SLXdkG+YYmyDabftyuACU2+xeHyKcUBn4yxbrcBp5Rs
+5RgOIn/2BtiEQNSc8AagU1ie57VGErrwrpdW/Cmxrs+KG7Io8Pwv+nG9M53DqPwb
+Zuun75iuni9wAR5IVUsUWdIoalb/I4ht58FDOt2iS/KdVwi8yyCHS8gH1J3MzZWP
+Yy9k0pgup54CTXGv/KzDOAsPZzkwNiziWIVE0N49bZFkO0CXgAufOAEtewARAQAB
+tFNMRURFIFJlbGVhc2UgQnVpbGRlciAoMTcuMDEgIlJlYm9vdCIgU2lnbmluZyBL
+ZXkpIDxsZWRlLWRldkBsaXN0cy5sZWRlLXByb2plY3Qub3JnPokCPgQTAQIAKAUC
+WH0NDwIbAwUJA8JnAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQgzxgENUr
+u2tMaA//aRvfrOoMTVtjw+Pru+hBC7IhkusJ70x8gUxSPmHZX0+KvIvILyAeVEho
+TW5lMwwo6b66GcBmP53qu/rech8HyunyyDUYFEvdE/ym3uO6NpE/3N/Z69TJiC+k
+1imElx5njTZkH/qZSClqN8j6ehspywnSKWNfSOM/9K1G7qtWgiqIaDYa+sdtRHjx
+oh4dtKiauUced0C1i7V1vT1ko8iZKWFiwj9GJSaoVxyUwI2fG3iV2qdcinPCL0nU
+BfVIhU5cXMZ6VtVg5Ly6NqUbrhZzVVl8DMnu5z4MOLZWseob4LhK5W0v+DUTezJS
+Cvei+woJ3SIy0CLXe6eDKwbCS5kCaoNbExeTnSz7/Mg14NjREhtWkq79rnHrH9MV
+QAXyjmd3q0D5sDLzk8nQ3fGaH1Zg+o+VECkwEwz4ypctXqRAcHyIkYHmv8rFYlQY
+dJlfs1NgZzk9EWfZ0/RLUdqNx6beKm27r2W1j+gcaM01sk5q9TPZeuNHh8psFlCD
+b5mq6XBstA9NwN9pg5zS+UkfjjMU5FiBIEVv4Lt/dblNkjID/+XUBkHpSAz13GDW
+k0ElkSBgBvz8TSm68EUGTfTVhK21x+1x15/8AUoV8V+4txncMhnJNmrEcKolnMeF
+96xgcoHpPszlHxjiwS6hrFPDyhfYwU9plDI7ojcIleqK98XjRHY=
+=aN5O
+-----END PGP PUBLIC KEY BLOCK-----
index 2dd1c1c8d771129f9934a24c22c02aba44fbf1e6..1db07edfdc5dc36fc6ccf403d74d8db70d5b43d1 100755 (executable)
@@ -6,7 +6,7 @@ set -e
 
 SDK_HOME="$HOME/sdk"
 SDK_PATH=https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/
-SDK=lede-sdk-ar71xx-generic_gcc-5.4.0_musl.Linux-x86_64
+SDK=lede-sdk-ar71xx-generic_gcc-5.5.0_musl.Linux-x86_64
 PACKAGES_DIR="$PWD"
 
 echo_red()   { printf "\033[1;31m$*\033[m\n"; }
@@ -45,9 +45,12 @@ download_sdk() {
        wget "$SDK_PATH/sha256sums.gpg" -O sha256sums.asc
 
        # LEDE Build System (LEDE GnuPG key for unattended build jobs)
-       gpg --recv 0xCD84BCED626471F1
+       gpg --import $PACKAGES_DIR/.travis/626471F1.asc
+       echo '54CC74307A2C6DC9CE618269CD84BCED626471F1:6:' | gpg --import-ownertrust
        # LEDE Release Builder (17.01 "Reboot" Signing Key)
-       gpg --recv 0x833C6010D52BBB6B
+       gpg --import $PACKAGES_DIR/.travis/D52BBB6B.asc
+       echo 'B09BE781AE8A0CD4702FDCD3833C6010D52BBB6B:6:' | gpg --import-ownertrust
+
        gpg --verify sha256sums.asc
        grep "$SDK" sha256sums > sha256sums.small
 
index 93154e9838c528b0a8a034180e5e4e62ac614ddc..16779a7b1b5f42128560c7c68f093e861a755035 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sudo
-PKG_VERSION:=1.8.14p3
+PKG_VERSION:=1.8.21p2
 PKG_RELEASE:=1
 PKG_LICENSE:=ISC
 PKG_LICENSE_FILES:=doc/LICENSE
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.sudo.ws/dist
-PKG_HASH:=a8a697cbb113859058944850d098464618254804cf97961dee926429f00a1237
+PKG_HASH:=74c5746cd33a814e2431c39faf0d76f7f8a697379bd073862e3b156cf0d76368
 
 PKG_INSTALL:=1
 
index 6f07b49faea24aab2be3a25f224c4b044f76917b..015b054898d7664fd5d47f913834d5196eb21894 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=perl
 PKG_VERSION:=5.24.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_URL:=\
                https://cpan.metacpan.org/src/5.0 \
@@ -96,7 +96,7 @@ define Build/Configure
                                        -Dowrt:gccversion=$(CONFIG_GCC_VERSION) \
                                        -Dowrt:target_cross='$(TARGET_CROSS)' \
                                        -Dowrt:cflags='$(TARGET_CFLAGS_PERL) $(TARGET_CPPFLAGS_PERL)' \
-                                       -Dowrt:ldflags='-rdynamic $(TARGET_LDFLAGS)' \
+                                       -Dowrt:ldflags='$(TARGET_LDFLAGS)' \
                                        -Dowrt:libc=$(subst uClibc,uclibc,$(CONFIG_LIBC)) \
                                        -Dowrt:ipv6=$(if $($(CONFIG_IPV6)),define,undef) \
                                        -Dowrt:threads=$(if $(CONFIG_PERL_THREADS),yes,no) \
index 5059afd368c38825e8a522070dd3c9165e220f9e..1b17e1c184b0ee193e786dddb136c5b98dc808de 100644 (file)
@@ -1006,9 +1006,9 @@ full_ar="${owrt:target_cross}ar"
 cppflags="$owrt:cflags"
 ccflags="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $owrt:cflags"
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-ccdlflags="-fPIC -Wl,-rpath,$owrt:perllibpath/CORE"
+ccdlflags="-fPIC -rdynamic -Wl,-rpath,$owrt:perllibpath/CORE"
 cccdlflags='-fPIC'
-ldflags=''
+ldflags="$owrt:ldflags"
 ldflags_uselargefiles=''
 lddlflags="-shared $owrt:ldflags"
 
index d0a7673118e5429790e03a966fe53260f61b42f4..efcca96629a97291c9a0d3d213952599f8c4fc32 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django
-PKG_VERSION:=1.8.17
+PKG_VERSION:=1.8.18
 PKG_RELEASE=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/django/django.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=d3d12fc11da56e4ea8af37a22a9a0aa6579ab2d5
+PKG_SOURCE_VERSION:=2d4bc5a60aa8a076689667c550ded96b87bc463e
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=7d8c4e58486c3a539f17437b3a802b67d53401971eceac2be50c47bcc756c27b
+PKG_MIRROR_HASH:=c82c2cc338ae46ba8572d9960fc98dca932edc43a00f011fed102810a86185ae
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 65d43599ab82cefa6b192ee3fdb6be3b4207f1c8..3ed79a30981b081efd9000ebd7d5de3d0aa6d263 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-lxml
-PKG_VERSION:=4.0.0
+PKG_VERSION:=4.1.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=lxml-$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=http://lxml.de/files/
-PKG_HASH:=f7bc9f702500e205b1560d620f14015fec76dcd6f9e889a946a2ddcc3c344fd0
+PKG_HASH:=be3aaeb5f468a49f523f16736ccff7d82af2b4b303292ba3d052b5b28f3fbe47
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-lxml-$(PKG_VERSION)
 PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
index 1e37ee21976097d1c129a313f3a5db7c66d23d4f..eb86460dd17b7a46326cc9d8a8fe0e4021a72bac 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=glib2
-PKG_VERSION:=2.53.7
+PKG_VERSION:=2.54.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=glib-$(PKG_VERSION).tar.xz
 PKG_BUILD_DIR:=$(BUILD_DIR)/glib-$(PKG_VERSION)
-PKG_SOURCE_URL:=@GNOME/glib/2.53
-PKG_HASH:=028efbf6df4d88d7725314456524b923169f4d4f8503347194b2baf2222f3e33
+PKG_SOURCE_URL:=@GNOME/glib/2.54
+PKG_HASH:=50c01b1419324f10fbf9b9709ec2164b18586968bdce7540583bf32302cf47a3
 
 PKG_BUILD_PARALLEL:=1
 HOST_BUILD_PARALLEL:=1
index 20a5585b132a01e74dcce1bd8ae2197bfd1098e4..b5af7f100835aa84f3be9dbcb65ab0b91a1db386 100644 (file)
@@ -9,14 +9,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libgphoto2
-PKG_VERSION:=2.5.14
-PKG_RELEASE:=2
+PKG_VERSION:=2.5.16
+PKG_RELEASE:=1
 PORT_VERSION:=0.12.0
 PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/gphoto
-PKG_HASH:=d3ce70686fb87d6791b9adcbb6e5693bfbe1cfef9661c23c75eb8a699ec4e274
+PKG_HASH:=e757416d1623e01a9d0d294b2e790162e434c0964f50d3b7ff1a3424b62a2906
 PKG_LICENSE:=LGPL-2.1
 PKG_LICENSE_FILES:=COPYING
 
index e1b9977b6d838607221237c780bd81e052abc94f..fa70b543f288a6aa12142b213c303c8e7d2e17e2 100644 (file)
@@ -1,7 +1,7 @@
-Index: libgphoto2-2.5.14/configure.ac
+Index: libgphoto2-2.5.16/configure.ac
 ===================================================================
---- libgphoto2-2.5.14.orig/configure.ac
-+++ libgphoto2-2.5.14/configure.ac
+--- libgphoto2-2.5.16.orig/configure.ac
++++ libgphoto2-2.5.16/configure.ac
 @@ -209,7 +209,6 @@ ALL_LINGUAS="cs da de es eu fr hu it ja
  GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2_CURRENT_MIN}],[The gPhoto Team],[${MAIL_GPHOTO_TRANSLATION}])
  AM_GNU_GETTEXT_VERSION([0.14.1])
@@ -10,10 +10,10 @@ Index: libgphoto2-2.5.14/configure.ac
  AM_ICONV()
  GP_GETTEXT_FLAGS()
 
-Index: libgphoto2-2.5.14/libgphoto2_port/configure.ac
+Index: libgphoto2-2.5.16/libgphoto2_port/configure.ac
 ===================================================================
---- libgphoto2-2.5.14.orig/libgphoto2_port/configure.ac
-+++ libgphoto2-2.5.14/libgphoto2_port/configure.ac
+--- libgphoto2-2.5.16.orig/libgphoto2_port/configure.ac
++++ libgphoto2-2.5.16/libgphoto2_port/configure.ac
 @@ -124,7 +124,6 @@ GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2
  ALL_LINGUAS="cs da de es eu fi fr it ja nl pl pt_BR ru sk sr sv uk vi zh_CN zh_TW"
  AM_GNU_GETTEXT_VERSION([0.14.1])
index 9914201dc088ece51b6feef52c45dacce2bde1c7..2bb0e0c43a9a89e78125a4799f4f52fa2d7ad9f7 100644 (file)
@@ -1,7 +1,7 @@
-Index: libgphoto2-2.5.14/Makefile.am
+Index: libgphoto2-2.5.16/Makefile.am
 ===================================================================
---- libgphoto2-2.5.14.orig/Makefile.am
-+++ libgphoto2-2.5.14/Makefile.am
+--- libgphoto2-2.5.16.orig/Makefile.am
++++ libgphoto2-2.5.16/Makefile.am
 @@ -8,7 +8,7 @@ bin_SCRIPTS = gphoto2-config
  EXTRA_DIST = HACKING MAINTAINERS TESTERS installcheck.mk
 
@@ -11,10 +11,10 @@ Index: libgphoto2-2.5.14/Makefile.am
 
  EXTRA_DIST    += libgphoto2.pc.in
  pkgconfig_DATA = libgphoto2.pc
-Index: libgphoto2-2.5.14/Makefile.in
+Index: libgphoto2-2.5.16/Makefile.in
 ===================================================================
---- libgphoto2-2.5.14.orig/Makefile.in
-+++ libgphoto2-2.5.14/Makefile.in
+--- libgphoto2-2.5.16.orig/Makefile.in
++++ libgphoto2-2.5.16/Makefile.in
 @@ -482,7 +482,7 @@ EXTRA_DIST = HACKING MAINTAINERS TESTERS
        INSTALL README.in README README.packaging
 
@@ -24,10 +24,10 @@ Index: libgphoto2-2.5.14/Makefile.in
  pkgconfig_DATA = libgphoto2.pc
  noinst_DATA = libgphoto2-uninstalled.pc
  doc_DATA = AUTHORS COPYING NEWS ABOUT-NLS ChangeLog README \
-Index: libgphoto2-2.5.14/configure.ac
+Index: libgphoto2-2.5.16/configure.ac
 ===================================================================
---- libgphoto2-2.5.14.orig/configure.ac
-+++ libgphoto2-2.5.14/configure.ac
+--- libgphoto2-2.5.16.orig/configure.ac
++++ libgphoto2-2.5.16/configure.ac
 @@ -635,20 +635,11 @@ gphoto-m4/Makefile
  libgphoto2/Makefile
  libgphoto2.pc
@@ -49,10 +49,10 @@ Index: libgphoto2-2.5.14/configure.ac
  ],[
  dnl This relies on this code being called for each of the above files
  dnl with ac_file set to the filename.
-Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.am
+Index: libgphoto2-2.5.16/libgphoto2_port/Makefile.am
 ===================================================================
---- libgphoto2-2.5.14.orig/libgphoto2_port/Makefile.am
-+++ libgphoto2-2.5.14/libgphoto2_port/Makefile.am
+--- libgphoto2-2.5.16.orig/libgphoto2_port/Makefile.am
++++ libgphoto2-2.5.16/libgphoto2_port/Makefile.am
 @@ -25,7 +25,7 @@ udevscript_PROGRAMS =
  bin_SCRIPTS = gphoto2-port-config
 
@@ -62,10 +62,10 @@ Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.am
 
 
  ########################################################################
-Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.in
+Index: libgphoto2-2.5.16/libgphoto2_port/Makefile.in
 ===================================================================
---- libgphoto2-2.5.14.orig/libgphoto2_port/Makefile.in
-+++ libgphoto2-2.5.14/libgphoto2_port/Makefile.in
+--- libgphoto2-2.5.16.orig/libgphoto2_port/Makefile.in
++++ libgphoto2-2.5.16/libgphoto2_port/Makefile.in
 @@ -574,7 +574,7 @@ EXTRA_LTLIBRARIES = disk.la ptpip.la ser
  bin_SCRIPTS = gphoto2-port-config
 
@@ -75,10 +75,10 @@ Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.in
 
  ########################################################################
  # All iolibs are defined as EXTRA_LTLIBRARIES. This requires that
-Index: libgphoto2-2.5.14/libgphoto2_port/configure.ac
+Index: libgphoto2-2.5.16/libgphoto2_port/configure.ac
 ===================================================================
---- libgphoto2-2.5.14.orig/libgphoto2_port/configure.ac
-+++ libgphoto2-2.5.14/libgphoto2_port/configure.ac
+--- libgphoto2-2.5.16.orig/libgphoto2_port/configure.ac
++++ libgphoto2-2.5.16/libgphoto2_port/configure.ac
 @@ -512,13 +512,10 @@ AC_SUBST([AM_LDFLAGS])
  # ---------------------------------------------------------------------------
  AC_CONFIG_FILES([
index b78e52faf9f7e029c580168c29483a7a8922a5d1..f5033aaed54b62ee2ccd62e7bc66abd272987832 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libuv
-PKG_VERSION:=1.14.0
+PKG_VERSION:=1.15.0
 PKG_RELEASE:=1
 
 PKG_LICENSE_FILES:=LICENSE
 
-PKG_MAINTAINER:=Luka Perkov <luka.perkov@sartura.hr>
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
 
 PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://dist.libuv.org/dist/v$(PKG_VERSION)/
-PKG_HASH:=7267f1564fc6bd84e1721ad7e3cdd7b5da06faab9fa09522f33589dc08d3edf9
+PKG_HASH:=28b1b334ae79fdbb025c7a4dacf3cb14738f9d336998bc42bbdbe72b8799fe85
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
 PKG_BUILD_PARALLEL:=1
index 95a353cd426157f29a86ce45c9ca28e083e165b7..a6a4e2f256ae30449823379bfd5c889ce46cc145 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2012 OpenWrt.org
+# Copyright (C) 2006-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=qrencode
-PKG_VERSION:=3.4.4
-PKG_RELEASE:=2
+PKG_VERSION:=4.0.0
+PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://fukuchi.org/works/qrencode/
-PKG_HASH:=e794e26a96019013c0e3665cb06b18992668f352c5553d0a553f5d144f7f2a72
+PKG_HASH:=c90035e16921117d4086a7fdee65aab85be32beb4a376f6b664b8a425d327d0b
 PKG_MAINTAINER:=Jonathan Bennett <JBennett@incomsystems.biz>
 PKG_LICENSE:=LGPL-2.1+
 PKG_INSTALL:=1
@@ -56,7 +56,8 @@ CONFIGURE_ARGS+= \
        --enable-static \
        --disable-rpath \
        --disable-sdltest \
-       --without-tests 
+       --without-tests \
+       --without-png
 
 TARGET_LDFLAGS+= -s
 
diff --git a/libs/qrencode/patches/001-add-inline-svg.patch b/libs/qrencode/patches/001-add-inline-svg.patch
new file mode 100644 (file)
index 0000000..02f7d2a
--- /dev/null
@@ -0,0 +1,67 @@
+From 7dd8a1b6f4efab84025c735195ad9d84f6477359 Mon Sep 17 00:00:00 2001
+From: Jonathan Bennett <JBennett@incomsystems.biz>
+Date: Mon, 16 Oct 2017 11:59:23 -0500
+Subject: [PATCH] Adds the --inline option, which omits the xml tag for SVG
+ output.
+
+---
+ qrenc.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/qrenc.c b/qrenc.c
+index ed83d8a..373352e 100644
+--- a/qrenc.c
++++ b/qrenc.c
+@@ -45,6 +45,7 @@ static int structured = 0;
+ static int rle = 0;
+ static int svg_path = 0;
+ static int micro = 0;
++static int inline_svg = 0;
+ static QRecLevel level = QR_ECLEVEL_L;
+ static QRencodeMode hint = QR_MODE_8;
+ static unsigned char fg_color[4] = {0, 0, 0, 255};
+@@ -80,6 +81,7 @@ static const struct option options[] = {
+       {"margin"       , required_argument, NULL, 'm'},
+       {"dpi"          , required_argument, NULL, 'd'},
+       {"type"         , required_argument, NULL, 't'},
++      {"inline"       , no_argument      , NULL, 'I'},
+       {"structured"   , no_argument      , NULL, 'S'},
+       {"kanji"        , no_argument      , NULL, 'k'},
+       {"casesensitive", no_argument      , NULL, 'c'},
+@@ -95,7 +97,7 @@ static const struct option options[] = {
+       {NULL, 0, NULL, 0}
+ };
+-static char *optstring = "ho:r:l:s:v:m:d:t:Skci8MV";
++static char *optstring = "ho:r:l:s:v:m:d:t:ISkci8MV";
+ static void usage(int help, int longopt, int status)
+ {
+@@ -132,6 +134,7 @@ static void usage(int help, int longopt, int status)
+ "  -t {PNG,PNG32,EPS,SVG,XPM,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8},\n"
+ "  --type={PNG,PNG32,EPS,SVG,XPM,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
+ "               specify the type of the generated image. (default=PNG)\n\n"
++"  -I, --inline Only useful for SVG output, generates an svg without the XML tag\n"
+ "  -S, --structured\n"
+ "               make structured symbols. Version must be specified.\n\n"
+ "  -k, --kanji  assume that the input text contains kanji (shift-jis).\n\n"
+@@ -551,7 +554,8 @@ static int writeSVG(const QRcode *qrcode, const char *outfile)
+       bg_opacity = (float)bg_color[3] / 255;
+       /* XML declaration */
+-      fputs( "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n", fp );
++      if (!inline_svg)
++              fputs( "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n", fp );
+       /* DTD
+          No document type specified because "while a DTD is provided in [the SVG]
+@@ -1324,6 +1328,9 @@ int main(int argc, char **argv)
+                                       exit(EXIT_FAILURE);
+                               }
+                               break;
++                      case 'I':
++                              inline_svg = 1;
++                              break;
+                       case 'S':
+                               structured = 1;
+                               break;
diff --git a/libs/qrencode/patches/001-disable-png.patch b/libs/qrencode/patches/001-disable-png.patch
deleted file mode 100644 (file)
index 345bb60..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
---- a/qrenc.c
-+++ b/qrenc.c
-@@ -25,7 +25,6 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
--#include <png.h>
- #include <getopt.h>
- #include "qrencode.h"
-@@ -49,7 +48,6 @@
- static int verbose = 0;
- enum imageType {
--      PNG_TYPE,
-       EPS_TYPE,
-       SVG_TYPE,
-       ANSI_TYPE,
-@@ -60,7 +58,7 @@
-       ANSIUTF8_TYPE
- };
--static enum imageType image_type = PNG_TYPE;
-+static enum imageType image_type = SVG_TYPE;
- static const struct option options[] = {
-       {"help"         , no_argument      , NULL, 'h'},
-@@ -96,13 +94,13 @@
-               if(longopt) {
-                       fprintf(stderr,
- "Usage: qrencode [OPTION]... [STRING]\n"
--"Encode input data in a QR Code and save as a PNG or EPS image.\n\n"
-+"Encode input data in a QR Code and save as a SVG or EPS image.\n\n"
- "  -h, --help   display the help message. -h displays only the help of short\n"
- "               options.\n\n"
- "  -o FILENAME, --output=FILENAME\n"
- "               write image to FILENAME. If '-' is specified, the result\n"
- "               will be output to standard output. If -S is given, structured\n"
--"               symbols are written to FILENAME-01.png, FILENAME-02.png, ...\n"
-+"               symbols are written to FILENAME-01.svg, FILENAME-02.svg, ...\n"
- "               (suffix is removed from FILENAME, if specified)\n"
- "  -s NUMBER, --size=NUMBER\n"
- "               specify module size in dots (pixels). (default=3)\n\n"
-@@ -116,9 +114,9 @@
- "               specify the width of the margins. (default=4 (2 for Micro QR)))\n\n"
- "  -d NUMBER, --dpi=NUMBER\n"
- "               specify the DPI of the generated PNG. (default=72)\n\n"
--"  -t {PNG,EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}, --type={PNG,EPS,\n"
-+"  -t {EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}, --type={EPS,\n"
- "               SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
--"               specify the type of the generated image. (default=PNG)\n\n"
-+"               specify the type of the generated image. (default=SVG)\n\n"
- "  -S, --structured\n"
- "               make structured symbols. Version must be specified.\n\n"
- "  -k, --kanji  assume that the input text contains kanji (shift-jis).\n\n"
-@@ -133,7 +131,7 @@
- "      --background=RRGGBB[AA]\n"
- "               specify foreground/background color in hexadecimal notation.\n"
- "               6-digit (RGB) or 8-digit (RGBA) form are supported.\n"
--"               Color output support available only in PNG and SVG.\n"
-+"               Color output support available only in SVG.\n"
- "  -V, --version\n"
- "               display the version number and copyrights of the qrencode.\n\n"
- "      --verbose\n"
-@@ -153,12 +151,12 @@
-               } else {
-                       fprintf(stderr,
- "Usage: qrencode [OPTION]... [STRING]\n"
--"Encode input data in a QR Code and save as a PNG or EPS image.\n\n"
-+"Encode input data in a QR Code and save as a SVG or EPS image.\n\n"
- "  -h           display this message.\n"
- "  --help       display the usage of long options.\n"
- "  -o FILENAME  write image to FILENAME. If '-' is specified, the result\n"
- "               will be output to standard output. If -S is given, structured\n"
--"               symbols are written to FILENAME-01.png, FILENAME-02.png, ...\n"
-+"               symbols are written to FILENAME-01.svg, FILENAME-02.svg, ...\n"
- "               (suffix is removed from FILENAME, if specified)\n"
- "  -s NUMBER    specify module size in dots (pixels). (default=3)\n"
- "  -l {LMQH}    specify error correction level from L (lowest) to H (highest).\n"
-@@ -166,8 +164,8 @@
- "  -v NUMBER    specify the version of the symbol. (default=auto)\n"
- "  -m NUMBER    specify the width of the margins. (default=4 (2 for Micro))\n"
- "  -d NUMBER    specify the DPI of the generated PNG. (default=72)\n"
--"  -t {PNG,EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
--"               specify the type of the generated image. (default=PNG)\n"
-+"  -t {EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
-+"               specify the type of the generated image. (default=SVG)\n"
- "  -S           make structured symbols. Version must be specified.\n"
- "  -k           assume that the input text contains kanji (shift-jis).\n"
- "  -c           encode lower-case alphabet characters in 8-bit mode. (default)\n"
-@@ -178,7 +176,7 @@
- "  --background=RRGGBB[AA]\n"
- "               specify foreground/background color in hexadecimal notation.\n"
- "               6-digit (RGB) or 8-digit (RGBA) form are supported.\n"
--"               Color output support available only in PNG and SVG.\n"
-+"               Color output support available only in SVG.\n"
- "  -V           display the version number and copyrights of the qrencode.\n"
- "  [STRING]     input data. If it is not specified, data will be taken from\n"
- "               standard input.\n"
-@@ -253,128 +251,6 @@
-       return fp;
- }
--static int writePNG(QRcode *qrcode, const char *outfile)
--{
--      static FILE *fp; // avoid clobbering by setjmp.
--      png_structp png_ptr;
--      png_infop info_ptr;
--      png_colorp palette;
--      png_byte alpha_values[2];
--      unsigned char *row, *p, *q;
--      int x, y, xx, yy, bit;
--      int realwidth;
--
--      realwidth = (qrcode->width + margin * 2) * size;
--      row = (unsigned char *)malloc((realwidth + 7) / 8);
--      if(row == NULL) {
--              fprintf(stderr, "Failed to allocate memory.\n");
--              exit(EXIT_FAILURE);
--      }
--
--      if(outfile[0] == '-' && outfile[1] == '\0') {
--              fp = stdout;
--      } else {
--              fp = fopen(outfile, "wb");
--              if(fp == NULL) {
--                      fprintf(stderr, "Failed to create file: %s\n", outfile);
--                      perror(NULL);
--                      exit(EXIT_FAILURE);
--              }
--      }
--
--      png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
--      if(png_ptr == NULL) {
--              fprintf(stderr, "Failed to initialize PNG writer.\n");
--              exit(EXIT_FAILURE);
--      }
--
--      info_ptr = png_create_info_struct(png_ptr);
--      if(info_ptr == NULL) {
--              fprintf(stderr, "Failed to initialize PNG write.\n");
--              exit(EXIT_FAILURE);
--      }
--
--      if(setjmp(png_jmpbuf(png_ptr))) {
--              png_destroy_write_struct(&png_ptr, &info_ptr);
--              fprintf(stderr, "Failed to write PNG image.\n");
--              exit(EXIT_FAILURE);
--      }
--
--      palette = (png_colorp) malloc(sizeof(png_color) * 2);
--      if(palette == NULL) {
--              fprintf(stderr, "Failed to allocate memory.\n");
--              exit(EXIT_FAILURE);
--      }
--      palette[0].red   = fg_color[0];
--      palette[0].green = fg_color[1];
--      palette[0].blue  = fg_color[2];
--      palette[1].red   = bg_color[0];
--      palette[1].green = bg_color[1];
--      palette[1].blue  = bg_color[2];
--      alpha_values[0] = fg_color[3];
--      alpha_values[1] = bg_color[3];
--      png_set_PLTE(png_ptr, info_ptr, palette, 2);
--      png_set_tRNS(png_ptr, info_ptr, alpha_values, 2, NULL);
--
--      png_init_io(png_ptr, fp);
--      png_set_IHDR(png_ptr, info_ptr,
--                      realwidth, realwidth,
--                      1,
--                      PNG_COLOR_TYPE_PALETTE,
--                      PNG_INTERLACE_NONE,
--                      PNG_COMPRESSION_TYPE_DEFAULT,
--                      PNG_FILTER_TYPE_DEFAULT);
--      png_set_pHYs(png_ptr, info_ptr,
--                      dpi * INCHES_PER_METER,
--                      dpi * INCHES_PER_METER,
--                      PNG_RESOLUTION_METER);
--      png_write_info(png_ptr, info_ptr);
--
--      /* top margin */
--      memset(row, 0xff, (realwidth + 7) / 8);
--      for(y=0; y<margin * size; y++) {
--              png_write_row(png_ptr, row);
--      }
--
--      /* data */
--      p = qrcode->data;
--      for(y=0; y<qrcode->width; y++) {
--              bit = 7;
--              memset(row, 0xff, (realwidth + 7) / 8);
--              q = row;
--              q += margin * size / 8;
--              bit = 7 - (margin * size % 8);
--              for(x=0; x<qrcode->width; x++) {
--                      for(xx=0; xx<size; xx++) {
--                              *q ^= (*p & 1) << bit;
--                              bit--;
--                              if(bit < 0) {
--                                      q++;
--                                      bit = 7;
--                              }
--                      }
--                      p++;
--              }
--              for(yy=0; yy<size; yy++) {
--                      png_write_row(png_ptr, row);
--              }
--      }
--      /* bottom margin */
--      memset(row, 0xff, (realwidth + 7) / 8);
--      for(y=0; y<margin * size; y++) {
--              png_write_row(png_ptr, row);
--      }
--
--      png_write_end(png_ptr, info_ptr);
--      png_destroy_write_struct(&png_ptr, &info_ptr);
--
--      fclose(fp);
--      free(row);
--      free(palette);
--
--      return 0;
--}
--
- static int writeEPS(QRcode *qrcode, const char *outfile)
- {
-       FILE *fp;
-@@ -831,9 +707,6 @@
-       }
-       switch(image_type) {
--              case PNG_TYPE:
--                      writePNG(qrcode, outfile);
--                      break;
-               case EPS_TYPE:
-                       writeEPS(qrcode, outfile);
-                       break;
-@@ -887,9 +760,6 @@
-       size_t suffix_size;
-       switch(image_type) {
--              case PNG_TYPE:
--                      type_suffix = ".png";
--                      break;
-               case EPS_TYPE:
-                       type_suffix = ".eps";
-                       break;
-@@ -948,9 +818,6 @@
-               }
-               switch(image_type) {
--                      case PNG_TYPE: 
--                              writePNG(p->code, filename);
--                              break;
-                       case EPS_TYPE: 
-                               writeEPS(p->code, filename);
-                               break;
-@@ -1062,9 +929,7 @@
-                               }
-                               break;
-                       case 't':
--                              if(strcasecmp(optarg, "png") == 0) {
--                                      image_type = PNG_TYPE;
--                              } else if(strcasecmp(optarg, "eps") == 0) {
-+                              if(strcasecmp(optarg, "eps") == 0) {
-                                       image_type = EPS_TYPE;
-                               } else if(strcasecmp(optarg, "svg") == 0) {
-                                       image_type = SVG_TYPE;
-@@ -1133,11 +998,6 @@
-               exit(EXIT_SUCCESS);
-       }
--      if(outfile == NULL && image_type == PNG_TYPE) {
--              fprintf(stderr, "No output filename is given.\n");
--              exit(EXIT_FAILURE);
--      }
--
-       if(optind < argc) {
-               intext = (unsigned char *)argv[optind];
-               length = strlen((char *)intext);
---- a/configure.ac
-+++ b/configure.ac
-@@ -58,9 +58,6 @@
-  [build_tools=$withval], [build_tools=yes])
- AM_CONDITIONAL(BUILD_TOOLS, [test "x$build_tools" = "xyes" ])
--if test x$build_tools = xyes ; then
--      PKG_CHECK_MODULES(png, "libpng")
--fi
- dnl --with-tests
- AC_ARG_WITH([tests], [AS_HELP_STRING([--with-tests], [build tests [default=no]])],
-@@ -80,12 +77,6 @@
- echo "/* #undef WITH_TESTS */" >>confdefs.h
- fi
--if test x$build_tests = xyes ; then
--      SDL_REQUIRED_VERSION=1.2.0
--      AM_PATH_SDL($SDL_REQUIRED_VERSION,,AC_MSG_WARN([*** SDL $SDL_REQUIRED_VERSION or better is required.]))
--      AC_MSG_NOTICE([SDL check done.])
--      AM_ICONV_LINK
--fi
- AM_CONDITIONAL(HAVE_SDL, [test "x$SDL_CFLAGS" != "x" ])
index 254db36e2e70ce77a9be747b479e1c189a29f00a..42d7a8f3da582b838f1b0b5502dc248e3c9e0ae2 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dovecot
-PKG_VERSION:=2.2.32
-PKG_RELEASE:=2
+PKG_VERSION:=2.2.33.1
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.dovecot.org/releases/2.2
-PKG_HASH:=160b2151e2af359877f69cb2dcdfe1a3f4138ad3766e3b8562b96616e2f6bc2e
+PKG_HASH:=e4d9a182408100dce70e05dad1f8a703252a497aeb25706642286d84a118890b
 PKG_LICENSE:=LGPL-2.1 MIT BSD-3-Clause Unique
 PKG_LICENSE_FILES:=COPYING COPYING.LGPL COPYING.MIT
 
index 8da33ecb68c890f242bde3c234afd75820a2b630..2621c768d731c7d13c722619529311ef41c815d6 100644 (file)
@@ -8,18 +8,19 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mutt
-PKG_VERSION:=1.7.2
+PKG_VERSION:=1.9.1
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=ftp://ftp.mutt.org/pub/mutt/ \
                https://bitbucket.org/mutt/mutt/downloads/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=1553501687cd22d5b8aaee4dc5a7d9dcf6cc61d7956f6aabaadd252d10cd5ff9
+PKG_HASH:=749b83a96373c6e2101ebe8c4b9a651735e02c478edb750750a5146a15d91bb1
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=GPL
 PKG_MAINTAINER:=Phil Eichinger <phil@zankapfel.net>
 
+PKG_FIXUP:=autoreconf
 
 PKG_INSTALL:=1
 
@@ -44,7 +45,8 @@ CONFIGURE_ARGS += \
        --enable-pop \
        --enable-imap \
        --with-ssl \
-       --without-idn
+       --without-idn \
+       --disable-doc
 
 define Package/mutt/install
        $(INSTALL_DIR) $(1)/usr/bin
diff --git a/mail/mutt/patches/0001-no-po-and-docs.patch b/mail/mutt/patches/0001-no-po-and-docs.patch
deleted file mode 100644 (file)
index 08d6e65..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From b0e285a8c7faaec8807fdd677da6750f341f0109 Mon Sep 17 00:00:00 2001
-From: Phil Eichinger <phil@zankapfel.net>
-Date: Thu, 19 Nov 2015 13:18:53 +0100
-Subject: [PATCH] no po and docs
-
-[adapted old patch and converted to git patch]
-Signed-off-by: Phil Eichinger <phil@zankapfel.net>
----
- Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index 1909835..cfa7ca0 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -470,7 +470,7 @@ get_cs_cmdline = $(call get_cs_compile,$
- AUTOMAKE_OPTIONS = 1.6 foreign
- @BUILD_IMAP_TRUE@IMAP_SUBDIR = imap
- @BUILD_IMAP_TRUE@IMAP_INCLUDES = -I$(top_srcdir)/imap
--SUBDIRS = m4 po intl doc contrib $(IMAP_SUBDIR)
-+SUBDIRS = m4 intl contrib $(IMAP_SUBDIR)
- bin_SCRIPTS = muttbug flea $(SMIMEAUX_TARGET)
- @BUILD_HCACHE_TRUE@HCVERSION = hcversion.h
- BUILT_SOURCES = keymap_defs.h patchlist.c reldate.h conststrings.c $(HCVERSION)
--- 
-2.1.4
-
diff --git a/mail/mutt/patches/0001-no-po.patch b/mail/mutt/patches/0001-no-po.patch
new file mode 100644 (file)
index 0000000..51ea760
--- /dev/null
@@ -0,0 +1,26 @@
+From 6dbfafd4b8bfc9f5e53db90c5279784c506a3253 Mon Sep 17 00:00:00 2001
+From: Phil Eichinger <phil@zankapfel.net>
+Date: Tue, 17 Oct 2017 06:44:04 +0200
+Subject: [PATCH] no po
+
+docs are disabled via ./configure --disable-doc now
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 4bc2db4..bb00927 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -14,7 +14,7 @@ IMAP_SUBDIR = imap
+ IMAP_INCLUDES = -I$(top_srcdir)/imap
+ endif
+-SUBDIRS = m4 po intl $(DOC_SUBDIR) contrib $(IMAP_SUBDIR)
++SUBDIRS = m4 intl $(DOC_SUBDIR) contrib $(IMAP_SUBDIR)
+ bin_SCRIPTS = muttbug flea $(SMIMEAUX_TARGET)
+-- 
+2.11.0
+
diff --git a/mail/mutt/patches/100-CVE-2014-9116.patch b/mail/mutt/patches/100-CVE-2014-9116.patch
deleted file mode 100644 (file)
index b1cf0f9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-From: Antonio Radici <antonio@debian.org>
-Date: Fri, 18 Sep 2015 11:48:47 +0200
-Subject: 771125-CVE-2014-9116-jessie
-
-This patch solves the issue raised by CVE-2014-9116 in bug 771125.
-
-We correctly redefine what are the whitespace characters as per RFC5322; by
-doing so we prevent mutt_substrdup from being used in a way that could lead to
-a segfault.
-
-The lib.c part was written by Antonio Radici <antonio@debian.org> to prevent
-crashes due to this kind of bugs from happening again.
-
-Signed-off-by: Matteo F. Vescovi <mfv@debian.org>
----
- lib.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff -rupN a/lib.c b/lib.c
---- a/lib.c
-+++ b/lib.c
-@@ -815,6 +815,9 @@ char *mutt_substrdup (const char *begin,
-   size_t len;
-   char *p;
-+  if (end != NULL && end < begin)
-+    return NULL;
-+
-   if (end)
-     len = end - begin;
-   else
index caf89cfebf2aaedbfc2e245da479ec3e1584b073..fd63354a068a3f7d7aed0aca17797778a1f8841a 100644 (file)
@@ -9,14 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gphoto2
-PKG_VERSION:=2.5.14
+PKG_VERSION:=2.5.15
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
 
-
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/gphoto
-PKG_HASH:=9302d02fb472d4936988382b7277ccdc4edaf7ede56c490278912ffd0627699c
+PKG_HASH:=ae571a227983dc9997876702a73af5431d41f287ea0f483cda897c57a6084a77
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
 
index 8b3bc01eb1496616f67cdaff8b2f77f8131c2dd5..47c21f55be75ca04dae4dba26bf653e28cc048ed 100644 (file)
@@ -1,18 +1,18 @@
-Index: gphoto2-2.5.14/Makefile.am
+Index: gphoto2-2.5.15/Makefile.am
 ===================================================================
---- gphoto2-2.5.14.orig/Makefile.am
-+++ gphoto2-2.5.14/Makefile.am
+--- gphoto2-2.5.15.orig/Makefile.am
++++ gphoto2-2.5.15/Makefile.am
 @@ -1,4 +1,4 @@
 -SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging po tests
 +SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging tests
  
  ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
  EXTRA_DIST = README.md
-Index: gphoto2-2.5.14/Makefile.in
+Index: gphoto2-2.5.15/Makefile.in
 ===================================================================
---- gphoto2-2.5.14.orig/Makefile.in
-+++ gphoto2-2.5.14/Makefile.in
-@@ -390,7 +390,7 @@ target_alias = @target_alias@
+--- gphoto2-2.5.15.orig/Makefile.in
++++ gphoto2-2.5.15/Makefile.in
+@@ -389,7 +389,7 @@ target_alias = @target_alias@
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
@@ -21,11 +21,11 @@ Index: gphoto2-2.5.14/Makefile.in
  ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
  EXTRA_DIST = README.md
  all: config.h
-Index: gphoto2-2.5.14/configure.ac
+Index: gphoto2-2.5.15/configure.ac
 ===================================================================
---- gphoto2-2.5.14.orig/configure.ac
-+++ gphoto2-2.5.14/configure.ac
-@@ -59,10 +59,7 @@ dnl ------------------------------------
+--- gphoto2-2.5.15.orig/configure.ac
++++ gphoto2-2.5.15/configure.ac
+@@ -58,10 +58,7 @@ dnl ------------------------------------
  GP_GETTEXT_HACK([],[Lutz Müller and others],[${MAIL_GPHOTO_TRANSLATION}])
  ALL_LINGUAS="az cs da de en_GB es eu fi fr hu id is it ja nl pa pl pt_BR ro ru rw sk sr sv uk vi zh_CN zh_TW"
  AM_GNU_GETTEXT_VERSION([0.14.1])
@@ -36,7 +36,7 @@ Index: gphoto2-2.5.14/configure.ac
  
  dnl We cannot use AC_DEFINE_UNQUOTED() for these definitions, as
  dnl we require make to do insert the proper $(datadir) value
-@@ -408,7 +405,6 @@ AC_SUBST([AM_LDFLAGS])
+@@ -407,7 +404,6 @@ AC_SUBST([AM_LDFLAGS])
  # Create output files
  # ---------------------------------------------------------------------------
  AC_CONFIG_FILES([
index 8275657ee877ce852573493661238c51d12f1b84..d64a3c6d05076f1f706513949643586028e4a335 100644 (file)
@@ -1,18 +1,18 @@
-Index: gphoto2-2.5.14/Makefile.am
+Index: gphoto2-2.5.15/Makefile.am
 ===================================================================
---- gphoto2-2.5.14.orig/Makefile.am
-+++ gphoto2-2.5.14/Makefile.am
+--- gphoto2-2.5.15.orig/Makefile.am
++++ gphoto2-2.5.15/Makefile.am
 @@ -1,4 +1,4 @@
 -SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging tests
 +SUBDIRS = gphoto-m4 contrib gphoto2 packaging
  
  ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
  EXTRA_DIST = README.md
-Index: gphoto2-2.5.14/Makefile.in
+Index: gphoto2-2.5.15/Makefile.in
 ===================================================================
---- gphoto2-2.5.14.orig/Makefile.in
-+++ gphoto2-2.5.14/Makefile.in
-@@ -390,7 +390,7 @@ target_alias = @target_alias@
+--- gphoto2-2.5.15.orig/Makefile.in
++++ gphoto2-2.5.15/Makefile.in
+@@ -389,7 +389,7 @@ target_alias = @target_alias@
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
@@ -21,11 +21,11 @@ Index: gphoto2-2.5.14/Makefile.in
  ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
  EXTRA_DIST = README.md
  all: config.h
-Index: gphoto2-2.5.14/configure.ac
+Index: gphoto2-2.5.15/configure.ac
 ===================================================================
---- gphoto2-2.5.14.orig/configure.ac
-+++ gphoto2-2.5.14/configure.ac
-@@ -408,16 +408,10 @@ AC_CONFIG_FILES([
+--- gphoto2-2.5.15.orig/configure.ac
++++ gphoto2-2.5.15/configure.ac
+@@ -407,16 +407,10 @@ AC_CONFIG_FILES([
  Makefile
  gphoto2/Makefile
  gphoto-m4/Makefile
index 2efc54af88a874b9851b12a2336c78ab7c032e6b..748401b165dbd165f0c828b76019c597eeaf4862 100644 (file)
@@ -6,7 +6,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=adblock
-PKG_VERSION:=3.0.2
+PKG_VERSION:=3.0.3
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
index 610bad77389399630da850ca02dba12bae88d5e4..83578135151c7d86b20c916eb4298f6fd7f050fa 100644 (file)
@@ -9,6 +9,8 @@ A lot of people already use adblocker plugins within their desktop browsers, but
     * => infrequent updates, approx. 400 entries (enabled by default)
     * [adguard](https://adguard.com)
     * => numerous updates on the same day, approx. 12.000 entries
+    * [bitcoin](https://github.com/hoshsadiq/adblock-nocoin-list)
+    * => infrequent updates, approx. 15 entries
     * [blacklist]()
     * => static local blacklist, located by default in '/etc/adblock/adblock.blacklist'
     * [disconnect](https://disconnect.me)
index f6ea48b6559c536fcc7c8ef0f34ef837d9d4c8df..eb9c6bd083b8174c0e76c53f2ed2de57eb708acd 100644 (file)
@@ -26,6 +26,12 @@ config source 'adguard'
        option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
        option adb_src_desc 'combined adguard dns filter list, approx. 12.000 entries'
 
+config source 'bitcoin'
+       option enabled '0'
+       option adb_src 'https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/hosts.txt'
+       option adb_src_rset '\$0 ~/^0\.0\.0\.0[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
+       option adb_src_desc 'focus on malicious bitcoin mining sites, infrequent updates, approx. 15 entries'
+
 config source 'blacklist'
        option enabled '0'
        option adb_src '/etc/adblock/adblock.blacklist'
index 6eb36fa58cec7a59a505e7304e5341148a0f097d..cd0357617898520076c30f664ec669bae1a2bd80 100755 (executable)
@@ -10,7 +10,7 @@
 #
 LC_ALL=C
 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-adb_ver="3.0.2"
+adb_ver="3.0.3"
 adb_sysver="unknown"
 adb_enabled=0
 adb_debug=0
diff --git a/net/apache/Config.in b/net/apache/Config.in
new file mode 100644 (file)
index 0000000..5eb42b3
--- /dev/null
@@ -0,0 +1,11 @@
+menu "Configuration"
+        depends on PACKAGE_apache
+
+config APACHE_HTTP2
+        bool
+        prompt "Enable HTTP2"
+        help
+                Enable HTTPS2 support.
+        default n
+
+endmenu
index 098e2befbf6eba6eeac89ae1bf1b4b1a6c496f89..6763c4a0e9b0348dfe4ad2fe3a0b0457273357e9 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=apache
-PKG_VERSION:=2.4.27
+PKG_VERSION:=2.4.28
 PKG_RELEASE:=1
 PKG_SOURCE_NAME:=httpd
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
@@ -16,12 +16,23 @@ PKG_LICENSE:=Apache License
 
 PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@APACHE/httpd/
-PKG_HASH:=71fcc128238a690515bd8174d5330a5309161ef314a326ae45c7c15ed139c13a
+PKG_HASH:=c1197a3a62a4ab5c584ab89b249af38cf28b4adee9c0106b62999fd29f920666
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_NAME)-$(PKG_VERSION)
 
 PKG_INSTALL:=1
 
+PKG_CONFIG_DEPENDS := \
+       CONFIG_APACHE_HTTP2
+
+ADDITIONAL_MODULES:=
+ifeq ($(CONFIG_APACHE_HTTP2),y)
+  ADDITIONAL_MODULES += --enable-http2
+endif
+ifneq ($(CONFIG_APACHE_HTTP2),y)
+  ADDITIONAL_MODULES += --enable-http2=no
+endif
+
 include $(INCLUDE_DIR)/package.mk
 
 define Package/apache/Default
@@ -38,9 +49,13 @@ define Package/apache/Default/description
  Server, it has grown to be the most popular web server on the Internet.
 endef
 
+define Package/apache/config
+  source "$(SOURCE)/Config.in"
+endef
+
 define Package/apache
 $(call Package/apache/Default)
-  DEPENDS:=+libapr +libaprutil +libpcre +libopenssl +unixodbc +zlib
+  DEPENDS:=+libapr +libaprutil +libpcre +libopenssl +unixodbc +zlib +APACHE_HTTP2:libnghttp2
 endef
 
 define Package/apache/description
@@ -90,13 +105,14 @@ endef
 
 TARGET_CFLAGS += $(FPIC)
 TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-TARGET_LDFLAGS += -lpthread 
+TARGET_LDFLAGS += -lpthread
 
 define Build/Configure
        $(call Build/Configure/Default, \
                --with-apr="$(STAGING_DIR)/usr/bin/apr-1-config" \
                --with-apr-util="$(STAGING_DIR)/usr/bin/apu-1-config" \
                --with-pcre="$(STAGING_DIR)/usr/bin/pcre-config" \
+               $(ADDITIONAL_MODULES) \
                --enable-http \
                --with-crypto \
                --with-sqlit3="$(STAGING_DIR)/usr" \
index 3cc1dfcf79d77928013feeb73900d038f5bc4a75..b4a9abc885baa1aefe59508e05500a47868440a7 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=clamav
 PKG_VERSION:=0.99.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr> \
@@ -72,6 +72,9 @@ define Build/Configure
                --with-group nogroup \
                --with-pcre="$(STAGING_DIR)/usr/" \
                --with-openssl="$(STAGING_DIR)/usr/" \
+               --with-zlib="$(STAGING_DIR)/usr/" \
+               --disable-zlib-vcheck \
+               --disable-clamdtop \
        )
 endef
 
index 07f67dbd0f01d4b3d8cb1838152b4a0052662cbb..65a1c941645adfe7438dca3c970153e3ace4e5e6 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fwknop
 PKG_VERSION:=2.6.9
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://www.cipherdyne.org/fwknop/download
index 0874ee4076979ade13a20d684adb8c471c3e687e..8a2b7599edca9faa2d7cf7dffe95a0712dde7e09 100644 (file)
@@ -1,6 +1,9 @@
 config global
 #      option uci_enabled '1'
 
+config network
+#      option network 'wan'    # takes precedence over config.PCAP_INTF
+
 config access
        option SOURCE 'ANY'
        option HMAC_KEY 'CHANGEME'
index baf81b8da63935c60dfc6adaf4db35385d643bb1..f59691151623569c8d295eb002405969cc9b095e 100644 (file)
@@ -4,50 +4,59 @@
 # Copyright (C) 2009-2014 fwknop developers and contributors. For a full
 # list of contributors, see the file 'CREDITS'.
 #
-. /lib/functions.sh
+
+USE_PROCD=1
 START=95
 
 FWKNOPD_BIN=/usr/sbin/fwknopd
 
-start()
+start_service()
 {
-       gen_confs
-       if [ $UCI_ENABLED ]; then
-               $FWKNOPD_BIN -c /var/etc/fwknopd.conf -a /var/etc/access.conf 
-       else
-               $FWKNOPD_BIN 
+       generate_configuration
+
+       procd_open_instance
+       procd_set_param command "$FWKNOPD_BIN" --foreground --syslog-enable
+       procd_set_param respawn
+
+       if [ $UCI_ENABLED -eq 1 ]; then
+               procd_append_param command -c /var/etc/fwknopd.conf
+               procd_append_param command -a /var/etc/access.conf
        fi
 
-}
+       procd_append_param command -i "$DEPEND_IFNAME"
+       procd_set_param netdev "$DEPEND_IFNAME"
 
-stop()
-{
-        $FWKNOPD_BIN -K
+       procd_close_instance
 }
 
-restart()
+service_triggers()
 {
-    stop;
-    sleep 1;
-    start;
+       procd_add_reload_trigger "fwknopd"
 }
 
-reload()
+get_bool()
 {
-       gen_confs
-        $FWKNOPD_BIN -R
+       local _tmp="$1"
+       case "$_tmp" in
+               1|on|true|yes|enabled) _tmp=1;;
+               0|off|false|no|disabled) _tmp=0;;
+               *) _tmp="$2";;
+       esac
+       echo -n "$_tmp"
 }
 
-gen_confs()
+generate_configuration()
 {
        [ -f /tmp/access.conf.tmp ] && rm /tmp/access.conf.tmp
-       if [ -z "$( uci get fwknopd.@config[0].PCAP_INTF )" ]
-       then
-               . /lib/functions/network.sh
-               network_get_physdev device wan
-               uci set fwknopd.@config[0].PCAP_INTF="$device"
-               uci commit
-       fi
+
+       UCI_ENABLED=0
+       DEPEND_IFNAME=
+       local NETWORK=
+       local PCAP_INTF=
+       local USER_CONFIG_PATH=/etc/fwknop/fwknopd.conf
+       local DEFAULT_UCI_NETWORK=wan
+       local DEFAULT_FWKNOPD_IFNAME=eth0
+
        config_cb() {
                local type="$1"
                local name="$2"
@@ -55,7 +64,7 @@ gen_confs()
                        option_cb() {
                                local option="$1"
                                local value="$2"
-                               if [ "$option" = "uci_enabled" ] && [ "$value" -eq 1 ] ; then
+                               if [ "$option" = "uci_enabled" ] && [ "$(get_bool "$value" 0)" -eq 1 ] ; then
                                        > /var/etc/fwknopd.conf
                                        > /var/etc/access.conf
                                         chmod 600 /var/etc/fwknopd.conf
@@ -63,11 +72,22 @@ gen_confs()
                                        UCI_ENABLED=1
                                fi
                        }
+               elif [ "$type" = "network" ]; then
+                       option_cb() {
+                               local option="$1"
+                               local value="$2"
+                               if [ $UCI_ENABLED -eq 1 ] && [ $option = "network" ]; then
+                                       NETWORK="$value"
+                               fi
+                       }
                elif [ "$type" = "config" ]; then
                        option_cb() {
                                local option="$1"
                                local value="$2"
-                               if [ $UCI_ENABLED ]; then
+                               if [ $UCI_ENABLED -eq 1 ] && [ $option = "PCAP_INTF" ]; then
+                                       PCAP_INTF="$value"
+                                       echo "$option $value" >> /var/etc/fwknopd.conf  #writing each option to fwknopd.conf
+                               elif [ $UCI_ENABLED -eq 1 ]; then
                                        echo "$option $value" >> /var/etc/fwknopd.conf  #writing each option to fwknopd.conf
                                fi
                        }
@@ -80,22 +100,64 @@ gen_confs()
                        option_cb() {
                                local option="$1"
                                local value="$2"
-                               if [ $UCI_ENABLED ] && [ $option = "SOURCE" ]; then
+                               if [ $UCI_ENABLED -eq 1 ] && [ $option = "SOURCE" ]; then
                                        echo "$option $value" >> /var/etc/access.conf  #writing each option to access.conf
                                fi
-                               if [ $UCI_ENABLED ] && [ $option != "SOURCE" ]; then
+                               if [ $UCI_ENABLED -eq 1 ] && [ $option != "SOURCE" ]; then
                                        echo "$option $value" >> /tmp/access.conf.tmp  #writing each option to access.conf
                                fi
                        }
+               else
+                       option_cb() { return; }
+                       if [ -z "$type" ]; then
+                               # Finalize reading
+                               if [ -f /tmp/access.conf.tmp ] ; then
+                                       cat /tmp/access.conf.tmp >> /var/etc/access.conf
+                                       rm /tmp/access.conf.tmp
+                               fi
+                       fi
                fi
        }
 
        if [ -f /etc/config/fwknopd ]; then
                config_load fwknopd
-               if [ -f /tmp/access.conf.tmp ] ; then
-                       cat /tmp/access.conf.tmp >> /var/etc/access.conf
-                       rm /tmp/access.conf.tmp
-               fi
        fi
 
+       if [ $UCI_ENABLED -eq 0 ]; then
+               if [ -f $USER_CONFIG_PATH ] ; then
+                       # Scan user configuration for PCAP_INTF settings
+                       DEPEND_IFNAME="$( sed -ne '/^\s*PCAP_INTF\s\+/ { s/^\s*PCAP_INTF\s\+//; s/\s\+$//; p; q; }' /etc/fwknop/fwknopd.conf )"
+                       if [ -n "$DEPEND_IFNAME" ]; then
+                               logger -p daemon.debug -t "fwknopd[----]" "Found fwknopd.conf configuration, using PCAP_INTF interface $DEPEND_IFNAME"
+                       else
+                               logger -p daemon.info -t "fwknopd[----]" "No PCAP_INTF interface specified in fwknopd.conf, fwknopd's default $DEFAULT_FWKNOPD_IFNAME will be used"
+                               DEPEND_IFNAME="$DEFAULT_FWKNOPD_IFNAME"
+                       fi
+               else
+                       logger -p daemon.error -t "fwknopd[----]" "No $USER_CONFIG_PATH found, not starting"
+                       exit 1
+               fi
+       elif [ $UCI_ENABLED -eq 1 ]; then
+               if [ -n "$NETWORK" ] && [ -n "$PCAP_INTF" ]; then
+                       logger -p daemon.warn -t "fwknopd[----]" "Specified both network and PCAP_INTF. Ignoring PCAP_INTF"
+               elif [ -z "$NETWORK" ] && [ -z "$PCAP_INTF" ]; then
+                       # Fallback - compatibility with old script, which used wan interface by default
+                       logger -p daemon.info -t "fwknopd[----]" "Neither network, nor PCAP_INTF interface specified, trying network $DEFAULT_UCI_NETWORK"
+                       NETWORK="$DEFAULT_UCI_NETWORK"
+               fi
+
+               if [ -n "$NETWORK" ]; then
+                       . /lib/functions/network.sh
+                       network_get_physdev DEPEND_IFNAME "$NETWORK"
+                       if [ -n "$DEPEND_IFNAME" ]; then
+                               logger -p daemon.debug -t "fwknopd[----]" "Resolved network $NETWORK as interface $DEPEND_IFNAME"
+                       else
+                               logger -p daemon.warn -t "fwknopd[----]" "Cannot find interface for network $NETWORK, fwknopd's default $DEFAULT_FWKNOPD_IFNAME will be used"
+                               DEPEND_IFNAME="$DEFAULT_FWKNOPD_IFNAME"
+                       fi
+               elif [ -n "$PCAP_INTF" ]; then
+                       DEPEND_IFNAME="$PCAP_INTF"
+                       logger -p daemon.debug -t "fwknopd[----]" "Using configured PCAP_INTF interface $DEPEND_IFNAME"
+               fi
+       fi
 }
index 74334cc5da877d67b02fd94baf12f5b722a7f684..9618fdc3ce2f9e69b79251ddfd4dc910bd9aa18a 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=haproxy
-PKG_VERSION:=1.7.8
-PKG_RELEASE:=18
+PKG_VERSION:=1.7.9
+PKG_RELEASE:=02
 
 PKG_SOURCE:=haproxy-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.haproxy.org/download/1.7/src/
-PKG_HASH:=ec90153ccedd20ad4015d3eaf76b502ff1f61b431d54c22b8457b5784a9ae142
+PKG_HASH:=1072337e54fa188dc6e0cfe3ba4c2200b07082e321cbfe5a0882d85d54db068e
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_LICENSE:=GPL-2.0
@@ -30,16 +30,18 @@ define Package/haproxy/Default
   URL:=http://haproxy.1wt.eu/
 endef
 
-define Download/lua533
-       FILE:=lua-5.3.3.tar.gz
+define Download/lua534
+       FILE:=lua-5.3.4.tar.gz
        URL:=http://www.lua.org/ftp/
-       HASH:=5113c06884f7de453ce57702abaac1d618307f33f6789fa870e87a59d772aca2
+       HASH:=f681aa518233bc407e23acf0f5887c884f17436f000d453b2491a9f11a52400c
 endef
 
 define Build/Prepare
        $(call Build/Prepare/Default)
-       tar -zxvf $(DL_DIR)/lua-5.3.3.tar.gz -C $(PKG_BUILD_DIR)
-       ln -s $(PKG_BUILD_DIR)/lua-5.3.3 $(PKG_BUILD_DIR)/lua
+ifeq ($(ENABLE_LUA),y)
+       tar -zxvf $(DL_DIR)/lua-5.3.4.tar.gz -C $(PKG_BUILD_DIR)
+       ln -s $(PKG_BUILD_DIR)/lua-5.3.4 $(PKG_BUILD_DIR)/lua
+endif
 endef
 
 define Package/haproxy/Default/conffiles
@@ -89,6 +91,11 @@ $(call Package/haproxy/Default/description)
  This package is built without SSL support.
 endef
 
+ENABLE_LUA:=y
+ifeq ($(CONFIG_mips),y)
+  ENABLE_LUA:=n
+endif
+
 ifeq ($(CONFIG_avr32),y)
   LINUX_TARGET:=linux26
 else
@@ -97,27 +104,32 @@ endif
 
 ifeq ($(BUILD_VARIANT),ssl)
        ADDON+=USE_OPENSSL=1
+       ADDON+=ADDLIB="-lcrypto -lm "
+else ifeq ($(CONFIG_mips),n)
        ADDON+=USE_LUA=1
-       ADDON+=LUA_LIB_NAME="lua533"
-       ADDON+=LUA_INC="$(STAGING_DIR)/lua-5.3.3/include"
-       ADDON+=LUA_LIB="$(STAGING_DIR)/lua-5.3.3/lib"
-       ADDON+=ADDLIB="-lcrypto -lm "   
+       ADDON+=LUA_LIB_NAME="lua534"
+       ADDON+=LUA_INC="$(STAGING_DIR)/lua-5.3.4/include"
+       ADDON+=LUA_LIB="$(STAGING_DIR)/lua-5.3.4/lib"
 else
        ADDON+=ADDLIB="-lm"
 endif
 
-
-define Build/Compile
+ifeq ($(ENABLE_LUA),y)
+define Build/Compile/lua
        $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR)/lua \
-               INSTALL_TOP="$(STAGING_DIR)/lua-5.3.3/" \
+               INSTALL_TOP="$(STAGING_DIR)/lua-5.3.4/" \
                CC="$(TARGET_CC)" \
                CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
                LDFLAGS="$(TARGET_LDFLAGS) -lncurses -lreadline" \
                LD="$(TARGET_LD)" \
                linux install
 
-       mv $(STAGING_DIR)/lua-5.3.3/lib/liblua.a $(STAGING_DIR)/lua-5.3.3/lib/liblua533.a
+       mv $(STAGING_DIR)/lua-5.3.4/lib/liblua.a $(STAGING_DIR)/lua-5.3.4/lib/liblua534.a
+endef
+endif
 
+define Build/Compile
+       $(call Build/Compile/lua)
        $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR) \
                DESTDIR="$(PKG_INSTALL_DIR)" \
                CC="$(TARGET_CC)" \
@@ -160,7 +172,6 @@ endef
 
 Package/haproxy-nossl/install = $(Package/haproxy/install)
 
-
 define Package/halog
        MENU:=1
        $(call Package/haproxy)
@@ -177,8 +188,7 @@ define Package/halog/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/halog/halog $(1)/usr/bin/
 endef
 
-$(eval $(call Download,lua533))
+$(eval $(call Download,lua534))
 $(eval $(call BuildPackage,haproxy))
 $(eval $(call BuildPackage,halog))
 $(eval $(call BuildPackage,haproxy-nossl))
-
diff --git a/net/haproxy/patches/0001-BUG-MEDIUM-connection-remove-useless-flag-CO_FL_DATA.patch b/net/haproxy/patches/0001-BUG-MEDIUM-connection-remove-useless-flag-CO_FL_DATA.patch
new file mode 100644 (file)
index 0000000..dcbef61
--- /dev/null
@@ -0,0 +1,158 @@
+From 912e8f18ef274fdda0a522b2aa8255bddd00fb7b Mon Sep 17 00:00:00 2001
+From: Willy Tarreau <w@1wt.eu>
+Date: Wed, 30 Aug 2017 07:35:35 +0200
+Subject: [PATCH] BUG/MEDIUM: connection: remove useless flag CO_FL_DATA_RD_SH
+
+This flag is both confusing and wrong. It is supposed to report the
+fact that the data layer has received a shutdown, but in fact this is
+reported by CO_FL_SOCK_RD_SH which is set by the transport layer after
+this condition is detected. The only case where the flag above is set
+is in the stream interface where CF_SHUTR is also set on the receiving
+channel.
+
+In addition, it was checked in the health checks code (while never set)
+and was always test jointly with CO_FL_SOCK_RD_SH everywhere, except in
+conn_data_read0_pending() which incorrectly doesn't match the second
+time it's called and is fortunately protected by an extra check on
+(ic->flags & CF_SHUTR).
+
+This patch gets rid of the flag completely. Now conn_data_read0_pending()
+accurately reports the fact that the transport layer has detected the end
+of the stream, regardless of the fact that this state was already consumed,
+and the stream interface watches ic->flags&CF_SHUTR to know if the channel
+was already closed by the upper layer (which it already used to do).
+
+The now unused conn_data_read0() function was removed.
+(cherry picked from commit 54e917cfa1e7b0539550ae32c48c76da2f169041)
+
+[wt: this happens to fix a real bug which occasionally strikes when
+     using http-reuse in the rare case where a server shuts down after
+     providing its response but before the connection is put back into
+     the idle pool, and it gets immediately recycled for another request,
+     without first passing through the idle handler, and the already
+     reported shutdown is never reported to the second transaction,
+     causing a loop to last for as long as the server timeout]
+---
+ contrib/debug/flags.c      |  1 -
+ include/proto/connection.h |  8 +-------
+ include/types/connection.h |  2 +-
+ src/checks.c               |  4 ++--
+ src/stream_interface.c     | 11 +++++------
+ 5 files changed, 9 insertions(+), 17 deletions(-)
+
+diff --git a/contrib/debug/flags.c b/contrib/debug/flags.c
+index bc71bde9..19327f34 100644
+--- a/contrib/debug/flags.c
++++ b/contrib/debug/flags.c
+@@ -117,7 +117,6 @@ void show_conn_flags(unsigned int f)
+       SHOW_FLAG(f, CO_FL_SOCK_WR_SH);
+       SHOW_FLAG(f, CO_FL_SOCK_RD_SH);
+       SHOW_FLAG(f, CO_FL_DATA_WR_SH);
+-      SHOW_FLAG(f, CO_FL_DATA_RD_SH);
+       SHOW_FLAG(f, CO_FL_WAKE_DATA);
+       SHOW_FLAG(f, CO_FL_INIT_DATA);
+       SHOW_FLAG(f, CO_FL_ADDR_TO_SET);
+diff --git a/include/proto/connection.h b/include/proto/connection.h
+index fce60259..eb68322a 100644
+--- a/include/proto/connection.h
++++ b/include/proto/connection.h
+@@ -413,12 +413,6 @@ static inline void conn_sock_read0(struct connection *c)
+               fdtab[c->t.sock.fd].linger_risk = 0;
+ }
+-static inline void conn_data_read0(struct connection *c)
+-{
+-      c->flags |= CO_FL_DATA_RD_SH;
+-      __conn_data_stop_recv(c);
+-}
+-
+ static inline void conn_sock_shutw(struct connection *c)
+ {
+       c->flags |= CO_FL_SOCK_WR_SH;
+@@ -450,7 +444,7 @@ static inline void conn_data_shutw_hard(struct connection *c)
+ /* detect sock->data read0 transition */
+ static inline int conn_data_read0_pending(struct connection *c)
+ {
+-      return (c->flags & (CO_FL_DATA_RD_SH | CO_FL_SOCK_RD_SH)) == CO_FL_SOCK_RD_SH;
++      return (c->flags & CO_FL_SOCK_RD_SH) != 0;
+ }
+ /* detect data->sock shutw transition */
+diff --git a/include/types/connection.h b/include/types/connection.h
+index 02eac932..90e8e073 100644
+--- a/include/types/connection.h
++++ b/include/types/connection.h
+@@ -90,7 +90,7 @@ enum {
+       CO_FL_WAKE_DATA     = 0x00008000,  /* wake-up data layer upon activity at the transport layer */
+       /* flags used to remember what shutdown have been performed/reported */
+-      CO_FL_DATA_RD_SH    = 0x00010000,  /* DATA layer was notified about shutr/read0 */
++      /* unused : 0x00010000 */
+       CO_FL_DATA_WR_SH    = 0x00020000,  /* DATA layer asked for shutw */
+       CO_FL_SOCK_RD_SH    = 0x00040000,  /* SOCK layer was notified about shutr/read0 */
+       CO_FL_SOCK_WR_SH    = 0x00080000,  /* SOCK layer asked for shutw */
+diff --git a/src/checks.c b/src/checks.c
+index ca3881a5..6c5e3cbc 100644
+--- a/src/checks.c
++++ b/src/checks.c
+@@ -839,7 +839,7 @@ static void event_srv_chk_r(struct connection *conn)
+       done = 0;
+       conn->xprt->rcv_buf(conn, check->bi, check->bi->size);
+-      if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_DATA_RD_SH)) {
++      if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH)) {
+               done = 1;
+               if ((conn->flags & CO_FL_ERROR) && !check->bi->i) {
+                       /* Report network errors only if we got no other data. Otherwise
+@@ -2892,7 +2892,7 @@ static void tcpcheck_main(struct connection *conn)
+                               goto out_end_tcpcheck;
+                       if (conn->xprt->rcv_buf(conn, check->bi, check->bi->size) <= 0) {
+-                              if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_DATA_RD_SH)) {
++                              if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH)) {
+                                       done = 1;
+                                       if ((conn->flags & CO_FL_ERROR) && !check->bi->i) {
+                                               /* Report network errors only if we got no other data. Otherwise
+diff --git a/src/stream_interface.c b/src/stream_interface.c
+index 836487bd..aba49c94 100644
+--- a/src/stream_interface.c
++++ b/src/stream_interface.c
+@@ -1060,14 +1060,14 @@ static void si_conn_recv_cb(struct connection *conn)
+       if (conn->flags & CO_FL_ERROR)
+               return;
+-      /* stop here if we reached the end of data */
+-      if (conn_data_read0_pending(conn))
+-              goto out_shutdown_r;
+-
+       /* maybe we were called immediately after an asynchronous shutr */
+       if (ic->flags & CF_SHUTR)
+               return;
++      /* stop here if we reached the end of data */
++      if (conn_data_read0_pending(conn))
++              goto out_shutdown_r;
++
+       cur_read = 0;
+       if ((ic->flags & (CF_STREAMER | CF_STREAMER_FAST)) && !ic->buf->o &&
+@@ -1153,7 +1153,7 @@ static void si_conn_recv_cb(struct connection *conn)
+        * that if such an event is not handled above in splice, it will be handled here by
+        * recv().
+        */
+-      while (!(conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_DATA_RD_SH | CO_FL_WAIT_ROOM | CO_FL_HANDSHAKE))) {
++      while (!(conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_WAIT_ROOM | CO_FL_HANDSHAKE)) && !(ic->flags & CF_SHUTR)) {
+               max = channel_recv_max(ic);
+               if (!max) {
+@@ -1267,7 +1267,6 @@ static void si_conn_recv_cb(struct connection *conn)
+       if (ic->flags & CF_AUTO_CLOSE)
+               channel_shutw_now(ic);
+       stream_sock_read0(si);
+-      conn_data_read0(conn);
+       return;
+ }
+-- 
+2.13.5
+
diff --git a/net/haproxy/patches/0001-BUG-MINOR-peers-peer-synchronization-issue-with-seve.patch b/net/haproxy/patches/0001-BUG-MINOR-peers-peer-synchronization-issue-with-seve.patch
deleted file mode 100644 (file)
index a24c967..0000000
+++ /dev/null
@@ -1,299 +0,0 @@
-From fa73e6b0d5f64eb8a6fd8a1706d7ec03293a943e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= <flecaille@haproxy.com>
-Date: Thu, 13 Jul 2017 09:07:09 +0200
-Subject: [PATCH 01/18] BUG/MINOR: peers: peer synchronization issue (with
- several peers sections).
-
-When several stick-tables were configured with several peers sections,
-only a part of them could be synchronized: the ones attached to the last
-parsed 'peers' section. This was due to the fact that, at least, the peer I/O handler
-refered to the wrong peer section list, in fact always the same: the last one parsed.
-
-The fact that the global peer section list was named "struct peers *peers"
-lead to this issue. This variable name is dangerous ;).
-
-So this patch renames global 'peers' variable to 'cfg_peers' to ensure that
-no such wrong references are still in use, then all the functions wich used
-old 'peers' variable have been modified to refer to the correct peer list.
-
-Must be backported to 1.6 and 1.7.
-(cherry picked from commit ed2b4a6b793d062000518e51ed71e014c649c313)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- include/types/peers.h |  2 +-
- src/cfgparse.c        | 18 +++++++++---------
- src/haproxy.c         | 10 +++++-----
- src/peers.c           | 40 ++++++++++++++++++++--------------------
- src/proxy.c           |  6 +++---
- 5 files changed, 38 insertions(+), 38 deletions(-)
-
-diff --git a/include/types/peers.h b/include/types/peers.h
-index 105dffb0..a77a0942 100644
---- a/include/types/peers.h
-+++ b/include/types/peers.h
-@@ -91,7 +91,7 @@ struct peers {
- };
--extern struct peers *peers;
-+extern struct peers *cfg_peers;
- #endif /* _TYPES_PEERS_H */
-diff --git a/src/cfgparse.c b/src/cfgparse.c
-index 8c0906bf..1b53006b 100644
---- a/src/cfgparse.c
-+++ b/src/cfgparse.c
-@@ -2124,7 +2124,7 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm)
-                       goto out;
-               }
--              for (curpeers = peers; curpeers != NULL; curpeers = curpeers->next) {
-+              for (curpeers = cfg_peers; curpeers != NULL; curpeers = curpeers->next) {
-                       /*
-                        * If there are two proxies with the same name only following
-                        * combinations are allowed:
-@@ -2142,8 +2142,8 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm)
-                       goto out;
-               }
--              curpeers->next = peers;
--              peers = curpeers;
-+              curpeers->next = cfg_peers;
-+              cfg_peers = curpeers;
-               curpeers->conf.file = strdup(file);
-               curpeers->conf.line = linenum;
-               curpeers->last_change = now.tv_sec;
-@@ -2223,7 +2223,7 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm)
-               if (strcmp(newpeer->id, localpeer) == 0) {
-                       /* Current is local peer, it define a frontend */
-                       newpeer->local = 1;
--                      peers->local = newpeer;
-+                      cfg_peers->local = newpeer;
-                       if (!curpeers->peers_fe) {
-                               if ((curpeers->peers_fe  = calloc(1, sizeof(struct proxy))) == NULL) {
-@@ -8189,9 +8189,9 @@ int check_config_validity()
-               }
-               if (curproxy->table.peers.name) {
--                      struct peers *curpeers = peers;
-+                      struct peers *curpeers;
--                      for (curpeers = peers; curpeers; curpeers = curpeers->next) {
-+                      for (curpeers = cfg_peers; curpeers; curpeers = curpeers->next) {
-                               if (strcmp(curpeers->id, curproxy->table.peers.name) == 0) {
-                                       free((void *)curproxy->table.peers.name);
-                                       curproxy->table.peers.p = curpeers;
-@@ -9279,15 +9279,15 @@ out_uri_auth_compat:
-               if (curproxy->table.peers.p)
-                       curproxy->table.peers.p->peers_fe->bind_proc |= curproxy->bind_proc;
--      if (peers) {
--              struct peers *curpeers = peers, **last;
-+      if (cfg_peers) {
-+              struct peers *curpeers = cfg_peers, **last;
-               struct peer *p, *pb;
-               /* Remove all peers sections which don't have a valid listener,
-                * which are not used by any table, or which are bound to more
-                * than one process.
-                */
--              last = &peers;
-+              last = &cfg_peers;
-               while (*last) {
-                       curpeers = *last;
-diff --git a/src/haproxy.c b/src/haproxy.c
-index 6d09aed4..25cea0cd 100644
---- a/src/haproxy.c
-+++ b/src/haproxy.c
-@@ -988,7 +988,7 @@ void init(int argc, char **argv)
-               struct peers *pr;
-               struct proxy *px;
--              for (pr = peers; pr; pr = pr->next)
-+              for (pr = cfg_peers; pr; pr = pr->next)
-                       if (pr->peers_fe)
-                               break;
-@@ -1217,11 +1217,11 @@ void init(int argc, char **argv)
-       if (global.stats_fe)
-               global.maxsock += global.stats_fe->maxconn;
--      if (peers) {
-+      if (cfg_peers) {
-               /* peers also need to bypass global maxconn */
--              struct peers *p = peers;
-+              struct peers *p = cfg_peers;
--              for (p = peers; p; p = p->next)
-+              for (p = cfg_peers; p; p = p->next)
-                       if (p->peers_fe)
-                               global.maxsock += p->peers_fe->maxconn;
-       }
-@@ -2067,7 +2067,7 @@ int main(int argc, char **argv)
-               }
-               /* we might have to unbind some peers sections from some processes */
--              for (curpeers = peers; curpeers; curpeers = curpeers->next) {
-+              for (curpeers = cfg_peers; curpeers; curpeers = curpeers->next) {
-                       if (!curpeers->peers_fe)
-                               continue;
-diff --git a/src/peers.c b/src/peers.c
-index 543c84c1..5b8a287a 100644
---- a/src/peers.c
-+++ b/src/peers.c
-@@ -171,7 +171,7 @@ enum {
- #define PEER_MINOR_VER        1
- #define PEER_DWNGRD_MINOR_VER 0
--struct peers *peers = NULL;
-+struct peers *cfg_peers = NULL;
- static void peer_session_forceshutdown(struct appctx *appctx);
- /* This function encode an uint64 to 'dynamic' length format.
-@@ -727,19 +727,19 @@ switchstate:
-                               /* if current peer is local */
-                                 if (curpeer->local) {
-                                         /* if current host need resyncfrom local and no process assined  */
--                                        if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMLOCAL &&
--                                            !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
-+                                        if ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMLOCAL &&
-+                                            !(curpeers->flags & PEERS_F_RESYNC_ASSIGN)) {
-                                                 /* assign local peer for a lesson, consider lesson already requested */
-                                                 curpeer->flags |= PEER_F_LEARN_ASSIGN;
--                                                peers->flags |= (PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-+                                                curpeers->flags |= (PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-                                         }
-                                 }
--                                else if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
--                                         !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
-+                                else if ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
-+                                         !(curpeers->flags & PEERS_F_RESYNC_ASSIGN)) {
-                                         /* assign peer for a lesson  */
-                                         curpeer->flags |= PEER_F_LEARN_ASSIGN;
--                                        peers->flags |= PEERS_F_RESYNC_ASSIGN;
-+                                        curpeers->flags |= PEERS_F_RESYNC_ASSIGN;
-                                 }
-@@ -807,7 +807,7 @@ switchstate:
-                               curpeer->statuscode = atoi(trash.str);
-                               /* Awake main task */
--                              task_wakeup(peers->sync_task, TASK_WOKEN_MSG);
-+                              task_wakeup(curpeers->sync_task, TASK_WOKEN_MSG);
-                               /* If status code is success */
-                               if (curpeer->statuscode == PEER_SESS_SC_SUCCESSCODE) {
-@@ -830,14 +830,14 @@ switchstate:
-                                                 curpeer->flags |= PEER_F_TEACH_PROCESS;
-                                         }
--                                        else if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
--                                                    !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
-+                                        else if ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
-+                                                    !(curpeers->flags & PEERS_F_RESYNC_ASSIGN)) {
-                                                 /* If peer is remote and resync from remote is needed,
-                                                    and no peer currently assigned */
-                                                 /* assign peer for a lesson */
-                                                 curpeer->flags |= PEER_F_LEARN_ASSIGN;
--                                              peers->flags |= PEERS_F_RESYNC_ASSIGN;
-+                                              curpeers->flags |= PEERS_F_RESYNC_ASSIGN;
-                                       }
-                               }
-@@ -950,8 +950,8 @@ switchstate:
-                                               if (curpeer->flags & PEER_F_LEARN_ASSIGN) {
-                                                       curpeer->flags &= ~PEER_F_LEARN_ASSIGN;
--                                                      peers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
--                                                      peers->flags |= (PEERS_F_RESYNC_LOCAL|PEERS_F_RESYNC_REMOTE);
-+                                                      curpeers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-+                                                      curpeers->flags |= (PEERS_F_RESYNC_LOCAL|PEERS_F_RESYNC_REMOTE);
-                                               }
-                                               curpeer->confirm++;
-                                       }
-@@ -959,11 +959,11 @@ switchstate:
-                                               if (curpeer->flags & PEER_F_LEARN_ASSIGN) {
-                                                       curpeer->flags &= ~PEER_F_LEARN_ASSIGN;
--                                                      peers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-+                                                      curpeers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-                                                       curpeer->flags |= PEER_F_LEARN_NOTUP2DATE;
--                                                      peers->resync_timeout = tick_add(now_ms, MS_TO_TICKS(5000));
--                                                      task_wakeup(peers->sync_task, TASK_WOKEN_MSG);
-+                                                      curpeers->resync_timeout = tick_add(now_ms, MS_TO_TICKS(5000));
-+                                                      task_wakeup(curpeers->sync_task, TASK_WOKEN_MSG);
-                                               }
-                                               curpeer->confirm++;
-                                       }
-@@ -1334,8 +1334,8 @@ incomplete:
-                               /* Need to request a resync */
-                                 if ((curpeer->flags & PEER_F_LEARN_ASSIGN) &&
--                                        (peers->flags & PEERS_F_RESYNC_ASSIGN) &&
--                                        !(peers->flags & PEERS_F_RESYNC_PROCESS)) {
-+                                        (curpeers->flags & PEERS_F_RESYNC_ASSIGN) &&
-+                                        !(curpeers->flags & PEERS_F_RESYNC_PROCESS)) {
-                                       unsigned char msg[2];
-                                         /* Current peer was elected to request a resync */
-@@ -1351,7 +1351,7 @@ incomplete:
-                                                 appctx->st0 = PEER_SESS_ST_END;
-                                                 goto switchstate;
-                                         }
--                                        peers->flags |= PEERS_F_RESYNC_PROCESS;
-+                                        curpeers->flags |= PEERS_F_RESYNC_PROCESS;
-                                 }
-                               /* Nothing to read, now we start to write */
-@@ -1624,7 +1624,7 @@ incomplete:
-                                         /* Current peer was elected to request a resync */
-                                       msg[0] = PEER_MSG_CLASS_CONTROL;
--                                      msg[1] = ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FINISHED) ? PEER_MSG_CTRL_RESYNCFINISHED : PEER_MSG_CTRL_RESYNCPARTIAL;
-+                                      msg[1] = ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FINISHED) ? PEER_MSG_CTRL_RESYNCFINISHED : PEER_MSG_CTRL_RESYNCPARTIAL;
-                                       /* process final lesson message */
-                                       repl = bi_putblk(si_ic(si), (char *)msg, sizeof(msg));
-                                       if (repl <= 0) {
-diff --git a/src/proxy.c b/src/proxy.c
-index 78120d9b..bedc7ae0 100644
---- a/src/proxy.c
-+++ b/src/proxy.c
-@@ -1007,7 +1007,7 @@ void soft_stop(void)
-               p = p->next;
-       }
--      prs = peers;
-+      prs = cfg_peers;
-       while (prs) {
-               if (prs->peers_fe)
-                       stop_proxy(prs->peers_fe);
-@@ -1142,7 +1142,7 @@ void pause_proxies(void)
-               p = p->next;
-       }
--      prs = peers;
-+      prs = cfg_peers;
-       while (prs) {
-               if (prs->peers_fe)
-                       err |= !pause_proxy(prs->peers_fe);
-@@ -1176,7 +1176,7 @@ void resume_proxies(void)
-               p = p->next;
-       }
--      prs = peers;
-+      prs = cfg_peers;
-       while (prs) {
-               if (prs->peers_fe)
-                       err |= !resume_proxy(prs->peers_fe);
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0002-BUG-MINOR-lua-In-error-case-the-safe-mode-is-not-rem.patch b/net/haproxy/patches/0002-BUG-MINOR-lua-In-error-case-the-safe-mode-is-not-rem.patch
deleted file mode 100644 (file)
index ea4651d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-From bcc483a9edfeb8ab69d1af83886d9e1323cffd06 Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <thierry.fournier@ozon.io>
-Date: Wed, 12 Jul 2017 11:18:00 +0200
-Subject: [PATCH 02/18] BUG/MINOR: lua: In error case, the safe mode is not
- removed
-
-Just forgot of reset the safe mode. This have not consequences
-the safe mode just set a pointer on fucntion which is called only
-and initialises a longjmp.
-
-Out of lua execution, this longjmp is never executed and the
-function is never called.
-
-This patch should be backported in 1.6 and 1.7
-(cherry picked from commit 0a97620c080232a21ad7fce2c859a2edc9d7147e)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- src/hlua.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/hlua.c b/src/hlua.c
-index c862102d..4c1c2d21 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -854,6 +854,7 @@ int hlua_ctx_init(struct hlua *lua, struct task *task)
-       lua->T = lua_newthread(gL.T);
-       if (!lua->T) {
-               lua->Tref = LUA_REFNIL;
-+              RESET_SAFE_LJMP(gL.T);
-               return 0;
-       }
-       hlua_sethlua(lua);
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0003-BUG-MINOR-lua-executes-the-function-destroying-the-L.patch b/net/haproxy/patches/0003-BUG-MINOR-lua-executes-the-function-destroying-the-L.patch
deleted file mode 100644 (file)
index 2b200ee..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-From 49d319a677432b69c6a69ef5331ae2ed592075c9 Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <thierry.fournier@ozon.io>
-Date: Wed, 12 Jul 2017 13:41:33 +0200
-Subject: [PATCH 03/18] BUG/MINOR: lua: executes the function destroying the
- Lua session in safe mode
-
-When we destroy the Lua session, we manipulates Lua stack,
-so errors can raises. It will be better to catch these errors.
-
-This patch should be backported in 1.6 and 1.7
-(cherry picked from commit 75d0208009c3189b5d10793e08f27dd62a76c3ae)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- src/hlua.c | 17 +++++++++++++++--
- 1 file changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/src/hlua.c b/src/hlua.c
-index 4c1c2d21..2d312804 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -876,9 +876,15 @@ void hlua_ctx_destroy(struct hlua *lua)
-       /* Purge all the pending signals. */
-       hlua_com_purge(lua);
-+      if (!SET_SAFE_LJMP(lua->T))
-+              return;
-       luaL_unref(lua->T, LUA_REGISTRYINDEX, lua->Mref);
--      luaL_unref(gL.T, LUA_REGISTRYINDEX, lua->Tref);
-+      RESET_SAFE_LJMP(lua->T);
-+      if (!SET_SAFE_LJMP(gL.T))
-+              return;
-+      luaL_unref(gL.T, LUA_REGISTRYINDEX, lua->Tref);
-+      RESET_SAFE_LJMP(gL.T);
-       /* Forces a garbage collecting process. If the Lua program is finished
-        * without error, we run the GC on the thread pointer. Its freed all
-        * the unused memory.
-@@ -889,9 +895,16 @@ void hlua_ctx_destroy(struct hlua *lua)
-        * the garbage collection.
-        */
-       if (lua->flags & HLUA_MUST_GC) {
-+              if (!SET_SAFE_LJMP(lua->T))
-+                      return;
-               lua_gc(lua->T, LUA_GCCOLLECT, 0);
--              if (lua_status(lua->T) != LUA_OK)
-+              RESET_SAFE_LJMP(lua->T);
-+              if (lua_status(lua->T) != LUA_OK) {
-+                      if (!SET_SAFE_LJMP(gL.T))
-+                              return;
-                       lua_gc(gL.T, LUA_GCCOLLECT, 0);
-+                      RESET_SAFE_LJMP(gL.T);
-+              }
-       }
-       lua->T = NULL;
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0004-BUG-MAJOR-lua-socket-resources-not-detroyed-when-the.patch b/net/haproxy/patches/0004-BUG-MAJOR-lua-socket-resources-not-detroyed-when-the.patch
deleted file mode 100644 (file)
index ced02f5..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-From 2823f54f706f56304970313cb14a98a4ce20d5ab Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <thierry.fournier@ozon.io>
-Date: Sun, 16 Jul 2017 20:48:54 +0200
-Subject: [PATCH 04/18] BUG/MAJOR: lua/socket: resources not detroyed when the
- socket is aborted
-
-In some cases, the socket is misused. The user can open socket and never
-close it, or open the socket and close it without sending data. This
-causes resources leak on all resources associated to the stream (buffer,
-spoe, ...)
-
-This is caused by the stream_shutdown function which is called outside
-of the stream execution process. Sometimes, the shtudown is required
-while the stream is not started, so the cleanup is ignored.
-
-This patch change the shutdown mode of the session. Now if the session is
-no longer used and the Lua want to destroy it, it just set a destroy flag
-and the session kill itself.
-
-This patch should be backported in 1.6 and 1.7
-
-(cherry picked from cmomit b13b20a19aacb039a33f886e38a181b00c9a6d41)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- include/types/applet.h |  1 +
- src/hlua.c             | 16 ++++++++++++++--
- 2 files changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/include/types/applet.h b/include/types/applet.h
-index 46b2bc10..aee9167e 100644
---- a/include/types/applet.h
-+++ b/include/types/applet.h
-@@ -122,6 +122,7 @@ struct appctx {
-                       struct hlua_socket *socket;
-                       struct list wake_on_read;
-                       struct list wake_on_write;
-+                      int die;
-               } hlua;
-               struct {
-                       struct hlua hlua;
-diff --git a/src/hlua.c b/src/hlua.c
-index 2d312804..eb003558 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -1544,6 +1544,15 @@ static void hlua_socket_handler(struct appctx *appctx)
-       struct stream_interface *si = appctx->owner;
-       struct connection *c = objt_conn(si_opposite(si)->end);
-+      if (appctx->ctx.hlua.die) {
-+              si_shutw(si);
-+              si_shutr(si);
-+              si_ic(si)->flags |= CF_READ_NULL;
-+              hlua_com_wake(&appctx->ctx.hlua.wake_on_read);
-+              hlua_com_wake(&appctx->ctx.hlua.wake_on_write);
-+              stream_shutdown(si_strm(si), SF_ERR_KILLED);
-+      }
-+
-       /* If the connection object is not avalaible, close all the
-        * streams and wakeup everithing waiting for.
-        */
-@@ -1619,9 +1628,10 @@ __LJMP static int hlua_socket_gc(lua_State *L)
-       /* Remove all reference between the Lua stack and the coroutine stream. */
-       appctx = objt_appctx(socket->s->si[0].end);
--      stream_shutdown(socket->s, SF_ERR_KILLED);
-       socket->s = NULL;
-       appctx->ctx.hlua.socket = NULL;
-+      appctx->ctx.hlua.die = 1;
-+      appctx_wakeup(appctx);
-       return 0;
- }
-@@ -1641,10 +1651,11 @@ __LJMP static int hlua_socket_close(lua_State *L)
-               return 0;
-       /* Close the stream and remove the associated stop task. */
--      stream_shutdown(socket->s, SF_ERR_KILLED);
-       appctx = objt_appctx(socket->s->si[0].end);
-       appctx->ctx.hlua.socket = NULL;
-       socket->s = NULL;
-+      appctx->ctx.hlua.die = 1;
-+      appctx_wakeup(appctx);
-       return 0;
- }
-@@ -2316,6 +2327,7 @@ __LJMP static int hlua_socket_new(lua_State *L)
-       appctx->ctx.hlua.socket = socket;
-       appctx->ctx.hlua.connected = 0;
-+      appctx->ctx.hlua.die = 0;
-       LIST_INIT(&appctx->ctx.hlua.wake_on_write);
-       LIST_INIT(&appctx->ctx.hlua.wake_on_read);
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0005-BUG-MEDIUM-lua-bad-memory-access.patch b/net/haproxy/patches/0005-BUG-MEDIUM-lua-bad-memory-access.patch
deleted file mode 100644 (file)
index 97e4d9e..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-From ea3b479be6cacb399a6541a00b1bdce17b0179d0 Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <thierry.fournier@ozon.io>
-Date: Mon, 17 Jul 2017 00:44:40 +0200
-Subject: [PATCH 05/18] BUG/MEDIUM: lua: bad memory access
-
-We cannot perform garbage collection on unreferenced thread.
-This memory is now free and another Lua process can use it for
-other things.
-
-HAProxy is monothread, so this bug doesn't cause crash.
-
-This patch must be backported in 1.6 and 1.7
-(cherry picked from commit 7bd10d58d3aecf7cf1e5ee7df01193e07128a52d)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- src/hlua.c | 12 +++---------
- 1 file changed, 3 insertions(+), 9 deletions(-)
-
-diff --git a/src/hlua.c b/src/hlua.c
-index eb003558..a998860e 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -895,16 +895,10 @@ void hlua_ctx_destroy(struct hlua *lua)
-        * the garbage collection.
-        */
-       if (lua->flags & HLUA_MUST_GC) {
--              if (!SET_SAFE_LJMP(lua->T))
-+              if (!SET_SAFE_LJMP(gL.T))
-                       return;
--              lua_gc(lua->T, LUA_GCCOLLECT, 0);
--              RESET_SAFE_LJMP(lua->T);
--              if (lua_status(lua->T) != LUA_OK) {
--                      if (!SET_SAFE_LJMP(gL.T))
--                              return;
--                      lua_gc(gL.T, LUA_GCCOLLECT, 0);
--                      RESET_SAFE_LJMP(gL.T);
--              }
-+              lua_gc(gL.T, LUA_GCCOLLECT, 0);
-+              RESET_SAFE_LJMP(gL.T);
-       }
-       lua->T = NULL;
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0006-DOC-update-CONTRIBUTING-regarding-optional-parts-and.patch b/net/haproxy/patches/0006-DOC-update-CONTRIBUTING-regarding-optional-parts-and.patch
deleted file mode 100644 (file)
index 7fb83b1..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-From 20850d19250eb530cab889bb9059a630b3f805a3 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Tue, 18 Jul 2017 06:56:40 +0200
-Subject: [PATCH 06/18] DOC: update CONTRIBUTING regarding optional parts and
- message format
-
-Make it clear that optional components must not break when disabled,
-that openssl is the only officially supported library and its support
-must not be broken, and that bug fixes must always be detailed.
-(cherry picked from commit 9d84cd602f4adb3954209eb14c94eea9254d1b5b)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- CONTRIBUTING | 21 ++++++++++++++++++++-
- 1 file changed, 20 insertions(+), 1 deletion(-)
-
-diff --git a/CONTRIBUTING b/CONTRIBUTING
-index 74a099bc..b2c2b493 100644
---- a/CONTRIBUTING
-+++ b/CONTRIBUTING
-@@ -69,6 +69,16 @@ code :
- Since most of these restrictions are just a matter of coding style, it is
- normally not a problem to comply.
-+When modifying some optional subsystem (SSL, Lua, compression, device detection
-+engines), please make sure the code continues to build (and to work) when these
-+features are disabled. Similarly, when modifying the SSL stack, please always
-+ensure that supported OpenSSL versions continue to build and to work, especially
-+if you modify support for alternate libraries. Clean support for the legacy
-+OpenSSL libraries is mandatory, support for its derivatives is a bonus and may
-+occasionally break eventhough a great care is taken. In other words, if you
-+provide a patch for OpenSSL you don't need to test its derivatives, but if you
-+provide a patch for a derivative you also need to test with OpenSSL.
-+
- If your work is very confidential and you can't publicly discuss it, you can
- also mail willy@haproxy.org directly about it, but your mail may be waiting
- several days in the queue before you get a response, if you get a response at
-@@ -441,13 +451,22 @@ do not think about them anymore after a few patches.
-    way the subject is built. Please see the section below for more information
-    regarding this formatting.
--   As a rule of thumb, your patch must never be made only of a subject line,
-+   As a rule of thumb, your patch MUST NEVER be made only of a subject line,
-    it *must* contain a description. Even one or two lines, or indicating
-    whether a backport is desired or not. It turns out that single-line commits
-    are so rare in the Git world that they require special manual (hence
-    painful) handling when they are backported, and at least for this reason
-    it's important to keep this in mind.
-+   Each patch fixing a bug MUST be tagged with "BUG", a severity level, an
-+   indication of the affected subsystem and a brief description of the nature
-+   of the issue in the subject line, and a detailed analysis in the message
-+   body. The explanation of the user-visible impact and the need for
-+   backporting to stable branches or not are MANDATORY. Bug fixes with no
-+   indication will simply be rejected as they are very likely to cause more
-+   harm when nobody is able to tell whether or not the patch needs to be
-+   backported or can be reverted in case of regression.
-+
- 12) Discuss on the mailing list
-    When submitting changes, please always CC the mailing list address so that
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0007-DOC-update-the-list-of-OpenSSL-versions-in-the-READM.patch b/net/haproxy/patches/0007-DOC-update-the-list-of-OpenSSL-versions-in-the-READM.patch
deleted file mode 100644 (file)
index 7be8bc0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-From 8d99949c4c51d95c14fb2b09d18e1cff058f0c17 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Tue, 18 Jul 2017 06:58:16 +0200
-Subject: [PATCH 07/18] DOC: update the list of OpenSSL versions in the README
-
-1.1.0 is also supported nowadays. Also mention the best effort support
-for derivatives.
-(cherry picked from commit 7ab16868bc6e9d5ef879e1046effa035789835cc)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- README | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/README b/README
-index 839d06ec..8ad70e66 100644
---- a/README
-+++ b/README
-@@ -113,8 +113,12 @@ build fails due to missing symbols such as deflateInit(), then try again with
- Your are strongly encouraged to always use an up-to-date version of OpenSSL, as
- found on https://www.openssl.org/ as vulnerabilities are occasionally found and
- you don't want them on your systems. HAProxy is known to build correctly on all
--currently supported branches (0.9.8, 1.0.0, 1.0.1 and 1.0.2 at the time of
--writing). Branch 1.0.2 is recommended for the richest features.
-+currently supported branches (0.9.8, 1.0.0, 1.0.1, 1.0.2 and 1.1.0 at the time
-+of writing). Branch 1.0.2 is currently recommended for the best combination of
-+features and stability. Asynchronous engines require OpenSSL 1.1.0 though. It's
-+worth mentionning that some OpenSSL derivatives are also reported to work but
-+may occasionally break. Patches to fix them are welcome but please read the
-+CONTRIBUTING file first.
- To link OpenSSL statically against haproxy, build OpenSSL with the no-shared
- keyword and install it to a local directory, so your system is not affected :
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0008-MINOR-tools-add-a-portable-timegm-alternative.patch b/net/haproxy/patches/0008-MINOR-tools-add-a-portable-timegm-alternative.patch
deleted file mode 100644 (file)
index 4546258..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-From 3e21b8d25ad148ef4e6544f28a8b2305f9484a7b Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 19 Jul 2017 19:05:29 +0200
-Subject: [PATCH 08/18] MINOR: tools: add a portable timegm() alternative
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-timegm() is not provided everywhere and the documentation on how to
-replace it is bogus as it proposes an inefficient and non-thread safe
-alternative.
-
-Here we reimplement everything needed to compute the number of seconds
-since Epoch based on the broken down fields in struct tm. It is only
-guaranteed to return correct values for correct inputs. It was successfully
-tested with all possible 32-bit values of time_t converted to struct tm
-using gmtime() and back to time_t using the legacy timegm() and this
-function, and both functions always produced the same result.
-
-Thanks to Benoît Garnier for an instructive discussion and detailed
-explanations of the various time functions, leading to this solution.
-(cherry picked from commit cb1949b8b30b8db7e05546da2939eff2b5973321)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- include/common/standard.h | 21 ++++++++++++++++++
- src/standard.c            | 54 +++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 75 insertions(+)
-
-diff --git a/include/common/standard.h b/include/common/standard.h
-index 87f90a65..c19c368b 100644
---- a/include/common/standard.h
-+++ b/include/common/standard.h
-@@ -624,6 +624,27 @@ static inline void get_gmtime(const time_t now, struct tm *tm)
-       gmtime_r(&now, tm);
- }
-+/* Counts a number of elapsed days since 01/01/0000 based solely on elapsed
-+ * years and assuming the regular rule for leap years applies. It's fake but
-+ * serves as a temporary origin. It's worth remembering that it's the first
-+ * year of each period that is leap and not the last one, so for instance year
-+ * 1 sees 366 days since year 0 was leap. For this reason we have to apply
-+ * modular arithmetics which is why we offset the year by 399 before
-+ * subtracting the excess at the end. No overflow here before ~11.7 million
-+ * years.
-+ */
-+static inline unsigned int days_since_zero(unsigned int y)
-+{
-+      return y * 365 + (y + 399) / 4 - (y + 399) / 100 + (y + 399) / 400
-+             - 399 / 4 + 399 / 100;
-+}
-+
-+/* Returns the number of seconds since 01/01/1970 0:0:0 GMT for GMT date <tm>.
-+ * It is meant as a portable replacement for timegm() for use with valid inputs.
-+ * Returns undefined results for invalid dates (eg: months out of range 0..11).
-+ */
-+extern time_t my_timegm(const struct tm *tm);
-+
- /* This function parses a time value optionally followed by a unit suffix among
-  * "d", "h", "m", "s", "ms" or "us". It converts the value into the unit
-  * expected by the caller. The computation does its best to avoid overflows.
-diff --git a/src/standard.c b/src/standard.c
-index 8df1da6c..e1d414f3 100644
---- a/src/standard.c
-+++ b/src/standard.c
-@@ -2841,6 +2841,60 @@ char *localdate2str_log(char *dst, time_t t, struct tm *tm, size_t size)
-       return dst;
- }
-+/* Returns the number of seconds since 01/01/1970 0:0:0 GMT for GMT date <tm>.
-+ * It is meant as a portable replacement for timegm() for use with valid inputs.
-+ * Returns undefined results for invalid dates (eg: months out of range 0..11).
-+ */
-+time_t my_timegm(const struct tm *tm)
-+{
-+      /* Each month has 28, 29, 30 or 31 days, or 28+N. The date in the year
-+       * is thus (current month - 1)*28 + cumulated_N[month] to count the
-+       * sum of the extra N days for elapsed months. The sum of all these N
-+       * days doesn't exceed 30 for a complete year (366-12*28) so it fits
-+       * in a 5-bit word. This means that with 60 bits we can represent a
-+       * matrix of all these values at once, which is fast and efficient to
-+       * access. The extra February day for leap years is not counted here.
-+       *
-+       * Jan : none      =  0 (0)
-+       * Feb : Jan       =  3 (3)
-+       * Mar : Jan..Feb  =  3 (3 + 0)
-+       * Apr : Jan..Mar  =  6 (3 + 0 + 3)
-+       * May : Jan..Apr  =  8 (3 + 0 + 3 + 2)
-+       * Jun : Jan..May  = 11 (3 + 0 + 3 + 2 + 3)
-+       * Jul : Jan..Jun  = 13 (3 + 0 + 3 + 2 + 3 + 2)
-+       * Aug : Jan..Jul  = 16 (3 + 0 + 3 + 2 + 3 + 2 + 3)
-+       * Sep : Jan..Aug  = 19 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3)
-+       * Oct : Jan..Sep  = 21 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3 + 2)
-+       * Nov : Jan..Oct  = 24 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3 + 2 + 3)
-+       * Dec : Jan..Nov  = 26 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3 + 2 + 3 + 2)
-+       */
-+      uint64_t extra =
-+              ( 0ULL <<  0*5) + ( 3ULL <<  1*5) + ( 3ULL <<  2*5) + /* Jan, Feb, Mar, */
-+              ( 6ULL <<  3*5) + ( 8ULL <<  4*5) + (11ULL <<  5*5) + /* Apr, May, Jun, */
-+              (13ULL <<  6*5) + (16ULL <<  7*5) + (19ULL <<  8*5) + /* Jul, Aug, Sep, */
-+              (21ULL <<  9*5) + (24ULL << 10*5) + (26ULL << 11*5);  /* Oct, Nov, Dec, */
-+
-+      unsigned int y = tm->tm_year + 1900;
-+      unsigned int m = tm->tm_mon;
-+      unsigned long days = 0;
-+
-+      /* days since 1/1/1970 for full years */
-+      days += days_since_zero(y) - days_since_zero(1970);
-+
-+      /* days for full months in the current year */
-+      days += 28 * m + ((extra >> (m * 5)) & 0x1f);
-+
-+      /* count + 1 after March for leap years. A leap year is a year multiple
-+       * of 4, unless it's multiple of 100 without being multiple of 400. 2000
-+       * is leap, 1900 isn't, 1904 is.
-+       */
-+      if ((m > 1) && !(y & 3) && ((y % 100) || !(y % 400)))
-+              days++;
-+
-+      days += tm->tm_mday - 1;
-+      return days * 86400ULL + tm->tm_hour * 3600 + tm->tm_min * 60 + tm->tm_sec;
-+}
-+
- /* This function check a char. It returns true and updates
-  * <date> and <len> pointer to the new position if the
-  * character is found.
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0009-BUILD-lua-replace-timegm-with-my_timegm-to-fix-build.patch b/net/haproxy/patches/0009-BUILD-lua-replace-timegm-with-my_timegm-to-fix-build.patch
deleted file mode 100644 (file)
index 623ce95..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From df1655a6c0e4431317cc66c67693281092a952b0 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 19 Jul 2017 19:08:48 +0200
-Subject: [PATCH 09/18] BUILD: lua: replace timegm() with my_timegm() to fix
- build on Solaris 10
-
-Akhnin Nikita reported that Lua doesn't build on Solaris 10 because
-the code uses timegm() to parse a date, which is not provided there.
-The recommended way to implement timegm() is broken in the man page,
-as it is based on a change of the TZ environment variable at run time
-before calling the function (which is obviously not thread safe, and
-terribly inefficient).
-
-Here instead we rely on the new my_timegm() function, it should be
-sufficient for all known use cases.
-(cherry picked from commit abd9bb20b76818c9f461a82b72b10818736ff8b3)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- src/hlua_fcn.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
-index 58905d7d..fe899a4a 100644
---- a/src/hlua_fcn.c
-+++ b/src/hlua_fcn.c
-@@ -287,7 +287,7 @@ static int hlua_parse_date(lua_State *L, int (*fcn)(const char *, int, struct tm
-        * the timezone from the broken-down time, it must be fixed
-        * after the conversion.
-        */
--      time = timegm(&tm);
-+      time = my_timegm(&tm);
-       if (time == -1) {
-               lua_pushnil(L);
-               return 1;
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0010-DOC-Updated-51Degrees-git-URL-to-point-to-a-stable-v.patch b/net/haproxy/patches/0010-DOC-Updated-51Degrees-git-URL-to-point-to-a-stable-v.patch
deleted file mode 100644 (file)
index 2deb9a3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From e14ec1d816de60b648dd7cb6c55b665f5163156b Mon Sep 17 00:00:00 2001
-From: ben51degrees <ben@51degrees.com>
-Date: Wed, 19 Jul 2017 16:22:04 +0100
-Subject: [PATCH 10/18] DOC: Updated 51Degrees git URL to point to a stable
- version.
-
-The previously documented location doesn't work anymore and must not be
-used. Warning for backports, different branches are in use depending on
-the version (v3.2.10 for 1.7, v3.2.5 for 1.6).
-(cherry picked from commit ac752ff68cd3ac88a7a27ce17daa5c3f0c839694)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- doc/51Degrees-device-detection.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/doc/51Degrees-device-detection.txt b/doc/51Degrees-device-detection.txt
-index 1ee912d9..71b2eb76 100644
---- a/doc/51Degrees-device-detection.txt
-+++ b/doc/51Degrees-device-detection.txt
-@@ -14,7 +14,7 @@ headers as configurable parameters.
- In order to enable 51Degrees download the 51Degrees source code from the
- official github repository :
--    git clone https://github.com/51Degrees/Device-Detection
-+    git clone https://git.51Degrees.com/Device-Detection.git -b v3.2.10
- then run 'make' with USE_51DEGREES and 51DEGREES_SRC set. Both 51DEGREES_INC
- and 51DEGREES_LIB may additionally be used to force specific different paths
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0011-BUG-MINOR-http-Set-the-response-error-state-in-http_.patch b/net/haproxy/patches/0011-BUG-MINOR-http-Set-the-response-error-state-in-http_.patch
deleted file mode 100644 (file)
index 435a457..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From 9304b76fb37a36f6249ec963093d74210bd237f6 Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue, 18 Jul 2017 10:35:55 +0200
-Subject: [PATCH 11/18] BUG/MINOR: http: Set the response error state in
- http_sync_res_state
-
-This is just typo. It may only report a wrong response message state in
-"show errors" on the CLI.
-
-This patch must be backported in 1.7.
-
-(cherry picked from commit a3992e06a6e74142d9784d18d8cb3527fadb64d6)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 94c8d639..796955f5 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5530,7 +5530,7 @@ int http_sync_res_state(struct stream *s)
-                       goto http_msg_closed;
-               }
-               else if (chn->flags & CF_SHUTW) {
--                      txn->req.err_state = txn->req.msg_state;
-+                      txn->rsp.err_state = txn->rsp.msg_state;
-                       txn->rsp.msg_state = HTTP_MSG_ERROR;
-                       s->be->be_counters.cli_aborts++;
-                       if (objt_server(s->target))
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0012-MINOR-http-Reorder-rewrite-checks-in-http_resync_sta.patch b/net/haproxy/patches/0012-MINOR-http-Reorder-rewrite-checks-in-http_resync_sta.patch
deleted file mode 100644 (file)
index c26e080..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-From a49007a187ab7fddfcec58e1d9fc8a707e4531c9 Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue, 18 Jul 2017 11:18:46 +0200
-Subject: [PATCH 12/18] MINOR: http: Reorder/rewrite checks in
- http_resync_states
-
-The previous patch removed the forced symmetry of the TUNNEL mode during the
-state synchronization. Here, we take care to remove body analyzer only on the
-channel in TUNNEL mode. In fact, today, this change has no effect because both
-sides are switched in same time. But this way, with some changes, it will be
-possible to keep body analyzer on a side (to finish the states synchronization)
-with the other one in TUNNEL mode.
-
-WARNING: This patch will be used to fix a bug. The fix will be commited in a
-very next commit. So if the fix is backported, this one must be backported too.
-
-(cherry picked from commit f77bb539d4846ab278269b99a3165a5608ca0cf4)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 48 +++++++++++++++++++++++++++++-------------------
- 1 file changed, 29 insertions(+), 19 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 796955f5..aaf9f648 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5577,34 +5577,27 @@ int http_resync_states(struct stream *s)
-       /* OK, both state machines agree on a compatible state.
-        * There are a few cases we're interested in :
--       *  - HTTP_MSG_TUNNEL on either means we have to disable both analysers
-        *  - HTTP_MSG_CLOSED on both sides means we've reached the end in both
-        *    directions, so let's simply disable both analysers.
--       *  - HTTP_MSG_CLOSED on the response only means we must abort the
--       *    request.
--       *  - HTTP_MSG_CLOSED on the request and HTTP_MSG_DONE on the response
--       *    with server-close mode means we've completed one request and we
--       *    must re-initialize the server connection.
-+       *  - HTTP_MSG_CLOSED on the response only or HTTP_MSG_ERROR on either
-+       *    means we must abort the request.
-+       *  - HTTP_MSG_TUNNEL on either means we have to disable analyser on
-+       *    corresponding channel.
-+       *  - HTTP_MSG_DONE or HTTP_MSG_CLOSED on the request and HTTP_MSG_DONE
-+       *    on the response with server-close mode means we've completed one
-+       *    request and we must re-initialize the server connection.
-        */
--
--      if (txn->req.msg_state == HTTP_MSG_TUNNEL ||
--          txn->rsp.msg_state == HTTP_MSG_TUNNEL ||
--          (txn->req.msg_state == HTTP_MSG_CLOSED &&
--           txn->rsp.msg_state == HTTP_MSG_CLOSED)) {
-+      if (txn->req.msg_state == HTTP_MSG_CLOSED &&
-+          txn->rsp.msg_state == HTTP_MSG_CLOSED) {
-               s->req.analysers &= AN_REQ_FLT_END;
-               channel_auto_close(&s->req);
-               channel_auto_read(&s->req);
-               s->res.analysers &= AN_RES_FLT_END;
-               channel_auto_close(&s->res);
-               channel_auto_read(&s->res);
--              if (txn->req.msg_state == HTTP_MSG_TUNNEL && HAS_REQ_DATA_FILTERS(s))
--                      s->req.analysers |= AN_REQ_FLT_XFER_DATA;
--              if (txn->rsp.msg_state == HTTP_MSG_TUNNEL && HAS_RSP_DATA_FILTERS(s))
--                      s->res.analysers |= AN_RES_FLT_XFER_DATA;
--      }
--      else if ((txn->req.msg_state >= HTTP_MSG_DONE &&
--                (txn->rsp.msg_state == HTTP_MSG_CLOSED || (s->res.flags & CF_SHUTW))) ||
--               txn->rsp.msg_state == HTTP_MSG_ERROR ||
-+      }
-+      else if (txn->rsp.msg_state == HTTP_MSG_CLOSED ||
-+               txn->rsp.msg_state == HTTP_MSG_ERROR  ||
-                txn->req.msg_state == HTTP_MSG_ERROR) {
-               s->res.analysers &= AN_RES_FLT_END;
-               channel_auto_close(&s->res);
-@@ -5615,6 +5608,23 @@ int http_resync_states(struct stream *s)
-               channel_auto_read(&s->req);
-               channel_truncate(&s->req);
-       }
-+      else if (txn->req.msg_state == HTTP_MSG_TUNNEL ||
-+               txn->rsp.msg_state == HTTP_MSG_TUNNEL) {
-+              if (txn->req.msg_state == HTTP_MSG_TUNNEL) {
-+                      s->req.analysers &= AN_REQ_FLT_END;
-+                      if (HAS_REQ_DATA_FILTERS(s))
-+                              s->req.analysers |= AN_REQ_FLT_XFER_DATA;
-+              }
-+              if (txn->rsp.msg_state == HTTP_MSG_TUNNEL) {
-+                      s->res.analysers &= AN_RES_FLT_END;
-+                      if (HAS_RSP_DATA_FILTERS(s))
-+                              s->res.analysers |= AN_RES_FLT_XFER_DATA;
-+              }
-+              channel_auto_close(&s->req);
-+              channel_auto_read(&s->req);
-+              channel_auto_close(&s->res);
-+              channel_auto_read(&s->res);
-+      }
-       else if ((txn->req.msg_state == HTTP_MSG_DONE ||
-                 txn->req.msg_state == HTTP_MSG_CLOSED) &&
-                txn->rsp.msg_state == HTTP_MSG_DONE &&
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0013-MINOR-http-Switch-requests-responses-in-TUNNEL-mode-.patch b/net/haproxy/patches/0013-MINOR-http-Switch-requests-responses-in-TUNNEL-mode-.patch
deleted file mode 100644 (file)
index ea2923d..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-From 1430a0c0f62fcff4303706f5baf2b544e00fcda3 Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue, 18 Jul 2017 10:48:24 +0200
-Subject: [PATCH 13/18] MINOR: http: Switch requests/responses in TUNNEL mode
- only by checking txn flags
-
-Today, the only way to have a request or a response in HTTP_MSG_TUNNEL state is
-to have the flag TX_CON_WANT_TUN set on the transaction. So this is a symmetric
-state. Both the request and the response are switch in same time in this
-state. This can be done only by checking transaction flags instead of relying on
-the other side state. This is the purpose of this patch.
-
-This way, if for any reason we need to switch only one side in TUNNEL mode, it
-will be possible. And to prepare asymmetric cases, we check channel flags in
-DONE _AND_ TUNNEL states.
-
-WARNING: This patch will be used to fix a bug. The fix will be commited in a
-very next commit. So if the fix is backported, this one must be backported too.
-
-(cherry picked from commit 4be9803914ae7156109c915659aad216e4a3c6c1)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 65 +++++++++++++++++++-------------------------------------
- 1 file changed, 22 insertions(+), 43 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index aaf9f648..00a92cdb 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5294,7 +5294,7 @@ int http_sync_req_state(struct stream *s)
-       unsigned int old_flags = chn->flags;
-       unsigned int old_state = txn->req.msg_state;
--      if (unlikely(txn->req.msg_state < HTTP_MSG_BODY))
-+      if (unlikely(txn->req.msg_state < HTTP_MSG_DONE))
-               return 0;
-       if (txn->req.msg_state == HTTP_MSG_DONE) {
-@@ -5338,13 +5338,6 @@ int http_sync_req_state(struct stream *s)
-                       goto wait_other_side;
-               }
--              if (txn->rsp.msg_state == HTTP_MSG_TUNNEL) {
--                      /* if any side switches to tunnel mode, the other one does too */
--                      channel_auto_read(chn);
--                      txn->req.msg_state = HTTP_MSG_TUNNEL;
--                      goto wait_other_side;
--              }
--
-               /* When we get here, it means that both the request and the
-                * response have finished receiving. Depending on the connection
-                * mode, we'll have to wait for the last bytes to leave in either
-@@ -5377,20 +5370,7 @@ int http_sync_req_state(struct stream *s)
-                       }
-               }
--              if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
--                      /* if we've just closed an output, let's switch */
--                      s->si[1].flags |= SI_FL_NOLINGER;  /* we want to close ASAP */
--
--                      if (!channel_is_empty(chn)) {
--                              txn->req.msg_state = HTTP_MSG_CLOSING;
--                              goto http_msg_closing;
--                      }
--                      else {
--                              txn->req.msg_state = HTTP_MSG_CLOSED;
--                              goto http_msg_closed;
--                      }
--              }
--              goto wait_other_side;
-+              goto check_channel_flags;
-       }
-       if (txn->req.msg_state == HTTP_MSG_CLOSING) {
-@@ -5419,6 +5399,16 @@ int http_sync_req_state(struct stream *s)
-               goto wait_other_side;
-       }
-+ check_channel_flags:
-+      /* Here, we are in HTTP_MSG_DONE or HTTP_MSG_TUNNEL */
-+      if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
-+              /* if we've just closed an output, let's switch */
-+              s->si[1].flags |= SI_FL_NOLINGER;  /* we want to close ASAP */
-+              txn->req.msg_state = HTTP_MSG_CLOSING;
-+              goto http_msg_closing;
-+      }
-+
-+
-  wait_other_side:
-       return txn->req.msg_state != old_state || chn->flags != old_flags;
- }
-@@ -5438,7 +5428,7 @@ int http_sync_res_state(struct stream *s)
-       unsigned int old_flags = chn->flags;
-       unsigned int old_state = txn->rsp.msg_state;
--      if (unlikely(txn->rsp.msg_state < HTTP_MSG_BODY))
-+      if (unlikely(txn->rsp.msg_state < HTTP_MSG_DONE))
-               return 0;
-       if (txn->rsp.msg_state == HTTP_MSG_DONE) {
-@@ -5461,14 +5451,6 @@ int http_sync_res_state(struct stream *s)
-                       goto wait_other_side;
-               }
--              if (txn->req.msg_state == HTTP_MSG_TUNNEL) {
--                      /* if any side switches to tunnel mode, the other one does too */
--                      channel_auto_read(chn);
--                      txn->rsp.msg_state = HTTP_MSG_TUNNEL;
--                      chn->flags |= CF_NEVER_WAIT;
--                      goto wait_other_side;
--              }
--
-               /* When we get here, it means that both the request and the
-                * response have finished receiving. Depending on the connection
-                * mode, we'll have to wait for the last bytes to leave in either
-@@ -5506,18 +5488,7 @@ int http_sync_res_state(struct stream *s)
-                               txn->rsp.msg_state = HTTP_MSG_TUNNEL;
-               }
--              if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
--                      /* if we've just closed an output, let's switch */
--                      if (!channel_is_empty(chn)) {
--                              txn->rsp.msg_state = HTTP_MSG_CLOSING;
--                              goto http_msg_closing;
--                      }
--                      else {
--                              txn->rsp.msg_state = HTTP_MSG_CLOSED;
--                              goto http_msg_closed;
--                      }
--              }
--              goto wait_other_side;
-+              goto check_channel_flags;
-       }
-       if (txn->rsp.msg_state == HTTP_MSG_CLOSING) {
-@@ -5548,6 +5519,14 @@ int http_sync_res_state(struct stream *s)
-               goto wait_other_side;
-       }
-+ check_channel_flags:
-+      /* Here, we are in HTTP_MSG_DONE or HTTP_MSG_TUNNEL */
-+      if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
-+              /* if we've just closed an output, let's switch */
-+              txn->rsp.msg_state = HTTP_MSG_CLOSING;
-+              goto http_msg_closing;
-+      }
-+
-  wait_other_side:
-       /* We force the response to leave immediately if we're waiting for the
-        * other side, since there is no pending shutdown to push it out.
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0014-BUG-MEDIUM-http-Switch-HTTP-responses-in-TUNNEL-mode.patch b/net/haproxy/patches/0014-BUG-MEDIUM-http-Switch-HTTP-responses-in-TUNNEL-mode.patch
deleted file mode 100644 (file)
index aca24c1..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-From f82344c1cf20afcf77e8c3df8f9d341d659da93b Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue, 18 Jul 2017 11:42:08 +0200
-Subject: [PATCH 14/18] BUG/MEDIUM: http: Switch HTTP responses in TUNNEL mode
- when body length is undefined
-
-When the body length of a HTTP response is undefined, the HTTP parser is blocked
-in the body parsing. Before HAProxy 1.7, in this case, because
-AN_RES_HTTP_XFER_BODY is never set, there is no visible effect. When the server
-closes its connection to terminate the response, HAProxy catches it as a normal
-closure. Since 1.7, we always set this analyzer to enter at least once in
-http_response_forward_body. But, in the present case, when the server connection
-is closed, http_response_forward_body is called one time too many. The response
-is correctly sent to the client, but an error is catched and logged with "SD--"
-flags.
-
-To reproduce the bug, you can use the configuration "tests/test-fsm.cfg". The
-tests 3 and 21 hit the bug.
-
-Idea to fix the bug is to switch the response in TUNNEL mode without switching
-the request. This is possible because of previous patches.
-
-First, we need to detect responses with undefined body length during states
-synchronization. Excluding tunnelled transactions, when the response length is
-undefined, TX_CON_WANT_CLO is always set on the transaction. So, when states are
-synchronized, if TX_CON_WANT_CLO is set, the response is switched in TUNNEL mode
-and the request remains unchanged.
-
-Then, in http_msg_forward_body, we add a specific check to switch the response
-in DONE mode if the body length is undefined and if there is no data filter.
-
-This patch depends on following previous commits:
-
-  * MINOR: http: Switch requests/responses in TUNNEL mode only by checking txn flags
-  * MINOR: http: Reorder/rewrite checks in http_resync_states
-
-This patch must be backported in 1.7 with 2 previous ones.
-
-(cherry picked from commit 1486b0ab6de744e14ae684af105951345534f9ec)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 37 +++++++++++++++++++++++++------------
- 1 file changed, 25 insertions(+), 12 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 00a92cdb..e776e4d5 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5354,7 +5354,16 @@ int http_sync_req_state(struct stream *s)
-                        * let's enforce it now that we're not expecting any new
-                        * data to come. The caller knows the stream is complete
-                        * once both states are CLOSED.
-+                       *
-+                       *  However, there is an exception if the response
-+                       *  length is undefined. In this case, we need to wait
-+                       *  the close from the server. The response will be
-+                       *  switched in TUNNEL mode until the end.
-                        */
-+                      if (!(txn->rsp.flags & HTTP_MSGF_XFER_LEN) &&
-+                          txn->rsp.msg_state != HTTP_MSG_CLOSED)
-+                              goto check_channel_flags;
-+
-                       if (!(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) {
-                               channel_shutr_now(chn);
-                               channel_shutw_now(chn);
-@@ -5471,8 +5480,16 @@ int http_sync_res_state(struct stream *s)
-                        * let's enforce it now that we're not expecting any new
-                        * data to come. The caller knows the stream is complete
-                        * once both states are CLOSED.
-+                       *
-+                       * However, there is an exception if the response length
-+                       * is undefined. In this case, we switch in TUNNEL mode.
-                        */
--                      if (!(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) {
-+                      if (!(txn->rsp.flags & HTTP_MSGF_XFER_LEN)) {
-+                              channel_auto_read(chn);
-+                              txn->rsp.msg_state = HTTP_MSG_TUNNEL;
-+                              chn->flags |= CF_NEVER_WAIT;
-+                      }
-+                      else if (!(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) {
-                               channel_shutr_now(chn);
-                               channel_shutw_now(chn);
-                       }
-@@ -6952,14 +6969,6 @@ int http_response_forward_body(struct stream *s, struct channel *res, int an_bit
-       if ((msg->flags & HTTP_MSGF_TE_CHNK) || (msg->flags & HTTP_MSGF_COMPRESSING))
-               res->flags |= CF_EXPECT_MORE;
--      /* If there is neither content-length, nor transfer-encoding header
--       * _AND_ there is no data filtering, we can safely forward all data
--       * indefinitely. */
--      if (!(msg->flags & HTTP_MSGF_XFER_LEN) && !HAS_DATA_FILTERS(s, res)) {
--              buffer_flush(res->buf);
--              channel_forward_forever(res);
--      }
--
-       /* the stream handler will take care of timeouts and errors */
-       return 0;
-@@ -7036,9 +7045,13 @@ http_msg_forward_body(struct stream *s, struct http_msg *msg)
-               goto missing_data_or_waiting;
-       }
--      /* The server still sending data that should be filtered */
--      if (!(msg->flags & HTTP_MSGF_XFER_LEN) && !(chn->flags & CF_SHUTR))
--              goto missing_data_or_waiting;
-+      /* This check can only be true for a response. HTTP_MSGF_XFER_LEN is
-+       * always set for a request. */
-+      if (!(msg->flags & HTTP_MSGF_XFER_LEN)) {
-+              /* The server still sending data that should be filtered */
-+              if (!(chn->flags & CF_SHUTR) && HAS_DATA_FILTERS(s, chn))
-+                      goto missing_data_or_waiting;
-+      }
-       msg->msg_state = HTTP_MSG_ENDING;
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0015-BUG-MAJOR-http-Fix-possible-infinity-loop-in-http_sy.patch b/net/haproxy/patches/0015-BUG-MAJOR-http-Fix-possible-infinity-loop-in-http_sy.patch
deleted file mode 100644 (file)
index 1552dfc..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-From af9b52e92be8ca6a07f9156dcb0b08dd2ad8db75 Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Thu, 20 Jul 2017 11:05:10 +0200
-Subject: [PATCH 15/18] BUG/MAJOR: http: Fix possible infinity loop in
- http_sync_(req|res)_state
-
-In commit "MINOR: http: Switch requests/responses in TUNNEL mode only by
-checking txn flags", it is possible to have an infinite loop on HTTP_MSG_CLOSING
-state.
-
-(cherry picked from commit 56d260916f61e48c8b2f1fd2f9431afac776d160)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index e776e4d5..4a030013 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5394,8 +5394,8 @@ int http_sync_req_state(struct stream *s)
-               else if (chn->flags & CF_SHUTW) {
-                       txn->req.err_state = txn->req.msg_state;
-                       txn->req.msg_state = HTTP_MSG_ERROR;
--                      goto wait_other_side;
-               }
-+              goto wait_other_side;
-       }
-       if (txn->req.msg_state == HTTP_MSG_CLOSED) {
-@@ -5523,8 +5523,8 @@ int http_sync_res_state(struct stream *s)
-                       s->be->be_counters.cli_aborts++;
-                       if (objt_server(s->target))
-                               objt_server(s->target)->counters.cli_aborts++;
--                      goto wait_other_side;
-               }
-+              goto wait_other_side;
-       }
-       if (txn->rsp.msg_state == HTTP_MSG_CLOSED) {
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0016-BUG-MINOR-lua-Fix-Server.get_addr-port-values.patch b/net/haproxy/patches/0016-BUG-MINOR-lua-Fix-Server.get_addr-port-values.patch
deleted file mode 100644 (file)
index 0e1d9ab..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-From c00347899e9f0c3420f98c53eab1469644e28e06 Mon Sep 17 00:00:00 2001
-From: Nenad Merdanovic <nmerdan@haproxy.com>
-Date: Sun, 23 Jul 2017 22:04:58 -0400
-Subject: [PATCH 16/18] BUG/MINOR: lua: Fix Server.get_addr() port values
-
-The get_addr() method of the Lua Server class was using the
-'sockaddr_storage addr' member to get the port value. HAProxy does not
-store ports in this member as it uses a separate member, called
-'svc_port'.
-
-This fix should be backported to 1.7.
-
-(cherry picked from commit 3849473828f319829aff422d2fbbce0823e65d64)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/hlua_fcn.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
-index fe899a4a..0752220e 100644
---- a/src/hlua_fcn.c
-+++ b/src/hlua_fcn.c
-@@ -545,8 +545,7 @@ int hlua_server_get_addr(lua_State *L)
-                         addr, INET_ADDRSTRLEN);
-               luaL_addstring(&b, addr);
-               luaL_addstring(&b, ":");
--              snprintf(addr, INET_ADDRSTRLEN, "%d",
--                       ntohs(((struct sockaddr_in *)&srv->addr)->sin_port));
-+              snprintf(addr, INET_ADDRSTRLEN, "%d", srv->svc_port);
-               luaL_addstring(&b, addr);
-               break;
-       case AF_INET6:
-@@ -554,8 +553,7 @@ int hlua_server_get_addr(lua_State *L)
-                         addr, INET_ADDRSTRLEN);
-               luaL_addstring(&b, addr);
-               luaL_addstring(&b, ":");
--              snprintf(addr, INET_ADDRSTRLEN, "%d",
--                       ntohs(((struct sockaddr_in6 *)&srv->addr)->sin6_port));
-+              snprintf(addr, INET_ADDRSTRLEN, "%d", srv->svc_port);
-               luaL_addstring(&b, addr);
-               break;
-       case AF_UNIX:
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0017-BUG-MINOR-lua-Correctly-use-INET6_ADDRSTRLEN-in-Serv.patch b/net/haproxy/patches/0017-BUG-MINOR-lua-Correctly-use-INET6_ADDRSTRLEN-in-Serv.patch
deleted file mode 100644 (file)
index 408b42d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-From e79fe9bc0ae363e91555f1ba64889e2ddf475b8e Mon Sep 17 00:00:00 2001
-From: Nenad Merdanovic <nmerdan@haproxy.com>
-Date: Sun, 23 Jul 2017 22:04:59 -0400
-Subject: [PATCH 17/18] BUG/MINOR: lua: Correctly use INET6_ADDRSTRLEN in
- Server.get_addr()
-
-The get_addr() method of the Lua Server class incorrectly used
-INET_ADDRSTRLEN for IPv6 addresses resulting in failing to convert
-longer IPv6 addresses to strings.
-
-This fix should be backported to 1.7.
-
-(cherry picked from commit a9f040453acc09e888c3f2dc983f15dcf3fa66e3)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/hlua_fcn.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
-index 0752220e..f8b9b5ec 100644
---- a/src/hlua_fcn.c
-+++ b/src/hlua_fcn.c
-@@ -550,7 +550,7 @@ int hlua_server_get_addr(lua_State *L)
-               break;
-       case AF_INET6:
-               inet_ntop(AF_INET6, &((struct sockaddr_in6 *)&srv->addr)->sin6_addr,
--                        addr, INET_ADDRSTRLEN);
-+                        addr, INET6_ADDRSTRLEN);
-               luaL_addstring(&b, addr);
-               luaL_addstring(&b, ":");
-               snprintf(addr, INET_ADDRSTRLEN, "%d", srv->svc_port);
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0018-BUG-MINOR-lua-always-detach-the-tcp-http-tasks-befor.patch b/net/haproxy/patches/0018-BUG-MINOR-lua-always-detach-the-tcp-http-tasks-befor.patch
deleted file mode 100644 (file)
index c1f2310..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-From dd18f945c26fc30872a52c66b06b5a0a86b10060 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Mon, 24 Jul 2017 17:35:27 +0200
-Subject: [PATCH 18/18] BUG/MINOR: lua: always detach the tcp/http tasks before
- freeing them
-
-In hlua_{http,tcp}_applet_release(), a call to task_free() is performed
-to release the task, but no task_delete() is made on these tasks. Till
-now it wasn't much of a problem because this was normally not done with
-the task in the run queue, and the task was never put into the wait queue
-since it doesn't have any timer. But with threading it will become an
-issue. And not having this already prevents another bug from being fixed.
-
-Thanks to Christopher for spotting this one. A backport to 1.7 and 1.6 is
-preferred for safety.
-
-(cherry picked from commit bd7fc95edbce821f1d7b745a7b75deef4d6b1e27)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/hlua.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/hlua.c b/src/hlua.c
-index a998860e..67b9458c 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -5948,6 +5948,7 @@ error:
- static void hlua_applet_tcp_release(struct appctx *ctx)
- {
-+      task_delete(ctx->ctx.hlua_apptcp.task);
-       task_free(ctx->ctx.hlua_apptcp.task);
-       ctx->ctx.hlua_apptcp.task = NULL;
-       hlua_ctx_destroy(&ctx->ctx.hlua_apptcp.hlua);
-@@ -6226,6 +6227,7 @@ error:
- static void hlua_applet_http_release(struct appctx *ctx)
- {
-+      task_delete(ctx->ctx.hlua_apphttp.task);
-       task_free(ctx->ctx.hlua_apphttp.task);
-       ctx->ctx.hlua_apphttp.task = NULL;
-       hlua_ctx_destroy(&ctx->ctx.hlua_apphttp.hlua);
--- 
-2.13.0
-
index 59c7554a3e77b53bf3dd23919326a7d242f1530d..ec8869442c1d6f8a66000f7742f5d0e56555aa18 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=memcached
-PKG_VERSION:=1.5.1
+PKG_VERSION:=1.5.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://memcached.org/files
-PKG_HASH:=a87908936b51d1bd3ef10a2347eef5647f003b63407a5d8161fa7928b1cd6b5c
+PKG_HASH:=9ac93113bdb5d037e79c61277386564ac2e5e31d49e594f11e554e4c149b7245
 
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 
index 7e05c3a4ef8d12e432e2c8294f54cc31cae4b2d4..7454a4d2f07188459e42d134ce552c69f51bbdd2 100644 (file)
@@ -13,10 +13,10 @@ PKG_RELEASE:=1
 PKG_LICENSE:=GPLv3
 PKG_MAINTAINER:=Steven Hessing <steven.hessing@gmail.com>
 
-PKG_SOURCE_VERSION:=0.5.2
+PKG_SOURCE_VERSION:=0.5.3
 PKG_SOURCE_URL:=https://github.com/noddos/noddos/releases/download/v$(PKG_SOURCE_VERSION)/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.xz
-PKG_HASH:=63fe85fc4a588da2d71b7b7db68f1c80ba19520467a3800bdb43bc516a6cff72
+PKG_HASH:=a7f66d6eea17eb6bbd79470ae6f1d97d474c659b8b8259bf0027cae6b4cf8b04
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
 
index a6b9cd850c3a5515985fb1dbf6cb7f97f0c2c8ec..d8857affa23a21660a21e3de25fe13aeb774d0a6 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tcpreplay
-PKG_VERSION:=4.2.3
+PKG_VERSION:=4.2.5
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/appneta/tcpreplay/releases/download/v$(PKG_VERSION)
-PKG_HASH:=68d8d49dab5bf58b2e8d244eee1ee7f2379d967da19fe97dd9d59bcf40a22abc
+PKG_HASH:=941026be34e1db5101d3d22ebddd6fff76179a1ee81e273338f533ba4eca89d7
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=docs/LICENSE
diff --git a/net/wireguard/Makefile b/net/wireguard/Makefile
deleted file mode 100644 (file)
index 4679ff3..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#
-# Copyright (C) 2016-2017 Jason A. Donenfeld <Jason@zx2c4.com>
-# Copyright (C) 2016 Baptiste Jonglez <openwrt@bitsofnetworks.org>
-# Copyright (C) 2016-2017 Dan Luedtke <mail@danrl.com>
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-PKG_NAME:=wireguard
-
-PKG_VERSION:=0.0.20171005
-PKG_RELEASE:=1
-
-PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
-PKG_HASH:=832a3b7cbb510f6986fd0c3a6b2d86bc75fc9f23b6754d8f46bc58ea8e02d608
-
-PKG_LICENSE:=GPL-2.0
-PKG_LICENSE_FILES:=COPYING
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/WireGuard-$(PKG_VERSION)
-PKG_BUILD_PARALLEL:=1
-PKG_USE_MIPS16:=0
-
-# Wireguard's makefile needs this to know where to build the kernel module
-export KERNELDIR:=$(LINUX_DIR)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/wireguard/Default
-  SECTION:=net
-  CATEGORY:=Network
-  SUBMENU:=VPN
-  URL:=https://www.wireguard.com
-  MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
-              Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>, \
-              Dan Luedtke <mail@danrl.com>, \
-              Jason A. Donenfeld <Jason@zx2c4.com>
-endef
-
-define Package/wireguard/Default/description
-  WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes
-  state-of-the-art cryptography. It aims to be faster, simpler, leaner, and
-  more useful than IPSec, while avoiding the massive headache. It intends to
-  be considerably more performant than OpenVPN.  WireGuard is designed as a
-  general purpose VPN for running on embedded interfaces and super computers
-  alike, fit for many different circumstances. It uses UDP.
-endef
-
-define Package/wireguard
-  $(call Package/wireguard/Default)
-  TITLE:=Wireguard meta-package
-  DEPENDS:=+wireguard-tools +kmod-wireguard
-endef
-
-include $(INCLUDE_DIR)/kernel-defaults.mk
-include $(INCLUDE_DIR)/package-defaults.mk
-
-# Used by Build/Compile/Default
-MAKE_PATH:=src/tools
-
-define Build/Compile
-       $(MAKE) $(KERNEL_MAKEOPTS) M="$(PKG_BUILD_DIR)/src" modules
-       $(call Build/Compile/Default)
-endef
-
-define Package/wireguard/install
-  true
-endef
-
-define Package/wireguard/description
-  $(call Package/wireguard/Default/description)
-endef
-
-define Package/wireguard-tools
-  $(call Package/wireguard/Default)
-  TITLE:=Wireguard userspace control program (wg)
-  DEPENDS:=+libmnl
-endef
-
-define Package/wireguard-tools/description
-  $(call Package/wireguard/Default/description)
-
-  This package provides the userspace control program for wireguard, `wg`,
-  and a netifd protocol helper.
-endef
-
-define Package/wireguard-tools/install
-       $(INSTALL_DIR) $(1)/usr/bin/
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/
-       $(INSTALL_DIR) $(1)/lib/netifd/proto/
-       $(INSTALL_BIN) ./files/wireguard.sh $(1)/lib/netifd/proto/
-endef
-
-define KernelPackage/wireguard
-  SECTION:=kernel
-  CATEGORY:=Kernel modules
-  SUBMENU:=Network Support
-  TITLE:=Wireguard kernel module
-  DEPENDS:=+IPV6:kmod-udptunnel6 +kmod-udptunnel4
-  FILES:= $(PKG_BUILD_DIR)/src/wireguard.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoProbe,wireguard)
-endef
-
-define KernelPackage/wireguard/description
-  $(call Package/wireguard/Default/description)
-
-  This package provides the kernel module for wireguard.
-endef
-
-$(eval $(call BuildPackage,wireguard))
-$(eval $(call BuildPackage,wireguard-tools))
-$(eval $(call KernelPackage,wireguard))
diff --git a/net/wireguard/files/wireguard.sh b/net/wireguard/files/wireguard.sh
deleted file mode 100644 (file)
index 7b18a2e..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/bin/sh
-# Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
-# Licensed to the public under the Apache License 2.0.
-
-
-WG=/usr/bin/wg
-if [ ! -x $WG ]; then
-  logger -t "wireguard" "error: missing wireguard-tools (${WG})"
-  exit 0
-fi
-
-
-[ -n "$INCLUDE_ONLY" ] || {
-  . /lib/functions.sh
-  . ../netifd-proto.sh
-  init_proto "$@"
-}
-
-
-proto_wireguard_init_config() {
-  proto_config_add_string "private_key"
-  proto_config_add_int    "listen_port"
-  proto_config_add_int    "mtu"
-  proto_config_add_string "fwmark"
-  available=1
-  no_proto_task=1
-}
-
-
-proto_wireguard_setup_peer() {
-  local peer_config="$1"
-
-  local public_key
-  local preshared_key
-  local allowed_ips
-  local route_allowed_ips
-  local endpoint_host
-  local endpoint_port
-  local persistent_keepalive
-
-  config_get      public_key           "${peer_config}" "public_key"
-  config_get      preshared_key        "${peer_config}" "preshared_key"
-  config_get      allowed_ips          "${peer_config}" "allowed_ips"
-  config_get_bool route_allowed_ips    "${peer_config}" "route_allowed_ips" 0
-  config_get      endpoint_host        "${peer_config}" "endpoint_host"
-  config_get      endpoint_port        "${peer_config}" "endpoint_port"
-  config_get      persistent_keepalive "${peer_config}" "persistent_keepalive"
-
-  # peer configuration
-  echo "[Peer]"                                         >> "${wg_cfg}"
-  echo "PublicKey=${public_key}"                        >> "${wg_cfg}"
-  if [ "${preshared_key}" ]; then
-    echo "PresharedKey=${preshared_key}"                >> "${wg_cfg}"
-  fi
-  for allowed_ip in $allowed_ips; do
-    echo "AllowedIPs=${allowed_ip}"                     >> "${wg_cfg}"
-  done
-  if [ "${endpoint_host}" ]; then
-    case "${endpoint_host}" in
-      *:*)
-        endpoint="[${endpoint_host}]"
-      ;;
-      *)
-        endpoint="${endpoint_host}"
-      ;;
-    esac
-    if [ "${endpoint_port}" ]; then
-      endpoint="${endpoint}:${endpoint_port}"
-    else
-      endpoint="${endpoint}:51820"
-    fi
-    echo "Endpoint=${endpoint}"                         >> "${wg_cfg}"
-  fi
-  if [ "${persistent_keepalive}" ]; then
-    echo "PersistentKeepalive=${persistent_keepalive}"  >> "${wg_cfg}"
-  fi
-
-  # add routes for allowed ips
-  if [ ${route_allowed_ips} -ne 0 ]; then
-    for allowed_ip in ${allowed_ips}; do
-      case "${allowed_ip}" in
-        *:*/*)
-          proto_add_ipv6_route "${allowed_ip%%/*}" "${allowed_ip##*/}"
-        ;;
-        *.*/*)
-          proto_add_ipv4_route "${allowed_ip%%/*}" "${allowed_ip##*/}"
-        ;;
-        *:*)
-          proto_add_ipv6_route "${allowed_ip%%/*}" "128"
-        ;;
-        *.*)
-          proto_add_ipv4_route "${allowed_ip%%/*}" "32"
-        ;;
-      esac
-    done
-  fi
-}
-
-
-proto_wireguard_setup() {
-  local config="$1"
-  local wg_dir="/tmp/wireguard"
-  local wg_cfg="${wg_dir}/${config}"
-
-  local private_key
-  local listen_port
-  local mtu
-
-  # load configuration
-  config_load network
-  config_get private_key   "${config}" "private_key"
-  config_get listen_port   "${config}" "listen_port"
-  config_get addresses     "${config}" "addresses"
-  config_get mtu           "${config}" "mtu"
-  config_get fwmark        "${config}" "fwmark"
-
-  # create interface
-  ip link del dev "${config}" 2>/dev/null
-  ip link add dev "${config}" type wireguard
-
-  if [ "${mtu}" ]; then
-    ip link set mtu "${mtu}" dev "${config}"
-  fi
-
-  proto_init_update "${config}" 1
-
-  # generate configuration file
-  umask 077
-  mkdir -p "${wg_dir}"
-  echo "[Interface]"                     >  "${wg_cfg}"
-  echo "PrivateKey=${private_key}"       >> "${wg_cfg}"
-  if [ "${listen_port}" ]; then
-    echo "ListenPort=${listen_port}"     >> "${wg_cfg}"
-  fi
-  if [ "${fwmark}" ]; then
-    echo "FwMark=${fwmark}" >> "${wg_cfg}"
-  fi
-  config_foreach proto_wireguard_setup_peer "wireguard_${config}"
-
-  # apply configuration file
-  ${WG} setconf ${config} "${wg_cfg}"
-  WG_RETURN=$?
-
-  # delete configuration file
-  rm -f "${wg_cfg}"
-
-  # check status
-  if [ ${WG_RETURN} -ne 0 ]; then
-    sleep 5
-    proto_setup_failed "${config}"
-    exit 1
-  fi
-
-  # add ip addresses
-  for address in ${addresses}; do
-    case "${address}" in
-      *:*/*)
-        proto_add_ipv6_address "${address%%/*}" "${address##*/}"
-      ;;
-      *.*/*)
-        proto_add_ipv4_address "${address%%/*}" "${address##*/}"
-      ;;
-      *:*)
-        proto_add_ipv6_address "${address%%/*}" "128"
-      ;;
-      *.*)
-        proto_add_ipv4_address "${address%%/*}" "32"
-      ;;
-    esac
-  done
-
-  # endpoint dependency
-  wg show "${config}" endpoints | \
-    sed -E 's/\[?([0-9.:a-f]+)\]?:([0-9]+)/\1 \2/' | \
-    while IFS=$'\t ' read -r key address port; do
-    [ -n "${port}" ] || continue
-    proto_add_host_dependency "${config}" "${address}"
-  done
-
-  proto_send_update "${config}"
-}
-
-
-proto_wireguard_teardown() {
-  local config="$1"
-  ip link del dev "${config}" >/dev/null 2>&1
-}
-
-
-[ -n "$INCLUDE_ONLY" ] || {
-  add_protocol wireguard
-}
index c69dc4f6ae4859eb3c935346b9dd1c049880ddec..a8d9ef86fc4fbf6c1f40732ac473ed34191c2bbc 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=xl2tpd
-PKG_VERSION:=devel-20151125
-PKG_RELEASE:=3
+PKG_VERSION:=1.3.10
+PKG_RELEASE:=1
 PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=LICENSE
@@ -17,9 +17,11 @@ PKG_LICENSE_FILES:=LICENSE
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/xelerance/xl2tpd.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=e2065bf0fc22ba33001ad503c01bba01648024a8
+PKG_SOURCE_VERSION:=090d1bef577cabdb3495d76acd814733fa66ef57
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=8b15c0069cdab7080796f92f86c84b79e430679ce77fb6ea95749fe932bb87c4
+PKG_MIRROR_HASH:=bcddc10e28a74dec607e67cbbea97220f6bfd696b0378a7c30ec8a3e0ac86be1
+
+PKG_BUILD_DEPENDS:=libpcap
 
 PKG_INSTALL:=1
 
@@ -40,9 +42,6 @@ It does implement both LAC and LNS role in a L2TP networking architecture. The
 main goal of this protocol is to tunnel PPP frame trough an IP network.
 endef
 
-# Use optimization options from OpenWrt build system
-MAKE_FLAGS += OFLAGS=""
-
 ifneq (0,0)
   # debugging options from Makefile of xl2tpd package
   EXTRA_CFLAGS += \
index f0fc4f40eb63ffaf9a883830de2f5961cea85dea..5ef0d94414ecf5f38c21dc8184cb9348c4b21ad3 100644 (file)
@@ -1,6 +1,4 @@
 #
-
-lock
 noauth
 debug
 dump
@@ -11,3 +9,12 @@ novj
 novjccomp
 nopcomp
 noaccomp
+mtu 1400
+mru 1400
+require-mschap-v2
+lcp-echo-interval 20
+lcp-echo-failure 5
+connect-delay 5000
+nodefaultroute
+noipdefault
+proxyarp
diff --git a/net/xl2tpd/patches/100-makefile_opt_flags.patch b/net/xl2tpd/patches/100-makefile_opt_flags.patch
deleted file mode 100644 (file)
index f945d94..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/Makefile
-+++ b/Makefile
-@@ -97,7 +97,8 @@ OSFLAGS+= -DUSE_KERNEL
- IPFLAGS?= -DIP_ALLOCATION
--CFLAGS+= $(DFLAGS) -Os -fno-builtin -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
-+OFLAGS=-Os
-+CFLAGS+= $(DFLAGS) $(OFLAGS) -fno-builtin -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
- HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h md5.h
- OBJS=xl2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o md5.o
- SRCS=${OBJS:.o=.c} ${HDRS}
diff --git a/net/xl2tpd/patches/110-makefile_dont_build_pfc.patch b/net/xl2tpd/patches/110-makefile_dont_build_pfc.patch
deleted file mode 100644 (file)
index f76364f..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
---- a/Makefile
-+++ b/Makefile
-@@ -113,10 +113,10 @@ BINDIR?=$(DESTDIR)${PREFIX}/bin
- MANDIR?=$(DESTDIR)${PREFIX}/share/man
--all: $(EXEC) pfc $(CONTROL_EXEC)
-+all: $(EXEC) $(CONTROL_EXEC)
- clean:
--      rm -f $(OBJS) $(EXEC) pfc.o pfc $(CONTROL_EXEC)
-+      rm -f $(OBJS) $(EXEC) $(CONTROL_EXEC)
- $(EXEC): $(OBJS) $(HDRS)
-       $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
-@@ -124,14 +124,10 @@ $(EXEC): $(OBJS) $(HDRS)
- $(CONTROL_EXEC): $(CONTROL_SRCS)
-       $(CC) $(CFLAGS) $(LDFLAGS) $(CONTROL_SRCS) -o $@
--pfc:
--      $(CC) $(CFLAGS) -c contrib/pfc.c
--      $(CC) $(LDFLAGS) -o pfc pfc.o -lpcap $(LDLIBS)
--
- romfs:
-       $(ROMFSINST) /bin/$(EXEC)
--install: ${EXEC} pfc ${CONTROL_EXEC}
-+install: ${EXEC} ${CONTROL_EXEC}
-       install -d -m 0755 ${SBINDIR}
-       install -m 0755 $(EXEC) ${SBINDIR}/$(EXEC)
-       install -d -m 0755 ${MANDIR}/man5
-@@ -139,11 +135,6 @@ install: ${EXEC} pfc ${CONTROL_EXEC}
-       install -m 0644 doc/xl2tpd.8 ${MANDIR}/man8/
-       install -m 0644 doc/xl2tpd.conf.5 doc/l2tp-secrets.5 \
-                ${MANDIR}/man5/
--      # pfc
--      install -d -m 0755 ${BINDIR}
--      install -m 0755 pfc ${BINDIR}/pfc
--      install -d -m 0755 ${MANDIR}/man1
--      install -m 0644 contrib/pfc.1 ${MANDIR}/man1/
-       # control exec
-       install -d -m 0755 ${SBINDIR}
-       install -m 0755 $(CONTROL_EXEC) ${SBINDIR}/$(CONTROL_EXEC)
diff --git a/net/xl2tpd/patches/120-no-bsd-signal-in-musl.patch b/net/xl2tpd/patches/120-no-bsd-signal-in-musl.patch
deleted file mode 100644 (file)
index c8c4a7d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/xl2tpd.c
-+++ b/xl2tpd.c
-@@ -30,7 +30,7 @@
- #include <errno.h>
- #include <unistd.h>
- #include <time.h>
--#if (__GLIBC__ < 2)
-+#if defined (__GLIBC__) && (__GLIBC__ < 2)
- # if defined(FREEBSD) || defined(OPENBSD)
- #  include <sys/signal.h>
- # elif defined(LINUX)
diff --git a/net/xl2tpd/patches/200-xl2tpd-control-fix-xl2tpd-hanged-up-in-fopen.patch b/net/xl2tpd/patches/200-xl2tpd-control-fix-xl2tpd-hanged-up-in-fopen.patch
deleted file mode 100644 (file)
index 8fa0fd3..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-From 97adf987cf230e47a4800c2f0a0940a1d0d98109 Mon Sep 17 00:00:00 2001
-From: wendy2001011 <wendy2001011@163.com>
-Date: Thu, 9 Feb 2017 17:32:14 +0800
-Subject: [PATCH] xl2tpd-control: fix xl2tpd hanged up in "fopen"
-
-This is a fix for xl2tpd hanged up in "fopen" result fifo while working
-on xl2tpd with OpenWrt.
-
-Root cause is as followings,
-1. xl2tpd-control open result fifo    ##fifo readers=1
-2. xl2tpd-control read result fifo
-3. xl2tpd-control close result fifo     ##fifo readers=0
-4. xl2tpd fopen result fifo                 ##xl2tpd is hanged up here to wait readers
-5.  xl2tpd-control unlink result fifo
-
-The fix replaces the order of "unlink" and "close" when cleaning up to
-avoid hang up issue in fopen, and add the retry waiting when reading
-result fifo.
-
-[Yousong Zhou: 2s as the timeout and 10ms as the check interval]
----
- xl2tpd-control.c | 23 +++++++++++++++++++++--
- 1 file changed, 21 insertions(+), 2 deletions(-)
-
-diff --git a/xl2tpd-control.c b/xl2tpd-control.c
-index 9fcab76..b8bf822 100644
---- a/xl2tpd-control.c
-+++ b/xl2tpd-control.c
-@@ -35,6 +35,7 @@
- #define TUNNEL_REQUIRED 1
- #define TUNNEL_NOT_REQUIRED 0
-+#define TIMEOUT 2000000  //timeout is 2s
- char result_filename[128];
- int result_fd = -1;
-@@ -149,9 +150,9 @@ void help()
- void cleanup(void)
- {
-     /* cleaning up */
--    if (result_fd >= 0)
--          close (result_fd);
-     unlink (result_filename);
-+    if (result_fd >= 0)
-+        close (result_fd);
- }
- int main (int argc, char *argv[])
-@@ -340,6 +341,7 @@ void print_error (int level, const char *fmt, ...)
-     va_end (args);
- }
-+
- int read_result(int result_fd, char* buf, ssize_t size)
- {
-     /* read result from result_fd */
-@@ -348,6 +350,11 @@ int read_result(int result_fd, char* buf, ssize_t size)
-      */
-     ssize_t readed = 0;
-     ssize_t len;
-+    int write_pipe = 0;
-+    struct timeval tvs;
-+    struct timeval tve;
-+    unsigned long diff;
-+    gettimeofday(&tvs, NULL);
-     do
-     {
-@@ -360,8 +367,20 @@ int read_result(int result_fd, char* buf, ssize_t size)
-                 "error: can't read command result: %s\n", strerror (errno));
-             break;
-         } else if (len == 0) {
-+            if(!write_pipe) {
-+                 gettimeofday(&tve, NULL);
-+                 diff = (tve.tv_sec - tvs.tv_sec) * 1000000 + (tve.tv_usec - tvs.tv_usec);
-+                 if (diff >= TIMEOUT) {
-+                     print_error (DEBUG_LEVEL, "error: read timout\n");
-+                     break;
-+                 } else {
-+                     usleep(10000);
-+                     continue;
-+                 }
-+            }
-             break;
-         } else {
-+            write_pipe = 1;
-             readed += len;
-             if ((size - readed) <= 0)
-                 break;
--- 
-2.6.4
-
index f43b649018412a9c22d3ee057c45c61761377ae0..07a7c5d1f0eac027929f7feb90d8cc2eec0d26a3 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lame
-PKG_VERSION:=3.99.5
-PKG_RELEASE:=2
+PKG_VERSION:=3.100
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/lame
-PKG_HASH:=24346b4158e4af3bd9f2e194bb23eb473c75fb7377011523353196b19b9a23ff
+PKG_HASH:=ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e
 PKG_FIXUP:=autoreconf
 
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
@@ -36,7 +36,7 @@ define Package/lame
 $(call Package/lame/Default)
   TITLE:=lame
   MENU:=1
-  DEPENDS += +libncurses
+  DEPENDS += +libncurses +lame-lib
 endef
 
 define Package/lame/description
@@ -52,12 +52,12 @@ define Package/lame-lib/description
 lame mp3 encoder libs
 endef
 
-CONFIG_VARS+=NASM=no
-
 ifeq ($(ARCH),i386)
 TARGET_CFLAGS+=-msse
 endif
 
+CONFIGURE_ARGS += --disable-gtktest --disable-static
+
 define Package/lame/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/lame $(1)/usr/bin/
diff --git a/sound/lame/patches/001-automake-compat.patch b/sound/lame/patches/001-automake-compat.patch
deleted file mode 100644 (file)
index 8857ad7..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
---- a/configure.in
-+++ b/configure.in
-@@ -393,7 +393,7 @@ CONFIG_MATH_LIB="${USE_LIBM}"
- dnl configure use of features
--AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no")
-+HAVE_GTK="no"
- dnl ElectricFence malloc debugging
- AC_MSG_CHECKING(use of ElectricFence malloc debugging)
---- a/frontend/Makefile.am
-+++ b/frontend/Makefile.am
-@@ -35,7 +35,7 @@ lame_SOURCES = lame_main.c $(common_sour
- mp3rtp_SOURCES = mp3rtp.c rtp.c $(common_sources)
- mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c $(common_sources)
--CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@
-+CFLAGS = @CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@
- LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ @SNDFILE_LIBS@
- INCLUDES = -I$(top_srcdir)/libmp3lame -I$(top_srcdir)/include -I$(top_builddir)
---- a/frontend/Makefile.in
-+++ b/frontend/Makefile.in
-@@ -99,7 +99,7 @@ AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
--CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@
-+CFLAGS = @CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@
- CONFIG_DEFS = @CONFIG_DEFS@
- CONFIG_MATH_LIB = @CONFIG_MATH_LIB@
- CPP = @CPP@
index 0b79b9936c6a9afc15c230499dbd24dc62e6094e..4b3487faa0158b44b8a112f0570c277349202faa 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pulseaudio
-PKG_VERSION:=11.0
-PKG_RELEASE:=2
+PKG_VERSION:=11.1
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://freedesktop.org/software/pulseaudio/releases/
-PKG_HASH:=072305d4018fc5e75bb1b45ee6b938fa52fc9fd27493bf327415ef89ed14c969
+PKG_SOURCE_URL:=https://freedesktop.org/software/pulseaudio/releases/
+PKG_HASH:=f2521c525a77166189e3cb9169f75c2ee2b82fa3fcf9476024fbc2c3a6c9cd9e
 PKG_LICENSE:=LGPL-2.1+
 PKG_LICENSE_FILES:=GPL LICENSE
 
index 38e4f71832d1a11961bd4ba1bc295bbb26acd61d..8f4972a5f7d029dc9b7163c99c8ee05e1ff6d510 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=acpid
-PKG_VERSION:=2.0.27
+PKG_VERSION:=2.0.28
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@SF/acpid2 
-PKG_HASH:=820c223e53cc11d9d7229fb1ffc2c2205f1054082c80f83f5a4ec4df16d3a616
+PKG_HASH:=980c3a54b0d3f2fd49fd845a0584c5c2abeaab9e9ac09fcbb68686bbb57a7110
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
index 415e058833df82be6ea7508d7a85bf4734b7077e..17a2d721b9744269b02664c4991880fe8f77da20 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=at
-PKG_VERSION:=3.1.16
-PKG_RELEASE:=2
+PKG_VERSION:=3.1.20
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
 PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/a/at
-PKG_HASH:=cb9af59c6a54edce9536ba629841055409d1f89d8ae26494727a97141fb4d5c1
+PKG_HASH:=0871923cab73050b98ace020664eb2ddc1e669e4166b5abb64d864d02fcefab9
 
 PKG_LICENSE:=GPL-2.0+ GPL-3.0+ ISC
 PKG_LICENSE_FILES:=COPYING Copyright
index 88b413afb3a1ac6af5a8829048f6124d6a3802d3..9978d4925ea4c0951c991db6b0dfa3c71b692efa 100644 (file)
@@ -7,15 +7,15 @@
 
 include $(TOPDIR)/rules.mk
 
-BASE_VERSION:=4.3
+BASE_VERSION:=4.4
 
 PKG_NAME:=bash
-PKG_VERSION:=$(BASE_VERSION).42
+PKG_VERSION:=$(BASE_VERSION).12
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(BASE_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/bash
-PKG_HASH:=afc687a28e0e24dc21b988fa159ff9dbcf6b7caa92ade8645cc6d5605cd024d4
+PKG_HASH:=d86b3392c1202e8ff5a423b302e6284db7f8f435ea9f39b5b1b20fd3ac36dfcb
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BASE_VERSION)
 
 PKG_LICENSE:=GPL-3.0+
index 7efa97b363125e1ed47cbdd932d1936f2fc17c52..c3ab62364c4ed1425dc223b95e2a01330a65372d 100644 (file)
@@ -1,6 +1,8 @@
---- a/execute_cmd.c
-+++ b/execute_cmd.c
-@@ -2369,7 +2369,11 @@ execute_pipeline (command, asynchronous,
+Index: bash-4.4/execute_cmd.c
+===================================================================
+--- bash-4.4.orig/execute_cmd.c
++++ bash-4.4/execute_cmd.c
+@@ -2459,7 +2459,11 @@ execute_pipeline (command, asynchronous,
    /* If the `lastpipe' option is set with shopt, and job control is not
       enabled, execute the last element of non-async pipelines in the
       current shell environment. */
index 050e4763e1e3d13d26648682c8aaed87a4575513..fd0b6958f8ab1d9c662eb2180c29cce2ca9537a4 100644 (file)
@@ -1,6 +1,8 @@
---- a/configure
-+++ b/configure
-@@ -5430,8 +5430,7 @@ if test $opt_readline = yes; then
+Index: bash-4.4/configure
+===================================================================
+--- bash-4.4.orig/configure
++++ bash-4.4/configure
+@@ -5420,8 +5420,7 @@ if test $opt_readline = yes; then
                # static version specified as -llibname to override the
                # dynamic version
                case "${host_os}" in
                esac
        fi
  else
---- a/configure.ac
-+++ b/configure.ac
-@@ -578,8 +578,7 @@ if test $opt_readline = yes; then
+Index: bash-4.4/configure.ac
+===================================================================
+--- bash-4.4.orig/configure.ac
++++ bash-4.4/configure.ac
+@@ -573,8 +573,7 @@ if test $opt_readline = yes; then
                # static version specified as -llibname to override the
                # dynamic version
                case "${host_os}" in
diff --git a/utils/bash/patches/101-upstream-bash43-001.patch b/utils/bash/patches/101-upstream-bash43-001.patch
deleted file mode 100644 (file)
index 3231273..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-001
-
-Bug-Reported-by:       NBaH <nbah@sfr.fr>
-Bug-Reference-ID:      <ler0b5$iu9$1@speranza.aioe.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html
-
-Bug-Description:
-
-A missing check for a valid option prevented `test -R' from working.  There
-is another problem that causes bash to look up the wrong variable name when
-processing the argument to `test -R'.
-
-Patch (apply with `patch -p0'):
-
---- a/test.c
-+++ b/test.c
-@@ -646,8 +646,8 @@ unary_test (op, arg)
-       return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE);
-     case 'R':
--      v = find_variable (arg);
--      return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE);
-+      v = find_variable_noref (arg);
-+      return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE);
-     }
-   /* We can't actually get here, but this shuts up gcc. */
-@@ -723,6 +723,7 @@ test_unop (op)
-     case 'o': case 'p': case 'r': case 's': case 't':
-     case 'u': case 'v': case 'w': case 'x': case 'z':
-     case 'G': case 'L': case 'O': case 'S': case 'N':
-+    case 'R':
-       return (1);
-     }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 0
-+#define PATCHLEVEL 1
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/101-upstream-bash44-001.patch b/utils/bash/patches/101-upstream-bash44-001.patch
new file mode 100644 (file)
index 0000000..8481ed2
--- /dev/null
@@ -0,0 +1,36 @@
+Index: bash-4.4/lib/readline/history.c
+===================================================================
+--- bash-4.4.orig/lib/readline/history.c
++++ bash-4.4/lib/readline/history.c
+@@ -57,6 +57,8 @@ extern int errno;
+ /* How big to make the_history when we first allocate it. */
+ #define DEFAULT_HISTORY_INITIAL_SIZE  502
++#define MAX_HISTORY_INITIAL_SIZE      8192
++
+ /* The number of slots to increase the_history by. */
+ #define DEFAULT_HISTORY_GROW_SIZE 50
+@@ -307,7 +309,9 @@ add_history (string)
+       if (history_size == 0)
+       {
+         if (history_stifled && history_max_entries > 0)
+-          history_size = history_max_entries + 2;
++          history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
++                              ? MAX_HISTORY_INITIAL_SIZE
++                              : history_max_entries + 2;
+         else
+           history_size = DEFAULT_HISTORY_INITIAL_SIZE;
+         the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 0
++#define PATCHLEVEL 1
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/102-upstream-bash43-002.patch b/utils/bash/patches/102-upstream-bash43-002.patch
deleted file mode 100644 (file)
index 35421e8..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-002
-
-Bug-Reported-by:       Moe Tunes <moetunes42@gmail.com>
-Bug-Reference-ID:      <53103F49.3070100@gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html
-
-Bug-Description:
-
-A change to save state while running the DEBUG trap caused pipelines to hang
-on systems which need process group synchronization while building pipelines.
-
-Patch (apply with `patch -p0'):
-
---- a/trap.c
-+++ b/trap.c
-@@ -920,7 +920,8 @@ _run_trap_internal (sig, tag)
-       subst_assign_varlist = 0;
- #if defined (JOB_CONTROL)
--      save_pipeline (1);      /* XXX only provides one save level */
-+      if (sig != DEBUG_TRAP)  /* run_debug_trap does this */
-+      save_pipeline (1);      /* XXX only provides one save level */
- #endif
-       /* If we're in a function, make sure return longjmps come here, too. */
-@@ -940,7 +941,8 @@ _run_trap_internal (sig, tag)
-       trap_exit_value = last_command_exit_value;
- #if defined (JOB_CONTROL)
--      restore_pipeline (1);
-+      if (sig != DEBUG_TRAP)  /* run_debug_trap does this */
-+      restore_pipeline (1);
- #endif
-       subst_assign_varlist = save_subst_varlist;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 1
-+#define PATCHLEVEL 2
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/102-upstream-bash44-002.patch b/utils/bash/patches/102-upstream-bash44-002.patch
new file mode 100644 (file)
index 0000000..c3da17a
--- /dev/null
@@ -0,0 +1,46 @@
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 1
++#define PATCHLEVEL 2
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/subst.c
+===================================================================
+--- bash-4.4.orig/subst.c
++++ bash-4.4/subst.c
+@@ -5931,6 +5931,7 @@ read_comsub (fd, quoted, rflag)
+   char *istring, buf[128], *bufp, *s;
+   int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul;
+   ssize_t bufn;
++  int nullbyte;
+   istring = (char *)NULL;
+   istring_index = istring_size = bufn = tflag = 0;
+@@ -5938,6 +5939,8 @@ read_comsub (fd, quoted, rflag)
+   for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++)
+     skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL;
++  nullbyte = 0;
++
+   /* Read the output of the command through the pipe.  This may need to be
+      changed to understand multibyte characters in the future. */
+   while (1)
+@@ -5956,7 +5959,11 @@ read_comsub (fd, quoted, rflag)
+       if (c == 0)
+       {
+ #if 1
+-        internal_warning ("%s", _("command substitution: ignored null byte in input"));
++        if (nullbyte == 0)
++          {
++            internal_warning ("%s", _("command substitution: ignored null byte in input"));
++            nullbyte = 1;
++          }
+ #endif
+         continue;
+       }
diff --git a/utils/bash/patches/103-upstream-bash43-003.patch b/utils/bash/patches/103-upstream-bash43-003.patch
deleted file mode 100644 (file)
index 7c9e56b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-003
-
-Bug-Reported-by:       Anatol Pomozov <anatol.pomozov@gmail.com>
-Bug-Reference-ID:      <CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html
-
-Bug-Description:
-
-When in callback mode, some readline commands can cause readline to seg
-fault by passing invalid contexts to callback functions.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/readline.c
-+++ b/lib/readline/readline.c
-@@ -744,7 +744,8 @@ _rl_dispatch_callback (cxt)
-     r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ));
-   RL_CHECK_SIGNALS ();
--  if (r == 0)                 /* success! */
-+  /* We only treat values < 0 specially to simulate recursion. */
-+  if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */
-     {
-       _rl_keyseq_chain_dispose ();
-       RL_UNSETSTATE (RL_STATE_MULTIKEY);
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 2
-+#define PATCHLEVEL 3
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/103-upstream-bash44-003.patch b/utils/bash/patches/103-upstream-bash44-003.patch
new file mode 100644 (file)
index 0000000..6d4dea3
--- /dev/null
@@ -0,0 +1,39 @@
+Index: bash-4.4/lib/glob/sm_loop.c
+===================================================================
+--- bash-4.4.orig/lib/glob/sm_loop.c
++++ bash-4.4/lib/glob/sm_loop.c
+@@ -330,6 +330,12 @@ PARSE_COLLSYM (p, vp)
+   for (pc = 0; p[pc]; pc++)
+     if (p[pc] == L('.') && p[pc+1] == L(']'))
+       break;
++   if (p[pc] == 0)
++    {
++      if (vp)
++      *vp = INVALID;
++      return (p + pc);
++    }
+    val = COLLSYM (p, pc);
+    if (vp)
+      *vp = val;
+@@ -483,6 +489,9 @@ BRACKMATCH (p, test, flags)
+       c = *p++;
+       c = FOLD (c);
++      if (c == L('\0'))
++      return ((test == L('[')) ? savep : (CHAR *)0);
++
+       if ((flags & FNM_PATHNAME) && c == L('/'))
+       /* [/] can never match when matching a pathname.  */
+       return (CHAR *)0;
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 2
++#define PATCHLEVEL 3
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/104-upstream-bash43-004.patch b/utils/bash/patches/104-upstream-bash43-004.patch
deleted file mode 100644 (file)
index 40ac35f..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-004
-
-Bug-Reported-by:       Daan van Rossum <daan@flash.uchicago.edu>
-Bug-Reference-ID:      <20140307072523.GA14250@flash.uchicago.edu>
-Bug-Reference-URL:     
-
-Bug-Description:
-
-The `.' command in vi mode cannot undo multi-key commands beginning with
-`c', `d', and `y' (command plus motion specifier).
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/readline.c
-+++ b/lib/readline/readline.c
-@@ -965,7 +965,7 @@ _rl_dispatch_subseq (key, map, got_subse
- #if defined (VI_MODE)
-   if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
-       key != ANYOTHERKEY &&
--      rl_key_sequence_length == 1 &&  /* XXX */
-+      _rl_dispatching_keymap == vi_movement_keymap &&
-       _rl_vi_textmod_command (key))
-     _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
- #endif
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 3
-+#define PATCHLEVEL 4
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/104-upstream-bash44-004.patch b/utils/bash/patches/104-upstream-bash44-004.patch
new file mode 100644 (file)
index 0000000..f1ebff6
--- /dev/null
@@ -0,0 +1,66 @@
+Index: bash-4.4/jobs.c
+===================================================================
+--- bash-4.4.orig/jobs.c
++++ bash-4.4/jobs.c
+@@ -453,6 +453,21 @@ cleanup_the_pipeline ()
+     discard_pipeline (disposer);
+ }
++void
++discard_last_procsub_child ()
++{
++  PROCESS *disposer;
++  sigset_t set, oset;
++
++  BLOCK_CHILD (set, oset);
++  disposer = last_procsub_child;
++  last_procsub_child = (PROCESS *)NULL;
++  UNBLOCK_CHILD (oset);
++
++  if (disposer)
++    discard_pipeline (disposer);
++}
++
+ struct pipeline_saver *
+ alloc_pipeline_saver ()
+ {
+Index: bash-4.4/jobs.h
+===================================================================
+--- bash-4.4.orig/jobs.h
++++ bash-4.4/jobs.h
+@@ -190,6 +190,7 @@ extern JOB **jobs;
+ extern void making_children __P((void));
+ extern void stop_making_children __P((void));
+ extern void cleanup_the_pipeline __P((void));
++extern void discard_last_procsub_child __P((void));
+ extern void save_pipeline __P((int));
+ extern PROCESS *restore_pipeline __P((int));
+ extern void start_pipeline __P((void));
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 3
++#define PATCHLEVEL 4
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/subst.c
+===================================================================
+--- bash-4.4.orig/subst.c
++++ bash-4.4/subst.c
+@@ -5808,10 +5808,7 @@ process_substitute (string, open_for_rea
+     {
+ #if defined (JOB_CONTROL)
+       if (last_procsub_child)
+-      {
+-        discard_pipeline (last_procsub_child);
+-        last_procsub_child = (PROCESS *)NULL;
+-      }
++      discard_last_procsub_child ();
+       last_procsub_child = restore_pipeline (0);
+ #endif
diff --git a/utils/bash/patches/105-upstream-bash43-005.patch b/utils/bash/patches/105-upstream-bash43-005.patch
deleted file mode 100644 (file)
index 1cc5473..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-005
-
-Bug-Reported-by:       David Sines <dave.gma@googlemail.com>
-Bug-Reference-ID:      <CAO3BAa_CK_Rgkhdfzs+NJ4KFYdB9qW3pvXQK0xLCi6GMmDU8bw@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html
-
-Bug-Description:
-
-When in Posix mode, bash did not correctly interpret the ANSI-C-style
-$'...' quoting mechanism when performing pattern substitution word
-expansions within double quotes.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -3398,7 +3398,7 @@ parse_matched_pair (qc, open, close, len
-          within a double-quoted ${...} construct "an even number of
-          unescaped double-quotes or single-quotes, if any, shall occur." */
-       /* This was changed in Austin Group Interp 221 */
--      if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
-+      if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
-       continue;
-       /* Could also check open == '`' if we want to parse grouping constructs
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -5710,7 +5710,7 @@ parse_matched_pair (qc, open, close, len
-          within a double-quoted ${...} construct "an even number of
-          unescaped double-quotes or single-quotes, if any, shall occur." */
-       /* This was changed in Austin Group Interp 221 */
--      if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
-+      if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
-       continue;
-       /* Could also check open == '`' if we want to parse grouping constructs
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 4
-+#define PATCHLEVEL 5
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/105-upstream-bash44-005.patch b/utils/bash/patches/105-upstream-bash44-005.patch
new file mode 100644 (file)
index 0000000..f9fb018
--- /dev/null
@@ -0,0 +1,29 @@
+Index: bash-4.4/builtins/evalstring.c
+===================================================================
+--- bash-4.4.orig/builtins/evalstring.c
++++ bash-4.4/builtins/evalstring.c
+@@ -104,12 +104,9 @@ should_suppress_fork (command)
+         running_trap == 0 &&
+         *bash_input.location.string == '\0' &&
+         command->type == cm_simple &&
+-#if 0
+         signal_is_trapped (EXIT_TRAP) == 0 &&
+         signal_is_trapped (ERROR_TRAP) == 0 &&
+-#else
+         any_signals_trapped () < 0 &&
+-#endif
+         command->redirects == 0 && command->value.Simple->redirects == 0 &&
+         ((command->flags & CMD_TIME_PIPELINE) == 0) &&
+         ((command->flags & CMD_INVERT_RETURN) == 0));
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 4
++#define PATCHLEVEL 5
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/106-upstream-bash43-006.patch b/utils/bash/patches/106-upstream-bash43-006.patch
deleted file mode 100644 (file)
index c5f52b1..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-006
-
-Bug-Reported-by:       Eduardo A . Bustamante Lopez <dualbus@gmail.com>
-Bug-Reference-ID:      <20140228170013.GA16015@dualbus.me>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html
-
-Bug-Description:
-
-A shell that started with job control active but was not interactive left
-the terminal in the wrong process group when exiting, causing its parent
-shell to get a stop signal when it attempted to read from the terminal.
-
-Patch (apply with `patch -p0'):
-
---- a/jobs.c
-+++ b/jobs.c
-@@ -4374,7 +4374,7 @@ without_job_control ()
- void
- end_job_control ()
- {
--  if (interactive_shell)              /* XXX - should it be interactive? */
-+  if (interactive_shell || job_control)               /* XXX - should it be just job_control? */
-     {
-       terminate_stopped_jobs ();
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 5
-+#define PATCHLEVEL 6
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/106-upstream-bash44-006.patch b/utils/bash/patches/106-upstream-bash44-006.patch
new file mode 100644 (file)
index 0000000..a232bff
--- /dev/null
@@ -0,0 +1,37 @@
+Index: bash-4.4/builtins/pushd.def
+===================================================================
+--- bash-4.4.orig/builtins/pushd.def
++++ bash-4.4/builtins/pushd.def
+@@ -365,7 +365,7 @@ popd_builtin (list)
+       break;
+     }
+-  if (which > directory_list_offset || (directory_list_offset == 0 && which == 0))
++  if (which > directory_list_offset || (which < -directory_list_offset) || (directory_list_offset == 0 && which == 0))
+     {
+       pushd_error (directory_list_offset, which_word ? which_word : "");
+       return (EXECUTION_FAILURE);
+@@ -387,6 +387,11 @@ popd_builtin (list)
+        remove that directory from the list and shift the remainder
+        of the list into place. */
+       i = (direction == '+') ? directory_list_offset - which : which;
++      if (i < 0 || i > directory_list_offset)
++      {
++        pushd_error (directory_list_offset, which_word ? which_word : "");
++        return (EXECUTION_FAILURE);
++      }
+       free (pushd_directory_list[i]);
+       directory_list_offset--;
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 5
++#define PATCHLEVEL 6
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/107-upstream-bash43-007.patch b/utils/bash/patches/107-upstream-bash43-007.patch
deleted file mode 100644 (file)
index 8578bd4..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-007
-
-Bug-Reported-by:       geir.hauge@gmail.com
-Bug-Reference-ID:      <20140318093650.B181C1C5B0B@gina.itea.ntnu.no>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html
-
-Bug-Description:
-
-Using compound assignments for associative arrays like
-
-assoc=( [x]= [y]=bar )
-
-left the value corresponding to the key `x' NULL.  This caused subsequent
-lookups to interpret it as unset.
-
-Patch (apply with `patch -p0'):
-
---- a/arrayfunc.c
-+++ b/arrayfunc.c
-@@ -597,6 +597,11 @@ assign_compound_array_list (var, nlist,
-       if (assoc_p (var))
-       {
-         val = expand_assignment_string_to_string (val, 0);
-+        if (val == 0)
-+          {
-+            val = (char *)xmalloc (1);
-+            val[0] = '\0';    /* like do_assignment_internal */
-+          }
-         free_val = 1;
-       }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 6
-+#define PATCHLEVEL 7
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/107-upstream-bash44-007.patch b/utils/bash/patches/107-upstream-bash44-007.patch
new file mode 100644 (file)
index 0000000..3e2973d
--- /dev/null
@@ -0,0 +1,100 @@
+Index: bash-4.4/bashline.c
+===================================================================
+--- bash-4.4.orig/bashline.c
++++ bash-4.4/bashline.c
+@@ -142,7 +142,7 @@ static int executable_completion __P((co
+ static rl_icppfunc_t *save_directory_hook __P((void));
+ static void restore_directory_hook __P((rl_icppfunc_t));
+-static int directory_exists __P((const char *));
++static int directory_exists __P((const char *, int));
+ static void cleanup_expansion_error __P((void));
+ static void maybe_make_readline_line __P((char *));
+@@ -3102,18 +3102,20 @@ restore_directory_hook (hookf)
+     rl_directory_rewrite_hook = hookf;
+ }
+-/* Check whether not the (dequoted) version of DIRNAME, with any trailing slash
+-   removed, exists. */
++/* Check whether not DIRNAME, with any trailing slash removed, exists.  If
++   SHOULD_DEQUOTE is non-zero, we dequote the directory name first. */
+ static int
+-directory_exists (dirname)
++directory_exists (dirname, should_dequote)
+      const char *dirname;
++     int should_dequote;
+ {
+   char *new_dirname;
+   int dirlen, r;
+   struct stat sb;
+-  /* First, dequote the directory name */
+-  new_dirname = bash_dequote_filename ((char *)dirname, rl_completion_quote_character);
++  /* We save the string and chop the trailing slash because stat/lstat behave
++     inconsistently if one is present. */
++  new_dirname = should_dequote ? bash_dequote_filename ((char *)dirname, rl_completion_quote_character) : savestring (dirname);
+   dirlen = STRLEN (new_dirname);
+   if (new_dirname[dirlen - 1] == '/')
+     new_dirname[dirlen - 1] = '\0';
+@@ -3145,7 +3147,7 @@ bash_filename_stat_hook (dirname)
+   else if (t = mbschr (local_dirname, '`'))   /* XXX */
+     should_expand_dirname = '`';
+-  if (should_expand_dirname && directory_exists (local_dirname))
++  if (should_expand_dirname && directory_exists (local_dirname, 0))
+     should_expand_dirname = 0;
+   
+   if (should_expand_dirname)  
+@@ -3155,7 +3157,7 @@ bash_filename_stat_hook (dirname)
+        have to worry about restoring this setting. */
+       global_nounset = unbound_vars_is_error;
+       unbound_vars_is_error = 0;
+-      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE);      /* does the right thing */
++      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE);  /* does the right thing */
+       unbound_vars_is_error = global_nounset;
+       if (wl)
+       {
+@@ -3244,13 +3246,13 @@ bash_directory_completion_hook (dirname)
+       should_expand_dirname = '`';
+     }
+-  if (should_expand_dirname && directory_exists (local_dirname))
++  if (should_expand_dirname && directory_exists (local_dirname, 1))
+     should_expand_dirname = 0;
+   if (should_expand_dirname)  
+     {
+       new_dirname = savestring (local_dirname);
+-      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE);      /* does the right thing */
++      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE);  /* does the right thing */
+       if (wl)
+       {
+         *dirname = string_list (wl);
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 6
++#define PATCHLEVEL 7
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/subst.c
+===================================================================
+--- bash-4.4.orig/subst.c
++++ bash-4.4/subst.c
+@@ -9458,6 +9458,10 @@ add_twochars:
+               tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS);        /* affects $@ */
+             if (word->flags & W_COMPLETE)
+               tword->flags |= W_COMPLETE;     /* for command substitutions */
++            if (word->flags & W_NOCOMSUB)
++              tword->flags |= W_NOCOMSUB;
++            if (word->flags & W_NOPROCSUB)
++              tword->flags |= W_NOPROCSUB;
+             temp = (char *)NULL;
diff --git a/utils/bash/patches/108-upstream-bash43-008.patch b/utils/bash/patches/108-upstream-bash43-008.patch
deleted file mode 100644 (file)
index 2402021..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-008
-
-Bug-Reported-by:       Stephane Chazelas <stephane.chazelas@gmail.com>
-Bug-Reference-ID:      <20140318135901.GB22158@chaz.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html
-
-Bug-Description:
-
-Some extended glob patterns incorrectly matched filenames with a leading
-dot, regardless of the setting of the `dotglob' option.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/glob/gmisc.c
-+++ b/lib/glob/gmisc.c
-@@ -210,6 +210,7 @@ extglob_pattern_p (pat)
-     case '+':
-     case '!':
-     case '@':
-+    case '?':
-       return (pat[1] == LPAREN);
-     default:
-       return 0;
---- a/lib/glob/glob.c
-+++ b/lib/glob/glob.c
-@@ -179,42 +179,50 @@ extglob_skipname (pat, dname, flags)
-      char *pat, *dname;
-      int flags;
- {
--  char *pp, *pe, *t;
--  int n, r;
-+  char *pp, *pe, *t, *se;
-+  int n, r, negate;
-+  negate = *pat == '!';
-   pp = pat + 2;
--  pe = pp + strlen (pp) - 1;  /*(*/
--  if (*pe != ')')
--    return 0;
--  if ((t = strchr (pp, '|')) == 0)    /* easy case first */
-+  se = pp + strlen (pp) - 1;          /* end of string */
-+  pe = glob_patscan (pp, se, 0);      /* end of extglob pattern (( */
-+  /* we should check for invalid extglob pattern here */
-+  /* if pe != se we have more of the pattern at the end of the extglob
-+     pattern. Check the easy case first ( */
-+  if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
-     {
-       *pe = '\0';
-+#if defined (HANDLE_MULTIBYTE)
-+      r = mbskipname (pp, dname, flags);
-+#else
-       r = skipname (pp, dname, flags);        /*(*/
-+#endif
-       *pe = ')';
-       return r;
-     }
-+
-+  /* check every subpattern */
-   while (t = glob_patscan (pp, pe, '|'))
-     {
-       n = t[-1];
-       t[-1] = '\0';
-+#if defined (HANDLE_MULTIBYTE)
-+      r = mbskipname (pp, dname, flags);
-+#else
-       r = skipname (pp, dname, flags);
-+#endif
-       t[-1] = n;
-       if (r == 0)     /* if any pattern says not skip, we don't skip */
-         return r;
-       pp = t;
-     } /*(*/
--  if (pp == pe)               /* glob_patscan might find end of pattern */
-+  /* glob_patscan might find end of pattern */
-+  if (pp == se)
-     return r;
--  *pe = '\0';
--#  if defined (HANDLE_MULTIBYTE)
--  r = mbskipname (pp, dname, flags);  /*(*/
--#  else
--  r = skipname (pp, dname, flags);    /*(*/
--#  endif
--  *pe = ')';
--  return r;
-+  /* but if it doesn't then we didn't match a leading dot */
-+  return 0;
- }
- #endif
-@@ -277,20 +285,23 @@ wextglob_skipname (pat, dname, flags)
-      int flags;
- {
- #if EXTENDED_GLOB
--  wchar_t *pp, *pe, *t, n;
--  int r;
-+  wchar_t *pp, *pe, *t, n, *se;
-+  int r, negate;
-+  negate = *pat == L'!';
-   pp = pat + 2;
--  pe = pp + wcslen (pp) - 1;  /*(*/
--  if (*pe != L')')
--    return 0;
--  if ((t = wcschr (pp, L'|')) == 0)
-+  se = pp + wcslen (pp) - 1;  /*(*/
-+  pe = glob_patscan_wc (pp, se, 0);
-+
-+  if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0)
-     {
-       *pe = L'\0';
-       r = wchkname (pp, dname); /*(*/
-       *pe = L')';
-       return r;
-     }
-+
-+  /* check every subpattern */
-   while (t = glob_patscan_wc (pp, pe, '|'))
-     {
-       n = t[-1];
-@@ -305,10 +316,8 @@ wextglob_skipname (pat, dname, flags)
-   if (pp == pe)               /* glob_patscan_wc might find end of pattern */
-     return r;
--  *pe = L'\0';
--  r = wchkname (pp, dname);   /*(*/
--  *pe = L')';
--  return r;
-+  /* but if it doesn't then we didn't match a leading dot */
-+  return 0;
- #else
-   return (wchkname (pat, dname));
- #endif
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 7
-+#define PATCHLEVEL 8
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/108-upstream-bash44-008.patch b/utils/bash/patches/108-upstream-bash44-008.patch
new file mode 100644 (file)
index 0000000..9503b05
--- /dev/null
@@ -0,0 +1,58 @@
+Index: bash-4.4/expr.c
+===================================================================
+--- bash-4.4.orig/expr.c
++++ bash-4.4/expr.c
+@@ -578,24 +578,23 @@ expcond ()
+   rval = cval = explor ();
+   if (curtok == QUES)         /* found conditional expr */
+     {
+-      readtok ();
+-      if (curtok == 0 || curtok == COL)
+-      evalerror (_("expression expected"));
+       if (cval == 0)
+       {
+         set_noeval = 1;
+         noeval++;
+       }
++      readtok ();
++      if (curtok == 0 || curtok == COL)
++      evalerror (_("expression expected"));
++
+       val1 = EXP_HIGHEST ();
+       if (set_noeval)
+       noeval--;
+       if (curtok != COL)
+       evalerror (_("`:' expected for conditional expression"));
+-      readtok ();
+-      if (curtok == 0)
+-      evalerror (_("expression expected"));
++
+       set_noeval = 0;
+       if (cval)
+       {
+@@ -603,7 +602,11 @@ expcond ()
+         noeval++;
+       }
++      readtok ();
++      if (curtok == 0)
++      evalerror (_("expression expected"));
+       val2 = expcond ();
++
+       if (set_noeval)
+       noeval--;
+       rval = cval ? val1 : val2;
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 7
++#define PATCHLEVEL 8
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/109-upstream-bash43-009.patch b/utils/bash/patches/109-upstream-bash43-009.patch
deleted file mode 100644 (file)
index f222bd6..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-009
-
-Bug-Reported-by:       Matthias Klose <doko@debian.org>
-Bug-Reference-ID:      <53346FC8.6090005@debian.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html
-
-Bug-Description:
-
-There is a problem with unsigned sign extension when attempting to reallocate
-the input line when it is fewer than 3 characters long and there has been a
-history expansion.  The sign extension causes the shell to not reallocate the
-line, which results in a segmentation fault when it writes past the end.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -2424,7 +2424,7 @@ shell_getc (remove_quoted_newline)
-        not already end in an EOF character.  */
-       if (shell_input_line_terminator != EOF)
-       {
--        if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
-+        if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
-           shell_input_line = (char *)xrealloc (shell_input_line,
-                                       1 + (shell_input_line_size += 2));
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -4736,7 +4736,7 @@ shell_getc (remove_quoted_newline)
-        not already end in an EOF character.  */
-       if (shell_input_line_terminator != EOF)
-       {
--        if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
-+        if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
-           shell_input_line = (char *)xrealloc (shell_input_line,
-                                       1 + (shell_input_line_size += 2));
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 8
-+#define PATCHLEVEL 9
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/109-upstream-bash44-009.patch b/utils/bash/patches/109-upstream-bash44-009.patch
new file mode 100644 (file)
index 0000000..580d9a2
--- /dev/null
@@ -0,0 +1,67 @@
+Index: bash-4.4/lib/readline/history.c
+===================================================================
+--- bash-4.4.orig/lib/readline/history.c
++++ bash-4.4/lib/readline/history.c
+@@ -279,6 +279,7 @@ add_history (string)
+      const char *string;
+ {
+   HIST_ENTRY *temp;
++  int new_length;
+   if (history_stifled && (history_length == history_max_entries))
+     {
+@@ -295,13 +296,9 @@ add_history (string)
+       /* Copy the rest of the entries, moving down one slot.  Copy includes
+        trailing NULL.  */
+-#if 0
+-      for (i = 0; i < history_length; i++)
+-      the_history[i] = the_history[i + 1];
+-#else
+       memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *));
+-#endif
++      new_length = history_length;
+       history_base++;
+     }
+   else
+@@ -315,7 +312,7 @@ add_history (string)
+         else
+           history_size = DEFAULT_HISTORY_INITIAL_SIZE;
+         the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
+-        history_length = 1;
++        new_length = 1;
+       }
+       else
+       {
+@@ -325,14 +322,15 @@ add_history (string)
+             the_history = (HIST_ENTRY **)
+               xrealloc (the_history, history_size * sizeof (HIST_ENTRY *));
+           }
+-        history_length++;
++        new_length = history_length + 1;
+       }
+     }
+   temp = alloc_history_entry ((char *)string, hist_inittime ());
+-  the_history[history_length] = (HIST_ENTRY *)NULL;
+-  the_history[history_length - 1] = temp;
++  the_history[new_length] = (HIST_ENTRY *)NULL;
++  the_history[new_length - 1] = temp;
++  history_length = new_length;
+ }
+ /* Change the time stamp of the most recent history entry to STRING. */
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 8
++#define PATCHLEVEL 9
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/110-upstream-bash43-010.patch b/utils/bash/patches/110-upstream-bash43-010.patch
deleted file mode 100644 (file)
index 22d9f1b..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-010
-
-Bug-Reported-by:       Albert Shih <Albert.Shih@obspm.fr>
-Bug-Reference-ID:      Wed, 5 Mar 2014 23:01:40 +0100
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-This patch changes the behavior of programmable completion to compensate
-for two assumptions made by the bash-completion package.  Bash-4.3 changed
-to dequote the argument to programmable completion only under certain
-circumstances, to make the behavior of compgen more consistent when run
-from the command line -- closer to the behavior when run by a shell function
-run as part of programmable completion.  Bash-completion can pass quoted
-arguments to compgen when the original word to be completed was not quoted,
-expecting programmable completion to dequote the word before attempting
-completion.
-
-This patch fixes two cases:
-
-1.  An empty string that bash-completion passes to compgen as a quoted null
-    string ('').
-
-2.  An unquoted word that bash-completion quotes using single quotes or
-    backslashes before passing it to compgen.
-
-In these cases, since readline did not detect a quote character in the original
-word to be completed, bash-4.3 
-
---- a/externs.h
-+++ b/externs.h
-@@ -324,6 +324,7 @@ extern char *sh_un_double_quote __P((cha
- extern char *sh_backslash_quote __P((char *, const char *, int));
- extern char *sh_backslash_quote_for_double_quotes __P((char *));
- extern int sh_contains_shell_metas __P((char *));
-+extern int sh_contains_quotes __P((char *));
- /* declarations for functions defined in lib/sh/spell.c */
- extern int spname __P((char *, char *));
---- a/lib/sh/shquote.c
-+++ b/lib/sh/shquote.c
-@@ -311,3 +311,17 @@ sh_contains_shell_metas (string)
-   return (0);
- }
-+
-+int
-+sh_contains_quotes (string)
-+     char *string;
-+{
-+  char *s;
-+
-+  for (s = string; s && *s; s++)
-+    {
-+      if (*s == '\'' || *s == '"' || *s == '\\')
-+      return 1;
-+    }
-+  return 0;
-+}
---- a/pcomplete.c
-+++ b/pcomplete.c
-@@ -183,6 +183,7 @@ ITEMLIST it_variables = { LIST_DYNAMIC,
- COMPSPEC *pcomp_curcs;
- const char *pcomp_curcmd;
-+const char *pcomp_curtxt;
- #ifdef DEBUG
- /* Debugging code */
-@@ -753,6 +754,32 @@ pcomp_filename_completion_function (text
-            quoted strings. */
-         dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
-       }
-+      /* Intended to solve a mismatched assumption by bash-completion.  If
-+       the text to be completed is empty, but bash-completion turns it into
-+       a quoted string ('') assuming that this code will dequote it before
-+       calling readline, do the dequoting. */
-+      else if (iscompgen && iscompleting &&
-+             pcomp_curtxt && *pcomp_curtxt == 0 &&
-+             text && (*text == '\'' || *text == '"') && text[1] == text[0] && text[2] == 0 && 
-+             rl_filename_dequoting_function)
-+      dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
-+      /* Another mismatched assumption by bash-completion.  If compgen is being
-+               run as part of bash-completion, and the argument to compgen is not
-+               the same as the word originally passed to the programmable completion
-+               code, dequote the argument if it has quote characters.  It's an
-+               attempt to detect when bash-completion is quoting its filename
-+               argument before calling compgen. */
-+      /* We could check whether gen_shell_function_matches is in the call
-+       stack by checking whether the gen-shell-function-matches tag is in
-+       the unwind-protect stack, but there's no function to do that yet.
-+       We could simply check whether we're executing in a function by
-+       checking variable_context, and may end up doing that. */
-+      else if (iscompgen && iscompleting && rl_filename_dequoting_function &&
-+             pcomp_curtxt && text &&
-+             STREQ (pcomp_curtxt, text) == 0 &&
-+             variable_context &&
-+             sh_contains_quotes (text))       /* guess */
-+      dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
-       else
-       dfn = savestring (text);
-     }
-@@ -1522,7 +1549,7 @@ gen_progcomp_completions (ocmd, cmd, wor
-      COMPSPEC **lastcs;
- {
-   COMPSPEC *cs, *oldcs;
--  const char *oldcmd;
-+  const char *oldcmd, *oldtxt;
-   STRINGLIST *ret;
-   cs = progcomp_search (ocmd);
-@@ -1545,14 +1572,17 @@ gen_progcomp_completions (ocmd, cmd, wor
-   oldcs = pcomp_curcs;
-   oldcmd = pcomp_curcmd;
-+  oldtxt = pcomp_curtxt;
-   pcomp_curcs = cs;
-   pcomp_curcmd = cmd;
-+  pcomp_curtxt = word;
-   ret = gen_compspec_completions (cs, cmd, word, start, end, foundp);
-   pcomp_curcs = oldcs;
-   pcomp_curcmd = oldcmd;
-+  pcomp_curtxt = oldtxt;
-   /* We need to conditionally handle setting *retryp here */
-   if (retryp)
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 9
-+#define PATCHLEVEL 10
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/110-upstream-bash44-010.patch b/utils/bash/patches/110-upstream-bash44-010.patch
new file mode 100644 (file)
index 0000000..1636b76
--- /dev/null
@@ -0,0 +1,26 @@
+Index: bash-4.4/builtins/read.def
+===================================================================
+--- bash-4.4.orig/builtins/read.def
++++ bash-4.4/builtins/read.def
+@@ -181,7 +181,8 @@ read_builtin (list)
+      WORD_LIST *list;
+ {
+   register char *varname;
+-  int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
++  int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
++  volatile int i;
+   int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul;
+   int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno;
+   unsigned int tmsec, tmusec;
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 9
++#define PATCHLEVEL 10
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/111-upstream-bash43-011.patch b/utils/bash/patches/111-upstream-bash43-011.patch
deleted file mode 100644 (file)
index b4c181a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-011
-
-Bug-Reported-by:       Egmont Koblinger <egmont@gmail.com>
-Bug-Reference-ID:      <CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html
-
-Bug-Description:
-
-The signal handling changes to bash and readline (to avoid running any code
-in a signal handler context) cause the cursor to be placed on the wrong
-line of a multi-line command after a ^C interrupts editing.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/display.c
-+++ b/lib/readline/display.c
-@@ -2677,7 +2677,8 @@ _rl_clean_up_for_exit ()
- {
-   if (_rl_echoing_p)
-     {
--      _rl_move_vert (_rl_vis_botlin);
-+      if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */
-+      _rl_move_vert (_rl_vis_botlin);
-       _rl_vis_botlin = 0;
-       fflush (rl_outstream);
-       rl_restart_output (1, 0);
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 10
-+#define PATCHLEVEL 11
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/111-upstream-bash44-011.patch b/utils/bash/patches/111-upstream-bash44-011.patch
new file mode 100644 (file)
index 0000000..b6ea030
--- /dev/null
@@ -0,0 +1,26 @@
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 10
++#define PATCHLEVEL 11
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/sig.c
+===================================================================
+--- bash-4.4.orig/sig.c
++++ bash-4.4/sig.c
+@@ -585,7 +585,8 @@ termsig_handler (sig)
+ #if defined (JOB_CONTROL)
+   if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
+     hangup_all_jobs ();
+-  end_job_control ();
++  if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0)
++    end_job_control ();
+ #endif /* JOB_CONTROL */
+ #if defined (PROCESS_SUBSTITUTION)
diff --git a/utils/bash/patches/112-upstream-bash43-012.patch b/utils/bash/patches/112-upstream-bash43-012.patch
deleted file mode 100644 (file)
index 8fd2ea6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-012
-
-Bug-Reported-by:       Eduardo A. Bustamante López<dualbus@gmail.com>
-Bug-Reference-ID:      <5346B54C.4070205@case.edu>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.html
-
-Bug-Description:
-
-When a SIGCHLD trap runs a command containing a shell builtin while
-a script is running `wait' to wait for all running children to complete,
-the SIGCHLD trap will not be run once for each child that terminates.
-
-Patch (apply with `patch -p0'):
-
---- a/jobs.c
-+++ b/jobs.c
-@@ -3597,6 +3597,7 @@ run_sigchld_trap (nchild)
-   unwind_protect_int (jobs_list_frozen);
-   unwind_protect_pointer (the_pipeline);
-   unwind_protect_pointer (subst_assign_varlist);
-+  unwind_protect_pointer (this_shell_builtin);
-   /* We have to add the commands this way because they will be run
-      in reverse order of adding.  We don't want maybe_set_sigchld_trap ()
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 11
-+#define PATCHLEVEL 12
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/112-upstream-bash44-012.patch b/utils/bash/patches/112-upstream-bash44-012.patch
new file mode 100644 (file)
index 0000000..83d239e
--- /dev/null
@@ -0,0 +1,106 @@
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 11
++#define PATCHLEVEL 12
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/subst.c
+===================================================================
+--- bash-4.4.orig/subst.c
++++ bash-4.4/subst.c
+@@ -2825,11 +2825,15 @@ list_string (string, separators, quoted)
+ /* Parse a single word from STRING, using SEPARATORS to separate fields.
+    ENDPTR is set to the first character after the word.  This is used by
+-   the `read' builtin.  This is never called with SEPARATORS != $IFS;
+-   it should be simplified.
++   the `read' builtin.
++   
++   This is never called with SEPARATORS != $IFS, and takes advantage of that.
+    XXX - this function is very similar to list_string; they should be
+        combined - XXX */
++
++#define islocalsep(c) (local_cmap[(unsigned char)(c)] != 0)
++
+ char *
+ get_word_from_string (stringp, separators, endptr)
+      char **stringp, *separators, **endptr;
+@@ -2837,6 +2841,7 @@ get_word_from_string (stringp, separator
+   register char *s;
+   char *current_word;
+   int sindex, sh_style_split, whitesep, xflags;
++  unsigned char local_cmap[UCHAR_MAX+1];      /* really only need single-byte chars here */
+   size_t slen;
+   if (!stringp || !*stringp || !**stringp)
+@@ -2846,20 +2851,23 @@ get_word_from_string (stringp, separator
+                                separators[1] == '\t' &&
+                                separators[2] == '\n' &&
+                                separators[3] == '\0';
+-  for (xflags = 0, s = ifs_value; s && *s; s++)
++  memset (local_cmap, '\0', sizeof (local_cmap));
++  for (xflags = 0, s = separators; s && *s; s++)
+     {
+       if (*s == CTLESC) xflags |= SX_NOCTLESC;
+       if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL;
++      local_cmap[(unsigned char)*s] = 1;      /* local charmap of separators */
+     }
+   s = *stringp;
+   slen = 0;
+   /* Remove sequences of whitespace at the beginning of STRING, as
+-     long as those characters appear in IFS. */
+-  if (sh_style_split || !separators || !*separators)
++     long as those characters appear in SEPARATORS.  This happens if
++     SEPARATORS == $' \t\n' or if IFS is unset. */
++  if (sh_style_split || separators == 0)
+     {
+-      for (; *s && spctabnl (*s) && isifs (*s); s++);
++      for (; *s && spctabnl (*s) && islocalsep (*s); s++);
+       /* If the string is nothing but whitespace, update it and return. */
+       if (!*s)
+@@ -2878,9 +2886,9 @@ get_word_from_string (stringp, separator
+      This obeys the field splitting rules in Posix.2. */
+   sindex = 0;
+-  /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim
+-     unless multibyte chars are possible. */
+-  slen = (MB_CUR_MAX > 1) ? STRLEN (s) : 1;
++  /* Don't need string length in ADVANCE_CHAR unless multibyte chars are
++     possible, but need it in string_extract_verbatim for bounds checking */
++  slen = STRLEN (s);
+   current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags);
+   /* Set ENDPTR to the first character after the end of the word. */
+@@ -2899,19 +2907,19 @@ get_word_from_string (stringp, separator
+   /* Now skip sequences of space, tab, or newline characters if they are
+      in the list of separators. */
+-  while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
++  while (s[sindex] && spctabnl (s[sindex]) && islocalsep (s[sindex]))
+     sindex++;
+   /* If the first separator was IFS whitespace and the current character is
+      a non-whitespace IFS character, it should be part of the current field
+      delimiter, not a separate delimiter that would result in an empty field.
+      Look at POSIX.2, 3.6.5, (3)(b). */
+-  if (s[sindex] && whitesep && isifs (s[sindex]) && !spctabnl (s[sindex]))
++  if (s[sindex] && whitesep && islocalsep (s[sindex]) && !spctabnl (s[sindex]))
+     {
+       sindex++;
+       /* An IFS character that is not IFS white space, along with any adjacent
+        IFS white space, shall delimit a field. */
+-      while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
++      while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex]))
+       sindex++;
+     }
diff --git a/utils/bash/patches/113-upstream-bash43-013.patch b/utils/bash/patches/113-upstream-bash43-013.patch
deleted file mode 100644 (file)
index 63c6c1e..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-013
-
-Bug-Reported-by:       <Trond.Endrestol@ximalas.info>
-Bug-Reference-ID:      <alpine.BSF.2.03.1404192114310.1973@enterprise.ximalas.info>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html
-
-Bug-Description:
-
-Using reverse-i-search when horizontal scrolling is enabled does not redisplay
-the entire line containing the successful search results.
-
-Patch (apply with `patch -p0'):
---- a/lib/readline/display.c
-+++ b/lib/readline/display.c
-@@ -1637,7 +1637,7 @@ update_line (old, new, current_line, oma
-   /* If we are changing the number of invisible characters in a line, and
-      the spot of first difference is before the end of the invisible chars,
-      lendiff needs to be adjusted. */
--  if (current_line == 0 && !_rl_horizontal_scroll_mode &&
-+  if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */
-       current_invis_chars != visible_wrap_offset)
-     {
-       if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-@@ -1825,8 +1825,13 @@ update_line (old, new, current_line, oma
-             else
-               _rl_last_c_pos += bytes_to_insert;
-+            /* XXX - we only want to do this if we are at the end of the line
-+               so we move there with _rl_move_cursor_relative */
-             if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
--              goto clear_rest_of_line;
-+              {
-+                _rl_move_cursor_relative (ne-new, new);
-+                goto clear_rest_of_line;
-+              }
-           }
-       }
-       /* Otherwise, print over the existing material. */
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 12
-+#define PATCHLEVEL 13
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/114-upstream-bash43-014.patch b/utils/bash/patches/114-upstream-bash43-014.patch
deleted file mode 100644 (file)
index 99e16b9..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-014
-
-Bug-Reported-by:       Greg Wooledge <wooledg@eeg.ccf.org>
-Bug-Reference-ID:      <20140418202123.GB7660@eeg.ccf.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html
-
-Bug-Description:
-
-Under certain circumstances, $@ is expanded incorrectly in contexts where
-word splitting is not performed.
-
-Patch (apply with `patch -p0'):
---- a/subst.c
-+++ b/subst.c
-@@ -3248,8 +3248,10 @@ cond_expand_word (w, special)
-   if (w->word == 0 || w->word[0] == '\0')
-     return ((char *)NULL);
-+  expand_no_split_dollar_star = 1;
-   w->flags |= W_NOSPLIT2;
-   l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
-+  expand_no_split_dollar_star = 0;
-   if (l)
-     {
-       if (special == 0)                       /* LHS */
-@@ -7847,6 +7849,10 @@ param_expand (string, sindex, quoted, ex
-        We also want to make sure that splitting is done no matter what --
-        according to POSIX.2, this expands to a list of the positional
-        parameters no matter what IFS is set to. */
-+      /* XXX - what to do when in a context where word splitting is not
-+       performed? Even when IFS is not the default, posix seems to imply
-+       that we behave like unquoted $* ?  Maybe we should use PF_NOSPLIT2
-+       here. */
-       temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted);
-       tflag |= W_DOLLARAT;
-@@ -8816,6 +8822,7 @@ finished_with_string:
-   else
-     {
-       char *ifs_chars;
-+      char *tstring;
-       ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
-@@ -8830,11 +8837,36 @@ finished_with_string:
-        regardless of what else has happened to IFS since the expansion. */
-       if (split_on_spaces)
-       list = list_string (istring, " ", 1);   /* XXX quoted == 1? */
-+      /* If we have $@ (has_dollar_at != 0) and we are in a context where we
-+       don't want to split the result (W_NOSPLIT2), and we are not quoted,
-+       we have already separated the arguments with the first character of
-+       $IFS.  In this case, we want to return a list with a single word
-+       with the separator possibly replaced with a space (it's what other
-+       shells seem to do).
-+       quoted_dollar_at is internal to this function and is set if we are
-+       passed an argument that is unquoted (quoted == 0) but we encounter a
-+       double-quoted $@ while expanding it. */
-+      else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2))
-+      {
-+        /* Only split and rejoin if we have to */
-+        if (*ifs_chars && *ifs_chars != ' ')
-+          {
-+            list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
-+            tstring = string_list (list);
-+          }
-+        else
-+          tstring = istring;
-+        tword = make_bare_word (tstring);
-+        if (tstring != istring)
-+          free (tstring);
-+        goto set_word_flags;
-+      }
-       else if (has_dollar_at && ifs_chars)
-       list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
-       else
-       {
-         tword = make_bare_word (istring);
-+set_word_flags:
-         if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
-           tword->flags |= W_QUOTED;
-         if (word->flags & W_ASSIGNMENT)
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 13
-+#define PATCHLEVEL 14
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/115-upstream-bash43-015.patch b/utils/bash/patches/115-upstream-bash43-015.patch
deleted file mode 100644 (file)
index ae8be2d..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-015
-
-Bug-Reported-by:       Clark Wang <dearvoid@gmail.com>
-Bug-Reference-ID:      <CADv8-og2TOSoabXeNVXVGaXN3tEMHnYVq1rwOLe5meaRPSGRig@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.html
-
-Bug-Description:
-
-When completing directory names, the directory name is dequoted twice.
-This causes problems for directories with single and double quotes in
-their names.
-
-Patch (apply with `patch -p0'):
---- a/bashline.c
-+++ b/bashline.c
-@@ -4167,9 +4167,16 @@ bash_directory_completion_matches (text)
-   int qc;
-   qc = rl_dispatching ? rl_completion_quote_character : 0;  
--  dfn = bash_dequote_filename ((char *)text, qc);
-+  /* If rl_completion_found_quote != 0, rl_completion_matches will call the
-+     filename dequoting function, causing the directory name to be dequoted
-+     twice. */
-+  if (rl_dispatching && rl_completion_found_quote == 0)
-+    dfn = bash_dequote_filename ((char *)text, qc);
-+  else
-+    dfn = (char *)text;
-   m1 = rl_completion_matches (dfn, rl_filename_completion_function);
--  free (dfn);
-+  if (dfn != text)
-+    free (dfn);
-   if (m1 == 0 || m1[0] == 0)
-     return m1;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 14
-+#define PATCHLEVEL 15
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/116-upstream-bash43-016.patch b/utils/bash/patches/116-upstream-bash43-016.patch
deleted file mode 100644 (file)
index 3ce37f6..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-016
-
-Bug-Reported-by:       Pierre Gaston <pierre.gaston@gmail.com>
-Bug-Reference-ID:      <CAPSX3sTCD61k1VQLJ5r-LWzEt+e7Xc-fxXmwn2u8EA5gJJej8Q@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.html
-
-Bug-Description:
-
-An extended glob pattern containing a slash (`/') causes the globbing code
-to misinterpret it as a directory separator.
-
-Patch (apply with `patch -p0'):
---- a/lib/glob/glob.c
-+++ b/lib/glob/glob.c
-@@ -123,6 +123,8 @@ static char **glob_dir_to_array __P((cha
- extern char *glob_patscan __P((char *, char *, int));
- extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int));
-+extern char *glob_dirscan __P((char *, int));
-+
- /* Compile `glob_loop.c' for single-byte characters. */
- #define CHAR  unsigned char
- #define INT   int
-@@ -187,6 +189,9 @@ extglob_skipname (pat, dname, flags)
-   se = pp + strlen (pp) - 1;          /* end of string */
-   pe = glob_patscan (pp, se, 0);      /* end of extglob pattern (( */
-   /* we should check for invalid extglob pattern here */
-+  if (pe == 0)
-+    return 0;
-+
-   /* if pe != se we have more of the pattern at the end of the extglob
-      pattern. Check the easy case first ( */
-   if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
-@@ -1015,7 +1020,7 @@ glob_filename (pathname, flags)
- {
-   char **result;
-   unsigned int result_size;
--  char *directory_name, *filename, *dname;
-+  char *directory_name, *filename, *dname, *fn;
-   unsigned int directory_len;
-   int free_dirname;                   /* flag */
-   int dflags;
-@@ -1031,6 +1036,18 @@ glob_filename (pathname, flags)
-   /* Find the filename.  */
-   filename = strrchr (pathname, '/');
-+#if defined (EXTENDED_GLOB)
-+  if (filename && extended_glob)
-+    {
-+      fn = glob_dirscan (pathname, '/');
-+#if DEBUG_MATCHING
-+      if (fn != filename)
-+      fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename);
-+#endif
-+      filename = fn;
-+    }
-+#endif
-+
-   if (filename == NULL)
-     {
-       filename = pathname;
---- a/lib/glob/gmisc.c
-+++ b/lib/glob/gmisc.c
-@@ -42,6 +42,8 @@
- #define WLPAREN         L'('
- #define WRPAREN         L')'
-+extern char *glob_patscan __P((char *, char *, int));
-+
- /* Return 1 of the first character of WSTRING could match the first
-    character of pattern WPAT.  Wide character version. */
- int
-@@ -375,3 +377,34 @@ bad_bracket:
-   return matlen;
- }
-+
-+/* Skip characters in PAT and return the final occurrence of DIRSEP.  This
-+   is only called when extended_glob is set, so we have to skip over extglob
-+   patterns x(...) */
-+char *
-+glob_dirscan (pat, dirsep)
-+     char *pat;
-+     int dirsep;
-+{
-+  char *p, *d, *pe, *se;
-+
-+  d = pe = se = 0;
-+  for (p = pat; p && *p; p++)
-+    {
-+      if (extglob_pattern_p (p))
-+      {
-+        if (se == 0)
-+          se = p + strlen (p) - 1;
-+        pe = glob_patscan (p + 2, se, 0);
-+        if (pe == 0)
-+          continue;
-+        else if (*pe == 0)
-+          break;
-+        p = pe - 1;   /* will do increment above */
-+        continue;
-+      }
-+      if (*p ==  dirsep)
-+      d = p;
-+    }
-+  return d;
-+}
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 15
-+#define PATCHLEVEL 16
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/117-upstream-bash43-017.patch b/utils/bash/patches/117-upstream-bash43-017.patch
deleted file mode 100644 (file)
index 9c7eecc..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-017
-
-Bug-Reported-by:       Dan Douglas <ormaaj@gmail.com>
-Bug-Reference-ID:      <7781746.RhfoTROLxF@smorgbox>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.html
-
-Bug-Description:
-
-The code that creates local variables should not clear the `invisible'
-attribute when returning an existing local variable.  Let the code that
-actually assigns a value clear it.
-
-Patch (apply with `patch -p0'):
---- a/variables.c
-+++ b/variables.c
-@@ -2197,10 +2197,7 @@ make_local_variable (name)
-   /* local foo; local foo;  is a no-op. */
-   old_var = find_variable (name);
-   if (old_var && local_p (old_var) && old_var->context == variable_context)
--    {
--      VUNSETATTR (old_var, att_invisible);    /* XXX */
--      return (old_var);
--    }
-+    return (old_var);
-   was_tmpvar = old_var && tempvar_p (old_var);
-   /* If we're making a local variable in a shell function, the temporary env
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 16
-+#define PATCHLEVEL 17
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/118-upstream-bash43-018.patch b/utils/bash/patches/118-upstream-bash43-018.patch
deleted file mode 100644 (file)
index 095ca93..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-018
-
-Bug-Reported-by:       Geir Hauge <geir.hauge@gmail.com>
-Bug-Reference-ID:      <CAO-BiTLOvfPXDypg61jcBausADrxUKJejakV2WTWP26cW0=rgA@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.html
-
-Bug-Description:
-
-When assigning an array variable using the compound assignment syntax,
-but using `declare' with the rhs of the compound assignment quoted, the
-shell did not mark the variable as visible after successfully performing
-the assignment.
-
-Patch (apply with `patch -p0'):
---- a/arrayfunc.c
-+++ b/arrayfunc.c
-@@ -179,6 +179,7 @@ bind_array_var_internal (entry, ind, key
-     array_insert (array_cell (entry), ind, newval);
-   FREE (newval);
-+  VUNSETATTR (entry, att_invisible);  /* no longer invisible */
-   return (entry);
- }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 17
-+#define PATCHLEVEL 18
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/119-upstream-bash43-019.patch b/utils/bash/patches/119-upstream-bash43-019.patch
deleted file mode 100644 (file)
index 2d0fa44..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-019
-
-Bug-Reported-by:       John Lenton
-Bug-Reference-ID:
-Bug-Reference-URL:     https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
-
-Bug-Description:
-
-The -t timeout option to `read' does not work when the -e option is used.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/input.c
-+++ b/lib/readline/input.c
-@@ -534,8 +534,16 @@ rl_getc (stream)
-       return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
-       else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM)
-       return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
-+      /* keyboard-generated signals of interest */
-       else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT)
-         RL_CHECK_SIGNALS ();
-+      /* non-keyboard-generated signals of interest */
-+      else if (_rl_caught_signal == SIGALRM
-+#if defined (SIGVTALRM)
-+              || _rl_caught_signal == SIGVTALRM
-+#endif
-+            )
-+        RL_CHECK_SIGNALS ();
-       if (rl_signal_event_hook)
-       (*rl_signal_event_hook) ();
---- a/builtins/read.def
-+++ b/builtins/read.def
-@@ -442,7 +442,10 @@ read_builtin (list)
-       add_unwind_protect (reset_alarm, (char *)NULL);
- #if defined (READLINE)
-       if (edit)
--      add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
-+      {
-+        add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
-+        add_unwind_protect (bashline_reset_event_hook, (char *)NULL);
-+      }
- #endif
-       falarm (tmsec, tmusec);
-     }
-@@ -1021,6 +1024,7 @@ edit_line (p, itext)
-   old_attempted_completion_function = rl_attempted_completion_function;
-   rl_attempted_completion_function = (rl_completion_func_t *)NULL;
-+  bashline_set_event_hook ();
-   if (itext)
-     {
-       old_startup_hook = rl_startup_hook;
-@@ -1032,6 +1036,7 @@ edit_line (p, itext)
-   rl_attempted_completion_function = old_attempted_completion_function;
-   old_attempted_completion_function = (rl_completion_func_t *)NULL;
-+  bashline_reset_event_hook ();
-   if (ret == 0)
-     return ret;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 18
-+#define PATCHLEVEL 19
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/120-upstream-bash43-020.patch b/utils/bash/patches/120-upstream-bash43-020.patch
deleted file mode 100644 (file)
index abf0c30..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-020
-
-Bug-Reported-by:       Jared Yanovich <slovichon@gmail.com>
-Bug-Reference-ID:      <20140417073654.GB26875@nightderanger.psc.edu>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html
-
-Bug-Description:
-
-When PS2 contains a command substitution, here-documents entered in an
-interactive shell can sometimes cause a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
---- a/shell.h
-+++ b/shell.h
-@@ -168,7 +168,8 @@ typedef struct _sh_parser_state_t {
-   /* flags state affecting the parser */
-   int expand_aliases;
-   int echo_input_at_read;
--  
-+  int need_here_doc;
-+
- } sh_parser_state_t;
- typedef struct _sh_input_line_state_t {
---- a/parse.y
-+++ b/parse.y
-@@ -2642,7 +2642,7 @@ gather_here_documents ()
-   int r;
-   r = 0;
--  while (need_here_doc)
-+  while (need_here_doc > 0)
-     {
-       parser_state |= PST_HEREDOC;
-       make_here_document (redir_stack[r++], line_number);
-@@ -6075,6 +6075,7 @@ save_parser_state (ps)
-   ps->expand_aliases = expand_aliases;
-   ps->echo_input_at_read = echo_input_at_read;
-+  ps->need_here_doc = need_here_doc;
-   ps->token = token;
-   ps->token_buffer_size = token_buffer_size;
-@@ -6123,6 +6124,7 @@ restore_parser_state (ps)
-   expand_aliases = ps->expand_aliases;
-   echo_input_at_read = ps->echo_input_at_read;
-+  need_here_doc = ps->need_here_doc;
-   FREE (token);
-   token = ps->token;
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -4954,7 +4954,7 @@ gather_here_documents ()
-   int r;
-   r = 0;
--  while (need_here_doc)
-+  while (need_here_doc > 0)
-     {
-       parser_state |= PST_HEREDOC;
-       make_here_document (redir_stack[r++], line_number);
-@@ -8387,6 +8387,7 @@ save_parser_state (ps)
-   ps->expand_aliases = expand_aliases;
-   ps->echo_input_at_read = echo_input_at_read;
-+  ps->need_here_doc = need_here_doc;
-   ps->token = token;
-   ps->token_buffer_size = token_buffer_size;
-@@ -8435,6 +8436,7 @@ restore_parser_state (ps)
-   expand_aliases = ps->expand_aliases;
-   echo_input_at_read = ps->echo_input_at_read;
-+  need_here_doc = ps->need_here_doc;
-   FREE (token);
-   token = ps->token;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 19
-+#define PATCHLEVEL 20
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/121-upstream-bash43-021.patch b/utils/bash/patches/121-upstream-bash43-021.patch
deleted file mode 100644 (file)
index b7367a0..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-021
-
-Bug-Reported-by:       Jared Yanovich <slovichon@gmail.com>
-Bug-Reference-ID:      <20140625225019.GJ17044@nightderanger.psc.edu>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html
-
-Bug-Description:
-
-When the readline `revert-all-at-newline' option is set, pressing newline
-when the current line is one retrieved from history results in a double free
-and a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/misc.c
-+++ b/lib/readline/misc.c
-@@ -461,6 +461,7 @@ _rl_revert_all_lines ()
-           saved_undo_list = 0;
-         /* Set up rl_line_buffer and other variables from history entry */
-         rl_replace_from_history (entry, 0);   /* entry->line is now current */
-+        entry->data = 0;                      /* entry->data is now current undo list */
-         /* Undo all changes to this history entry */
-         while (rl_undo_list)
-           rl_do_undo ();
-@@ -468,7 +469,6 @@ _rl_revert_all_lines ()
-            the timestamp. */
-         FREE (entry->line);
-         entry->line = savestring (rl_line_buffer);
--        entry->data = 0;
-       }
-       entry = previous_history ();
-     }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 20
-+#define PATCHLEVEL 21
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/122-upstream-bash43-022.patch b/utils/bash/patches/122-upstream-bash43-022.patch
deleted file mode 100644 (file)
index 1ee8f13..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-022
-
-Bug-Reported-by:       scorp.dev.null@gmail.com
-Bug-Reference-ID:      <E1WxXw8-0007iE-Bi@pcm14>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html
-
-Bug-Description:
-
-Using nested pipelines within loops with the `lastpipe' option set can result
-in a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
---- a/execute_cmd.c
-+++ b/execute_cmd.c
-@@ -2413,7 +2413,16 @@ execute_pipeline (command, asynchronous,
- #endif
-       lstdin = wait_for (lastpid);
- #if defined (JOB_CONTROL)
--      exec_result = job_exit_status (lastpipe_jid);
-+      /* If wait_for removes the job from the jobs table, use result of last
-+       command as pipeline's exit status as usual.  The jobs list can get
-+       frozen and unfrozen at inconvenient times if there are multiple pipelines
-+       running simultaneously. */
-+      if (INVALID_JOB (lastpipe_jid) == 0)
-+      exec_result = job_exit_status (lastpipe_jid);
-+      else if (pipefail_opt)
-+      exec_result = exec_result | lstdin;     /* XXX */
-+      /* otherwise we use exec_result */
-+        
- #endif
-       unfreeze_jobs_list ();
-     }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 21
-+#define PATCHLEVEL 22
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/123-upstream-bash43-023.patch b/utils/bash/patches/123-upstream-bash43-023.patch
deleted file mode 100644 (file)
index 8684c13..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-023
-
-Bug-Reported-by:       Tim Friske <me@timfriske.com>
-Bug-Reference-ID:      <CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html
-
-Bug-Description:
-
-Bash does not correctly parse process substitution constructs that contain
-unbalanced parentheses as part of the contained command.
-
-Patch (apply with `patch -p0'):
-
---- a/subst.h
-+++ b/subst.h
-@@ -82,7 +82,7 @@ extern char *extract_arithmetic_subst __
- /* Extract the <( or >( construct in STRING, and return a new string.
-    Start extracting at (SINDEX) as if we had just seen "<(".
-    Make (SINDEX) get the position just after the matching ")". */
--extern char *extract_process_subst __P((char *, char *, int *));
-+extern char *extract_process_subst __P((char *, char *, int *, int));
- #endif /* PROCESS_SUBSTITUTION */
- /* Extract the name of the variable to bind to from the assignment string. */
---- a/subst.c
-+++ b/subst.c
-@@ -1192,12 +1192,18 @@ extract_arithmetic_subst (string, sindex
-    Start extracting at (SINDEX) as if we had just seen "<(".
-    Make (SINDEX) get the position of the matching ")". */ /*))*/
- char *
--extract_process_subst (string, starter, sindex)
-+extract_process_subst (string, starter, sindex, xflags)
-      char *string;
-      char *starter;
-      int *sindex;
-+     int xflags;
- {
-+#if 0
-   return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
-+#else
-+  xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
-+  return (xparse_dolparen (string, string+*sindex, sindex, xflags));
-+#endif
- }
- #endif /* PROCESS_SUBSTITUTION */
-@@ -1785,7 +1791,7 @@ skip_to_delim (string, start, delims, fl
-         si = i + 2;
-         if (string[si] == '\0')
-           CQ_RETURN(si);
--        temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si);
-+        temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0);
-         free (temp);          /* no SX_ALLOC here */
-         i = si;
-         if (string[i] == '\0')
-@@ -8249,7 +8255,7 @@ add_string:
-           else
-             t_index = sindex + 1; /* skip past both '<' and LPAREN */
--          temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/
-+          temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/
-           sindex = t_index;
-           /* If the process substitution specification is `<()', we want to
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 22
-+#define PATCHLEVEL 23
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/124-upstream-bash43-024.patch b/utils/bash/patches/124-upstream-bash43-024.patch
deleted file mode 100644 (file)
index 7941455..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-024
-
-Bug-Reported-by:       Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
-Bug-Reference-ID:      <53CE9E5D.6050203@pom-monitoring.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html
-
-Bug-Description:
-
-Indirect variable references do not work correctly if the reference
-variable expands to an array reference using a subscript other than 0
-(e.g., foo='bar[1]' ; echo ${!foo}).
-
-Patch (apply with `patch -p0'):
-
---- a/subst.c
-+++ b/subst.c
-@@ -7374,7 +7374,13 @@ parameter_brace_expand (string, indexp,
-     }
-   if (want_indir)
--    tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
-+    {
-+      tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
-+      /* Turn off the W_ARRAYIND flag because there is no way for this function
-+       to return the index we're supposed to be using. */
-+      if (tdesc && tdesc->flags)
-+      tdesc->flags &= ~W_ARRAYIND;
-+    }
-   else
-     tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 23
-+#define PATCHLEVEL 24
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/125-upstream-bash43-025.patch b/utils/bash/patches/125-upstream-bash43-025.patch
deleted file mode 100644 (file)
index 6b2ef4b..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-025
-
-Bug-Reported-by:       Stephane Chazelas <stephane.chazelas@gmail.com>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-Under certain circumstances, bash will execute user code while processing the
-environment for exported function definitions.
-
-Patch (apply with `patch -p0'):
-
---- a/builtins/common.h
-+++ b/builtins/common.h
-@@ -33,6 +33,8 @@
- #define SEVAL_RESETLINE       0x010
- #define SEVAL_PARSEONLY       0x020
- #define SEVAL_NOLONGJMP 0x040
-+#define SEVAL_FUNCDEF 0x080           /* only allow function definitions */
-+#define SEVAL_ONECMD  0x100           /* only allow a single command */
- /* Flags for describe_command, shared between type.def and command.def */
- #define CDESC_ALL             0x001   /* type -a */
---- a/builtins/evalstring.c
-+++ b/builtins/evalstring.c
-@@ -308,6 +308,14 @@ parse_and_execute (string, from_file, fl
-           {
-             struct fd_bitmap *bitmap;
-+            if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
-+              {
-+                internal_warning ("%s: ignoring function definition attempt", from_file);
-+                should_jump_to_top_level = 0;
-+                last_result = last_command_exit_value = EX_BADUSAGE;
-+                break;
-+              }
-+
-             bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
-             begin_unwind_frame ("pe_dispose");
-             add_unwind_protect (dispose_fd_bitmap, bitmap);
-@@ -368,6 +376,9 @@ parse_and_execute (string, from_file, fl
-             dispose_command (command);
-             dispose_fd_bitmap (bitmap);
-             discard_unwind_frame ("pe_dispose");
-+
-+            if (flags & SEVAL_ONECMD)
-+              break;
-           }
-       }
-       else
---- a/variables.c
-+++ b/variables.c
-@@ -358,13 +358,11 @@ initialize_shell_variables (env, privmod
-         temp_string[char_index] = ' ';
-         strcpy (temp_string + char_index + 1, string);
--        if (posixly_correct == 0 || legal_identifier (name))
--          parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
--
--        /* Ancient backwards compatibility.  Old versions of bash exported
--           functions like name()=() {...} */
--        if (name[char_index - 1] == ')' && name[char_index - 2] == '(')
--          name[char_index - 2] = '\0';
-+        /* Don't import function names that are invalid identifiers from the
-+           environment, though we still allow them to be defined as shell
-+           variables. */
-+        if (legal_identifier (name))
-+          parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
-         if (temp_var = find_function (name))
-           {
-@@ -381,10 +379,6 @@ initialize_shell_variables (env, privmod
-             last_command_exit_value = 1;
-             report_error (_("error importing function definition for `%s'"), name);
-           }
--
--        /* ( */
--        if (name[char_index - 1] == ')' && name[char_index - 2] == '\0')
--          name[char_index - 2] = '(';         /* ) */
-       }
- #if defined (ARRAY_VARS)
- #  if ARRAY_EXPORT
---- a/subst.c
-+++ b/subst.c
-@@ -8047,7 +8047,9 @@ comsub:
-         goto return0;
-       }
--      else if (var = find_variable_last_nameref (temp1))
-+      else if (var && (invisible_p (var) || var_isset (var) == 0))
-+      temp = (char *)NULL;
-+      else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0)
-       {
-         temp = nameref_cell (var);
- #if defined (ARRAY_VARS)
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 24
-+#define PATCHLEVEL 25
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/126-upstream-bash43-026.patch b/utils/bash/patches/126-upstream-bash43-026.patch
deleted file mode 100644 (file)
index e9535be..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-026
-
-Bug-Reported-by:       Tavis Ormandy <taviso@cmpxchg8b.com>
-Bug-Reference-ID:
-Bug-Reference-URL:     http://twitter.com/taviso/statuses/514887394294652929
-
-Bug-Description:
-
-Under certain circumstances, bash can incorrectly save a lookahead character and
-return it on a subsequent call, even when reading a new line.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -2953,6 +2953,8 @@ reset_parser ()
-   FREE (word_desc_to_read);
-   word_desc_to_read = (WORD_DESC *)NULL;
-+  eol_ungetc_lookahead = 0;
-+
-   current_token = '\n';               /* XXX */
-   last_read_token = '\n';
-   token_to_read = '\n';
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -5265,6 +5265,8 @@ reset_parser ()
-   FREE (word_desc_to_read);
-   word_desc_to_read = (WORD_DESC *)NULL;
-+  eol_ungetc_lookahead = 0;
-+
-   current_token = '\n';               /* XXX */
-   last_read_token = '\n';
-   token_to_read = '\n';
-@@ -8539,4 +8541,3 @@ set_line_mbstate ()
-     }
- }
- #endif /* HANDLE_MULTIBYTE */
--
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 25
-+#define PATCHLEVEL 26
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/127-upstream-bash43-027.patch b/utils/bash/patches/127-upstream-bash43-027.patch
deleted file mode 100644 (file)
index 6e8a51a..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-027
-
-Bug-Reported-by:       Florian Weimer <fweimer@redhat.com>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-This patch changes the encoding bash uses for exported functions to avoid
-clashes with shell variables and to avoid depending only on an environment
-variable's contents to determine whether or not to interpret it as a shell
-function.
-
-Patch (apply with `patch -p0'):
-
---- a/variables.c
-+++ b/variables.c
-@@ -83,6 +83,11 @@
- #define ifsname(s)    ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
-+#define BASHFUNC_PREFIX               "BASH_FUNC_"
-+#define BASHFUNC_PREFLEN      10      /* == strlen(BASHFUNC_PREFIX */
-+#define BASHFUNC_SUFFIX               "%%"
-+#define BASHFUNC_SUFFLEN      2       /* == strlen(BASHFUNC_SUFFIX) */
-+
- extern char **environ;
- /* Variables used here and defined in other files. */
-@@ -279,7 +284,7 @@ static void push_temp_var __P((PTR_T));
- static void propagate_temp_var __P((PTR_T));
- static void dispose_temporary_env __P((sh_free_func_t *));     
--static inline char *mk_env_string __P((const char *, const char *));
-+static inline char *mk_env_string __P((const char *, const char *, int));
- static char **make_env_array_from_var_list __P((SHELL_VAR **));
- static char **make_var_export_array __P((VAR_CONTEXT *));
- static char **make_func_export_array __P((void));
-@@ -349,22 +354,33 @@ initialize_shell_variables (env, privmod
-       /* If exported function, define it now.  Don't import functions from
-        the environment in privileged mode. */
--      if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
-+      if (privmode == 0 && read_but_dont_execute == 0 && 
-+          STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) &&
-+          STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) &&
-+        STREQN ("() {", string, 4))
-       {
-+        size_t namelen;
-+        char *tname;          /* desired imported function name */
-+
-+        namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN;
-+
-+        tname = name + BASHFUNC_PREFLEN;      /* start of func name */
-+        tname[namelen] = '\0';                /* now tname == func name */
-+
-         string_length = strlen (string);
--        temp_string = (char *)xmalloc (3 + string_length + char_index);
-+        temp_string = (char *)xmalloc (namelen + string_length + 2);
--        strcpy (temp_string, name);
--        temp_string[char_index] = ' ';
--        strcpy (temp_string + char_index + 1, string);
-+        memcpy (temp_string, tname, namelen);
-+        temp_string[namelen] = ' ';
-+        memcpy (temp_string + namelen + 1, string, string_length + 1);
-         /* Don't import function names that are invalid identifiers from the
-            environment, though we still allow them to be defined as shell
-            variables. */
--        if (legal_identifier (name))
--          parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
-+        if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname)))
-+          parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
--        if (temp_var = find_function (name))
-+        if (temp_var = find_function (tname))
-           {
-             VSETATTR (temp_var, (att_exported|att_imported));
-             array_needs_making = 1;
-@@ -377,8 +393,11 @@ initialize_shell_variables (env, privmod
-                 array_needs_making = 1;
-               }
-             last_command_exit_value = 1;
--            report_error (_("error importing function definition for `%s'"), name);
-+            report_error (_("error importing function definition for `%s'"), tname);
-           }
-+
-+        /* Restore original suffix */
-+        tname[namelen] = BASHFUNC_SUFFIX[0];
-       }
- #if defined (ARRAY_VARS)
- #  if ARRAY_EXPORT
-@@ -2954,7 +2973,7 @@ assign_in_env (word, flags)
-   var->context = variable_context;    /* XXX */
-   INVALIDATE_EXPORTSTR (var);
--  var->exportstr = mk_env_string (name, value);
-+  var->exportstr = mk_env_string (name, value, 0);
-   array_needs_making = 1;
-@@ -3852,21 +3871,42 @@ merge_temporary_env ()
- /* **************************************************************** */
- static inline char *
--mk_env_string (name, value)
-+mk_env_string (name, value, isfunc)
-      const char *name, *value;
-+     int isfunc;
- {
--  int name_len, value_len;
--  char        *p;
-+  size_t name_len, value_len;
-+  char        *p, *q;
-   name_len = strlen (name);
-   value_len = STRLEN (value);
--  p = (char *)xmalloc (2 + name_len + value_len);
--  strcpy (p, name);
--  p[name_len] = '=';
-+
-+  /* If we are exporting a shell function, construct the encoded function
-+     name. */
-+  if (isfunc && value)
-+    {
-+      p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2);
-+      q = p;
-+      memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN);
-+      q += BASHFUNC_PREFLEN;
-+      memcpy (q, name, name_len);
-+      q += name_len;
-+      memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
-+      q += BASHFUNC_SUFFLEN;
-+    }
-+  else
-+    {
-+      p = (char *)xmalloc (2 + name_len + value_len);
-+      memcpy (p, name, name_len);
-+      q = p + name_len;
-+    }
-+
-+  q[0] = '=';
-   if (value && *value)
--    strcpy (p + name_len + 1, value);
-+    memcpy (q + 1, value, value_len + 1);
-   else
--    p[name_len + 1] = '\0';
-+    q[1] = '\0';
-+
-   return (p);
- }
-@@ -3952,7 +3992,7 @@ make_env_array_from_var_list (vars)
-         /* Gee, I'd like to get away with not using savestring() if we're
-            using the cached exportstr... */
-         list[list_index] = USE_EXPORTSTR ? savestring (value)
--                                         : mk_env_string (var->name, value);
-+                                         : mk_env_string (var->name, value, function_p (var));
-         if (USE_EXPORTSTR == 0)
-           SAVE_EXPORTSTR (var, list[list_index]);
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 26
-+#define PATCHLEVEL 27
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/128-upstream-bash43-028.patch b/utils/bash/patches/128-upstream-bash43-028.patch
deleted file mode 100644 (file)
index b4b1b6d..0000000
+++ /dev/null
@@ -1,1526 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-028
-
-Bug-Reported-by:       Florian Weimer <fweimer@redhat.com>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-There are two local buffer overflows in parse.y that can cause the shell
-to dump core when given many here-documents attached to a single command
-or many nested loops.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -168,6 +168,9 @@ static char *read_a_line __P((int));
- static int reserved_word_acceptable __P((int));
- static int yylex __P((void));
-+
-+static void push_heredoc __P((REDIRECT *));
-+static char *mk_alexpansion __P((char *));
- static int alias_expand_token __P((char *));
- static int time_command_acceptable __P((void));
- static int special_case_tokens __P((char *));
-@@ -265,7 +268,9 @@ int parser_state;
- /* Variables to manage the task of reading here documents, because we need to
-    defer the reading until after a complete command has been collected. */
--static REDIRECT *redir_stack[10];
-+#define HEREDOC_MAX 16
-+
-+static REDIRECT *redir_stack[HEREDOC_MAX];
- int need_here_doc;
- /* Where shell input comes from.  History expansion is performed on each
-@@ -307,7 +312,7 @@ static int global_extglob;
-    or `for WORD' begins.  This is a nested command maximum, since the array
-    index is decremented after a case, select, or for command is parsed. */
- #define MAX_CASE_NEST 128
--static int word_lineno[MAX_CASE_NEST];
-+static int word_lineno[MAX_CASE_NEST+1];
- static int word_top = -1;
- /* If non-zero, it is the token that we want read_token to return
-@@ -520,42 +525,42 @@ redirection:     '>' WORD
-                         source.dest = 0;
-                         redir.filename = $2;
-                         $$ = make_redirection (source, r_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       NUMBER LESS_LESS WORD
-                       {
-                         source.dest = $1;
-                         redir.filename = $3;
-                         $$ = make_redirection (source, r_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       REDIR_WORD LESS_LESS WORD
-                       {
-                         source.filename = $1;
-                         redir.filename = $3;
-                         $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       LESS_LESS_MINUS WORD
-                       {
-                         source.dest = 0;
-                         redir.filename = $2;
-                         $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       NUMBER LESS_LESS_MINUS WORD
-                       {
-                         source.dest = $1;
-                         redir.filename = $3;
-                         $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       REDIR_WORD  LESS_LESS_MINUS WORD
-                       {
-                         source.filename = $1;
-                         redir.filename = $3;
-                         $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       LESS_LESS_LESS WORD
-                       {
-@@ -2636,6 +2641,21 @@ yylex ()
-    which allow ESAC to be the next one read. */
- static int esacs_needed_count;
-+static void
-+push_heredoc (r)
-+     REDIRECT *r;
-+{
-+  if (need_here_doc >= HEREDOC_MAX)
-+    {
-+      last_command_exit_value = EX_BADUSAGE;
-+      need_here_doc = 0;
-+      report_syntax_error (_("maximum here-document count exceeded"));
-+      reset_parser ();
-+      exit_shell (last_command_exit_value);
-+    }
-+  redir_stack[need_here_doc++] = r;
-+}
-+
- void
- gather_here_documents ()
- {
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -168,7 +168,7 @@
- /* Copy the first part of user declarations.  */
--#line 21 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
- #include "config.h"
-@@ -319,6 +319,9 @@ static char *read_a_line __P((int));
- static int reserved_word_acceptable __P((int));
- static int yylex __P((void));
-+
-+static void push_heredoc __P((REDIRECT *));
-+static char *mk_alexpansion __P((char *));
- static int alias_expand_token __P((char *));
- static int time_command_acceptable __P((void));
- static int special_case_tokens __P((char *));
-@@ -416,7 +419,9 @@ int parser_state;
- /* Variables to manage the task of reading here documents, because we need to
-    defer the reading until after a complete command has been collected. */
--static REDIRECT *redir_stack[10];
-+#define HEREDOC_MAX 16
-+
-+static REDIRECT *redir_stack[HEREDOC_MAX];
- int need_here_doc;
- /* Where shell input comes from.  History expansion is performed on each
-@@ -458,7 +463,7 @@ static int global_extglob;
-    or `for WORD' begins.  This is a nested command maximum, since the array
-    index is decremented after a case, select, or for command is parsed. */
- #define MAX_CASE_NEST 128
--static int word_lineno[MAX_CASE_NEST];
-+static int word_lineno[MAX_CASE_NEST+1];
- static int word_top = -1;
- /* If non-zero, it is the token that we want read_token to return
-@@ -492,7 +497,7 @@ static REDIRECTEE redir;
- #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
- typedef union YYSTYPE
--#line 324 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
- {
-   WORD_DESC *word;            /* the word that we read. */
-   int number;                 /* the number that we read. */
-@@ -503,7 +508,7 @@ typedef union YYSTYPE
-   PATTERN_LIST *pattern;
- }
- /* Line 193 of yacc.c.  */
--#line 507 "y.tab.c"
-+#line 512 "y.tab.c"
-       YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
-@@ -516,7 +521,7 @@ typedef union YYSTYPE
- /* Line 216 of yacc.c.  */
--#line 520 "y.tab.c"
-+#line 525 "y.tab.c"
- #ifdef short
- # undef short
-@@ -886,23 +891,23 @@ static const yytype_int8 yyrhs[] =
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
- static const yytype_uint16 yyrline[] =
- {
--       0,   377,   377,   388,   397,   412,   422,   424,   428,   434,
--     440,   446,   452,   458,   464,   470,   476,   482,   488,   494,
--     500,   506,   512,   518,   525,   532,   539,   546,   553,   560,
--     566,   572,   578,   584,   590,   596,   602,   608,   614,   620,
--     626,   632,   638,   644,   650,   656,   662,   668,   674,   680,
--     686,   692,   700,   702,   704,   708,   712,   723,   725,   729,
--     731,   733,   749,   751,   755,   757,   759,   761,   763,   765,
--     767,   769,   771,   773,   775,   779,   784,   789,   794,   799,
--     804,   809,   814,   821,   826,   831,   836,   843,   848,   853,
--     858,   863,   868,   875,   880,   885,   892,   895,   898,   902,
--     904,   935,   942,   947,   964,   969,   986,   993,   995,   997,
--    1002,  1006,  1010,  1014,  1016,  1018,  1022,  1023,  1027,  1029,
--    1031,  1033,  1037,  1039,  1041,  1043,  1045,  1047,  1051,  1053,
--    1062,  1070,  1071,  1077,  1078,  1085,  1089,  1091,  1093,  1100,
--    1102,  1104,  1108,  1109,  1112,  1114,  1116,  1120,  1121,  1130,
--    1143,  1159,  1174,  1176,  1178,  1185,  1188,  1192,  1194,  1200,
--    1206,  1223,  1243,  1245,  1268,  1272,  1274,  1276
-+       0,   382,   382,   393,   402,   417,   427,   429,   433,   439,
-+     445,   451,   457,   463,   469,   475,   481,   487,   493,   499,
-+     505,   511,   517,   523,   530,   537,   544,   551,   558,   565,
-+     571,   577,   583,   589,   595,   601,   607,   613,   619,   625,
-+     631,   637,   643,   649,   655,   661,   667,   673,   679,   685,
-+     691,   697,   705,   707,   709,   713,   717,   728,   730,   734,
-+     736,   738,   754,   756,   760,   762,   764,   766,   768,   770,
-+     772,   774,   776,   778,   780,   784,   789,   794,   799,   804,
-+     809,   814,   819,   826,   831,   836,   841,   848,   853,   858,
-+     863,   868,   873,   880,   885,   890,   897,   900,   903,   907,
-+     909,   940,   947,   952,   969,   974,   991,   998,  1000,  1002,
-+    1007,  1011,  1015,  1019,  1021,  1023,  1027,  1028,  1032,  1034,
-+    1036,  1038,  1042,  1044,  1046,  1048,  1050,  1052,  1056,  1058,
-+    1067,  1075,  1076,  1082,  1083,  1090,  1094,  1096,  1098,  1105,
-+    1107,  1109,  1113,  1114,  1117,  1119,  1121,  1125,  1126,  1135,
-+    1148,  1164,  1179,  1181,  1183,  1190,  1193,  1197,  1199,  1205,
-+    1211,  1228,  1248,  1250,  1273,  1277,  1279,  1281
- };
- #endif
-@@ -2093,7 +2098,7 @@ yyreduce:
-   switch (yyn)
-     {
-         case 2:
--#line 378 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Case of regular command.  Discard the error
-                            safety net,and return the command just parsed. */
-@@ -2107,7 +2112,7 @@ yyreduce:
-     break;
-   case 3:
--#line 389 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Case of regular command, but not a very
-                            interesting one.  Return a NULL command. */
-@@ -2119,7 +2124,7 @@ yyreduce:
-     break;
-   case 4:
--#line 398 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Error during parsing.  Return NULL command. */
-                         global_command = (COMMAND *)NULL;
-@@ -2137,7 +2142,7 @@ yyreduce:
-     break;
-   case 5:
--#line 413 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Case of EOF seen by itself.  Do ignoreeof or
-                            not. */
-@@ -2148,17 +2153,17 @@ yyreduce:
-     break;
-   case 6:
--#line 423 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
-     break;
-   case 7:
--#line 425 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
-     break;
-   case 8:
--#line 429 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2167,7 +2172,7 @@ yyreduce:
-     break;
-   case 9:
--#line 435 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2176,7 +2181,7 @@ yyreduce:
-     break;
-   case 10:
--#line 441 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2185,7 +2190,7 @@ yyreduce:
-     break;
-   case 11:
--#line 447 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2194,7 +2199,7 @@ yyreduce:
-     break;
-   case 12:
--#line 453 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2203,7 +2208,7 @@ yyreduce:
-     break;
-   case 13:
--#line 459 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2212,7 +2217,7 @@ yyreduce:
-     break;
-   case 14:
--#line 465 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2221,7 +2226,7 @@ yyreduce:
-     break;
-   case 15:
--#line 471 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2230,7 +2235,7 @@ yyreduce:
-     break;
-   case 16:
--#line 477 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2239,7 +2244,7 @@ yyreduce:
-     break;
-   case 17:
--#line 483 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2248,7 +2253,7 @@ yyreduce:
-     break;
-   case 18:
--#line 489 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2257,7 +2262,7 @@ yyreduce:
-     break;
-   case 19:
--#line 495 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2266,7 +2271,7 @@ yyreduce:
-     break;
-   case 20:
--#line 501 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2275,7 +2280,7 @@ yyreduce:
-     break;
-   case 21:
--#line 507 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2284,7 +2289,7 @@ yyreduce:
-     break;
-   case 22:
--#line 513 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2293,67 +2298,67 @@ yyreduce:
-     break;
-   case 23:
--#line 519 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-                         (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 24:
--#line 526 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-                         (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 25:
--#line 533 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-                         (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 26:
--#line 540 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-                         (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 27:
--#line 547 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-                         (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 28:
--#line 554 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-                         (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 29:
--#line 561 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2362,7 +2367,7 @@ yyreduce:
-     break;
-   case 30:
--#line 567 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2371,7 +2376,7 @@ yyreduce:
-     break;
-   case 31:
--#line 573 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2380,7 +2385,7 @@ yyreduce:
-     break;
-   case 32:
--#line 579 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.dest = (yyvsp[(2) - (2)].number);
-@@ -2389,7 +2394,7 @@ yyreduce:
-     break;
-   case 33:
--#line 585 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2398,7 +2403,7 @@ yyreduce:
-     break;
-   case 34:
--#line 591 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2407,7 +2412,7 @@ yyreduce:
-     break;
-   case 35:
--#line 597 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.dest = (yyvsp[(2) - (2)].number);
-@@ -2416,7 +2421,7 @@ yyreduce:
-     break;
-   case 36:
--#line 603 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2425,7 +2430,7 @@ yyreduce:
-     break;
-   case 37:
--#line 609 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2434,7 +2439,7 @@ yyreduce:
-     break;
-   case 38:
--#line 615 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2443,7 +2448,7 @@ yyreduce:
-     break;
-   case 39:
--#line 621 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2452,7 +2457,7 @@ yyreduce:
-     break;
-   case 40:
--#line 627 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2461,7 +2466,7 @@ yyreduce:
-     break;
-   case 41:
--#line 633 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2470,7 +2475,7 @@ yyreduce:
-     break;
-   case 42:
--#line 639 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2479,7 +2484,7 @@ yyreduce:
-     break;
-   case 43:
--#line 645 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2488,7 +2493,7 @@ yyreduce:
-     break;
-   case 44:
--#line 651 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.dest = 0;
-@@ -2497,7 +2502,7 @@ yyreduce:
-     break;
-   case 45:
--#line 657 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = 0;
-@@ -2506,7 +2511,7 @@ yyreduce:
-     break;
-   case 46:
--#line 663 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = 0;
-@@ -2515,7 +2520,7 @@ yyreduce:
-     break;
-   case 47:
--#line 669 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.dest = 0;
-@@ -2524,7 +2529,7 @@ yyreduce:
-     break;
-   case 48:
--#line 675 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = 0;
-@@ -2533,7 +2538,7 @@ yyreduce:
-     break;
-   case 49:
--#line 681 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = 0;
-@@ -2542,7 +2547,7 @@ yyreduce:
-     break;
-   case 50:
--#line 687 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2551,7 +2556,7 @@ yyreduce:
-     break;
-   case 51:
--#line 693 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2560,29 +2565,29 @@ yyreduce:
-     break;
-   case 52:
--#line 701 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
-     break;
-   case 53:
--#line 703 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
-     break;
-   case 54:
--#line 705 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
-     break;
-   case 55:
--#line 709 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
-                       }
-     break;
-   case 56:
--#line 713 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         register REDIRECT *t;
-@@ -2594,27 +2599,27 @@ yyreduce:
-     break;
-   case 57:
--#line 724 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
-     break;
-   case 58:
--#line 726 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
-     break;
-   case 59:
--#line 730 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
-     break;
-   case 60:
--#line 732 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 61:
--#line 734 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2633,72 +2638,72 @@ yyreduce:
-     break;
-   case 62:
--#line 750 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 63:
--#line 752 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 64:
--#line 756 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 65:
--#line 758 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 66:
--#line 760 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
-     break;
-   case 67:
--#line 762 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
-     break;
-   case 68:
--#line 764 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 69:
--#line 766 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 70:
--#line 768 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 71:
--#line 770 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 72:
--#line 772 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 73:
--#line 774 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 74:
--#line 776 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 75:
--#line 780 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2706,7 +2711,7 @@ yyreduce:
-     break;
-   case 76:
--#line 785 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2714,7 +2719,7 @@ yyreduce:
-     break;
-   case 77:
--#line 790 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2722,7 +2727,7 @@ yyreduce:
-     break;
-   case 78:
--#line 795 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2730,7 +2735,7 @@ yyreduce:
-     break;
-   case 79:
--#line 800 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2738,7 +2743,7 @@ yyreduce:
-     break;
-   case 80:
--#line 805 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2746,7 +2751,7 @@ yyreduce:
-     break;
-   case 81:
--#line 810 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2754,7 +2759,7 @@ yyreduce:
-     break;
-   case 82:
--#line 815 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2762,7 +2767,7 @@ yyreduce:
-     break;
-   case 83:
--#line 822 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2770,7 +2775,7 @@ yyreduce:
-     break;
-   case 84:
--#line 827 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2778,7 +2783,7 @@ yyreduce:
-     break;
-   case 85:
--#line 832 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2786,7 +2791,7 @@ yyreduce:
-     break;
-   case 86:
--#line 837 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2794,7 +2799,7 @@ yyreduce:
-     break;
-   case 87:
--#line 844 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2802,7 +2807,7 @@ yyreduce:
-     break;
-   case 88:
--#line 849 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2810,7 +2815,7 @@ yyreduce:
-     break;
-   case 89:
--#line 854 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2818,7 +2823,7 @@ yyreduce:
-     break;
-   case 90:
--#line 859 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2826,7 +2831,7 @@ yyreduce:
-     break;
-   case 91:
--#line 864 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2834,7 +2839,7 @@ yyreduce:
-     break;
-   case 92:
--#line 869 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2842,7 +2847,7 @@ yyreduce:
-     break;
-   case 93:
--#line 876 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2850,7 +2855,7 @@ yyreduce:
-     break;
-   case 94:
--#line 881 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2858,7 +2863,7 @@ yyreduce:
-     break;
-   case 95:
--#line 886 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2866,27 +2871,27 @@ yyreduce:
-     break;
-   case 96:
--#line 893 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
-     break;
-   case 97:
--#line 896 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
-     break;
-   case 98:
--#line 899 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
-     break;
-   case 99:
--#line 903 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 100:
--#line 905 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2918,7 +2923,7 @@ yyreduce:
-     break;
-   case 101:
--#line 936 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL;
-@@ -2926,7 +2931,7 @@ yyreduce:
-     break;
-   case 102:
--#line 943 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2934,7 +2939,7 @@ yyreduce:
-     break;
-   case 103:
--#line 948 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2954,7 +2959,7 @@ yyreduce:
-     break;
-   case 104:
--#line 965 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2962,7 +2967,7 @@ yyreduce:
-     break;
-   case 105:
--#line 970 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2982,7 +2987,7 @@ yyreduce:
-     break;
-   case 106:
--#line 987 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2990,117 +2995,117 @@ yyreduce:
-     break;
-   case 107:
--#line 994 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
-     break;
-   case 108:
--#line 996 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
-     break;
-   case 109:
--#line 998 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
-     break;
-   case 110:
--#line 1003 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
-     break;
-   case 111:
--#line 1007 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
-     break;
-   case 112:
--#line 1011 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(2) - (3)].command); }
-     break;
-   case 113:
--#line 1015 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
-     break;
-   case 114:
--#line 1017 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
-     break;
-   case 115:
--#line 1019 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
-     break;
-   case 117:
--#line 1024 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
-     break;
-   case 118:
--#line 1028 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
-     break;
-   case 119:
--#line 1030 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
-     break;
-   case 120:
--#line 1032 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
-     break;
-   case 121:
--#line 1034 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
-     break;
-   case 122:
--#line 1038 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 123:
--#line 1040 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 124:
--#line 1042 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 125:
--#line 1044 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 126:
--#line 1046 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 127:
--#line 1048 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 128:
--#line 1052 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
-     break;
-   case 129:
--#line 1054 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
-     break;
-   case 130:
--#line 1063 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(2) - (2)].command);
-                         if (need_here_doc)
-@@ -3109,14 +3114,14 @@ yyreduce:
-     break;
-   case 132:
--#line 1072 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(2) - (2)].command);
-                       }
-     break;
-   case 134:
--#line 1079 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(1) - (3)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&');
-@@ -3126,17 +3131,17 @@ yyreduce:
-     break;
-   case 136:
--#line 1090 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
-     break;
-   case 137:
--#line 1092 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
-     break;
-   case 138:
--#line 1094 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(1) - (4)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&');
-@@ -3146,37 +3151,37 @@ yyreduce:
-     break;
-   case 139:
--#line 1101 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
-     break;
-   case 140:
--#line 1103 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
-     break;
-   case 141:
--#line 1105 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 144:
--#line 1113 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = '\n'; }
-     break;
-   case 145:
--#line 1115 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = ';'; }
-     break;
-   case 146:
--#line 1117 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = yacc_EOF; }
-     break;
-   case 149:
--#line 1131 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(1) - (1)].command);
-                         if (need_here_doc)
-@@ -3192,7 +3197,7 @@ yyreduce:
-     break;
-   case 150:
--#line 1144 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(1) - (2)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&');
-@@ -3211,7 +3216,7 @@ yyreduce:
-     break;
-   case 151:
--#line 1160 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(1) - (2)].command);
-                         if (need_here_doc)
-@@ -3227,17 +3232,17 @@ yyreduce:
-     break;
-   case 152:
--#line 1175 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
-     break;
-   case 153:
--#line 1177 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
-     break;
-   case 154:
--#line 1179 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(1) - (3)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&');
-@@ -3247,22 +3252,22 @@ yyreduce:
-     break;
-   case 155:
--#line 1186 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
-     break;
-   case 156:
--#line 1189 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 157:
--#line 1193 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 158:
--#line 1195 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(2) - (2)].command))
-                           (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN;     /* toggle */
-@@ -3271,7 +3276,7 @@ yyreduce:
-     break;
-   case 159:
--#line 1201 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(2) - (2)].command))
-                           (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number);
-@@ -3280,7 +3285,7 @@ yyreduce:
-     break;
-   case 160:
--#line 1207 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         ELEMENT x;
-@@ -3300,7 +3305,7 @@ yyreduce:
-     break;
-   case 161:
--#line 1224 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         ELEMENT x;
-@@ -3321,12 +3326,12 @@ yyreduce:
-     break;
-   case 162:
--#line 1244 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
-     break;
-   case 163:
--#line 1246 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
-                         COMMAND *tc;
-@@ -3352,28 +3357,28 @@ yyreduce:
-     break;
-   case 164:
--#line 1269 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 165:
--#line 1273 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE; }
-     break;
-   case 166:
--#line 1275 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-     break;
-   case 167:
--#line 1277 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-     break;
- /* Line 1267 of yacc.c.  */
--#line 3377 "y.tab.c"
-+#line 3382 "y.tab.c"
-       default: break;
-     }
-   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-@@ -3587,7 +3592,7 @@ yyreturn:
- }
--#line 1279 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
- /* Initial size to allocate for tokens, and the
-@@ -4948,6 +4953,21 @@ yylex ()
-    which allow ESAC to be the next one read. */
- static int esacs_needed_count;
-+static void
-+push_heredoc (r)
-+     REDIRECT *r;
-+{
-+  if (need_here_doc >= HEREDOC_MAX)
-+    {
-+      last_command_exit_value = EX_BADUSAGE;
-+      need_here_doc = 0;
-+      report_syntax_error (_("maximum here-document count exceeded"));
-+      reset_parser ();
-+      exit_shell (last_command_exit_value);
-+    }
-+  redir_stack[need_here_doc++] = r;
-+}
-+
- void
- gather_here_documents ()
- {
-@@ -8541,3 +8561,4 @@ set_line_mbstate ()
-     }
- }
- #endif /* HANDLE_MULTIBYTE */
-+
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 27
-+#define PATCHLEVEL 28
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/129-upstream-bash43-029.patch b/utils/bash/patches/129-upstream-bash43-029.patch
deleted file mode 100644 (file)
index be82403..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-029
-
-Bug-Reported-by:       Michal Zalewski <lcamtuf@coredump.cx>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-When bash is parsing a function definition that contains a here-document
-delimited by end-of-file (or end-of-string), it leaves the closing delimiter
-uninitialized.  This can result in an invalid memory access when the parsed
-function is later copied.
-
-Patch (apply with `patch -p0'):
-
---- a/make_cmd.c
-+++ b/make_cmd.c
-@@ -692,6 +692,7 @@ make_redirection (source, instruction, d
-   /* First do the common cases. */
-   temp->redirector = source;
-   temp->redirectee = dest_and_filename;
-+  temp->here_doc_eof = 0;
-   temp->instruction = instruction;
-   temp->flags = 0;
-   temp->rflags = flags;
---- a/copy_cmd.c
-+++ b/copy_cmd.c
-@@ -126,7 +126,7 @@ copy_redirect (redirect)
-     {
-     case r_reading_until:
-     case r_deblank_reading_until:
--      new_redirect->here_doc_eof = savestring (redirect->here_doc_eof);
-+      new_redirect->here_doc_eof = redirect->here_doc_eof ? savestring (redirect->here_doc_eof) : 0;
-       /*FALLTHROUGH*/
-     case r_reading_string:
-     case r_appending_to:
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 28
-+#define PATCHLEVEL 29
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/130-upstream-bash43-030.patch b/utils/bash/patches/130-upstream-bash43-030.patch
deleted file mode 100644 (file)
index 0eadc5c..0000000
+++ /dev/null
@@ -1,1396 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-030
-
-Bug-Reported-by:       Michal Zalewski <lcamtuf@coredump.cx>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-A combination of nested command substitutions and function importing from
-the environment can cause bash to execute code appearing in the environment
-variable value following the function definition.
-
-Patch (apply with `patch -p0'):
-
---- a/builtins/evalstring.c
-+++ b/builtins/evalstring.c
-@@ -308,12 +308,25 @@ parse_and_execute (string, from_file, fl
-           {
-             struct fd_bitmap *bitmap;
--            if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
-+            if (flags & SEVAL_FUNCDEF)
-               {
--                internal_warning ("%s: ignoring function definition attempt", from_file);
--                should_jump_to_top_level = 0;
--                last_result = last_command_exit_value = EX_BADUSAGE;
--                break;
-+                char *x;
-+
-+                /* If the command parses to something other than a straight
-+                   function definition, or if we have not consumed the entire
-+                   string, or if the parser has transformed the function
-+                   name (as parsing will if it begins or ends with shell
-+                   whitespace, for example), reject the attempt */
-+                if (command->type != cm_function_def ||
-+                    ((x = parser_remaining_input ()) && *x) ||
-+                    (STREQ (from_file, command->value.Function_def->name->word) == 0))
-+                  {
-+                    internal_warning (_("%s: ignoring function definition attempt"), from_file);
-+                    should_jump_to_top_level = 0;
-+                    last_result = last_command_exit_value = EX_BADUSAGE;
-+                    reset_parser ();
-+                    break;
-+                  }
-               }
-             bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
-@@ -378,7 +391,10 @@ parse_and_execute (string, from_file, fl
-             discard_unwind_frame ("pe_dispose");
-             if (flags & SEVAL_ONECMD)
--              break;
-+              {
-+                reset_parser ();
-+                break;
-+              }
-           }
-       }
-       else
---- a/parse.y
-+++ b/parse.y
-@@ -2538,6 +2538,16 @@ shell_ungetc (c)
-     eol_ungetc_lookahead = c;
- }
-+char *
-+parser_remaining_input ()
-+{
-+  if (shell_input_line == 0)
-+    return 0;
-+  if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
-+    return '\0';      /* XXX */
-+  return (shell_input_line + shell_input_line_index);
-+}
-+
- #ifdef INCLUDE_UNUSED
- /* Back the input pointer up by one, effectively `ungetting' a character. */
- static void
-@@ -4027,8 +4037,8 @@ xparse_dolparen (base, string, indp, fla
-   reset_parser ();
-   /* reset_parser clears shell_input_line and associated variables */
-   restore_input_line_state (&ls);
--  if (interactive)
--    token_to_read = 0;
-+
-+  token_to_read = 0;
-   /* Need to find how many characters parse_and_execute consumed, update
-      *indp, if flags != 0, copy the portion of the string parsed into RET
---- a/shell.h
-+++ b/shell.h
-@@ -180,6 +180,8 @@ typedef struct _sh_input_line_state_t {
- } sh_input_line_state_t;
- /* Let's try declaring these here. */
-+extern char *parser_remaining_input __P((void));
-+
- extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
- extern void restore_parser_state __P((sh_parser_state_t *));
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -168,7 +168,7 @@
- /* Copy the first part of user declarations.  */
--#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y"
- #include "config.h"
-@@ -497,7 +497,7 @@ static REDIRECTEE redir;
- #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
- typedef union YYSTYPE
--#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y"
- {
-   WORD_DESC *word;            /* the word that we read. */
-   int number;                 /* the number that we read. */
-@@ -2098,7 +2098,7 @@ yyreduce:
-   switch (yyn)
-     {
-         case 2:
--#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Case of regular command.  Discard the error
-                            safety net,and return the command just parsed. */
-@@ -2112,7 +2112,7 @@ yyreduce:
-     break;
-   case 3:
--#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Case of regular command, but not a very
-                            interesting one.  Return a NULL command. */
-@@ -2124,7 +2124,7 @@ yyreduce:
-     break;
-   case 4:
--#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Error during parsing.  Return NULL command. */
-                         global_command = (COMMAND *)NULL;
-@@ -2142,7 +2142,7 @@ yyreduce:
-     break;
-   case 5:
--#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Case of EOF seen by itself.  Do ignoreeof or
-                            not. */
-@@ -2153,17 +2153,17 @@ yyreduce:
-     break;
-   case 6:
--#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
-     break;
-   case 7:
--#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
-     break;
-   case 8:
--#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2172,7 +2172,7 @@ yyreduce:
-     break;
-   case 9:
--#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2181,7 +2181,7 @@ yyreduce:
-     break;
-   case 10:
--#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2190,7 +2190,7 @@ yyreduce:
-     break;
-   case 11:
--#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2199,7 +2199,7 @@ yyreduce:
-     break;
-   case 12:
--#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2208,7 +2208,7 @@ yyreduce:
-     break;
-   case 13:
--#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2217,7 +2217,7 @@ yyreduce:
-     break;
-   case 14:
--#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2226,7 +2226,7 @@ yyreduce:
-     break;
-   case 15:
--#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2235,7 +2235,7 @@ yyreduce:
-     break;
-   case 16:
--#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2244,7 +2244,7 @@ yyreduce:
-     break;
-   case 17:
--#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2253,7 +2253,7 @@ yyreduce:
-     break;
-   case 18:
--#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2262,7 +2262,7 @@ yyreduce:
-     break;
-   case 19:
--#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2271,7 +2271,7 @@ yyreduce:
-     break;
-   case 20:
--#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2280,7 +2280,7 @@ yyreduce:
-     break;
-   case 21:
--#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2289,7 +2289,7 @@ yyreduce:
-     break;
-   case 22:
--#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2298,7 +2298,7 @@ yyreduce:
-     break;
-   case 23:
--#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2308,7 +2308,7 @@ yyreduce:
-     break;
-   case 24:
--#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2318,7 +2318,7 @@ yyreduce:
-     break;
-   case 25:
--#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2328,7 +2328,7 @@ yyreduce:
-     break;
-   case 26:
--#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2338,7 +2338,7 @@ yyreduce:
-     break;
-   case 27:
--#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2348,7 +2348,7 @@ yyreduce:
-     break;
-   case 28:
--#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2358,7 +2358,7 @@ yyreduce:
-     break;
-   case 29:
--#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2367,7 +2367,7 @@ yyreduce:
-     break;
-   case 30:
--#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2376,7 +2376,7 @@ yyreduce:
-     break;
-   case 31:
--#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2385,7 +2385,7 @@ yyreduce:
-     break;
-   case 32:
--#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.dest = (yyvsp[(2) - (2)].number);
-@@ -2394,7 +2394,7 @@ yyreduce:
-     break;
-   case 33:
--#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2403,7 +2403,7 @@ yyreduce:
-     break;
-   case 34:
--#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2412,7 +2412,7 @@ yyreduce:
-     break;
-   case 35:
--#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.dest = (yyvsp[(2) - (2)].number);
-@@ -2421,7 +2421,7 @@ yyreduce:
-     break;
-   case 36:
--#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2430,7 +2430,7 @@ yyreduce:
-     break;
-   case 37:
--#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2439,7 +2439,7 @@ yyreduce:
-     break;
-   case 38:
--#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2448,7 +2448,7 @@ yyreduce:
-     break;
-   case 39:
--#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2457,7 +2457,7 @@ yyreduce:
-     break;
-   case 40:
--#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2466,7 +2466,7 @@ yyreduce:
-     break;
-   case 41:
--#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2475,7 +2475,7 @@ yyreduce:
-     break;
-   case 42:
--#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2484,7 +2484,7 @@ yyreduce:
-     break;
-   case 43:
--#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2493,7 +2493,7 @@ yyreduce:
-     break;
-   case 44:
--#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.dest = 0;
-@@ -2502,7 +2502,7 @@ yyreduce:
-     break;
-   case 45:
--#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = 0;
-@@ -2511,7 +2511,7 @@ yyreduce:
-     break;
-   case 46:
--#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = 0;
-@@ -2520,7 +2520,7 @@ yyreduce:
-     break;
-   case 47:
--#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.dest = 0;
-@@ -2529,7 +2529,7 @@ yyreduce:
-     break;
-   case 48:
--#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = 0;
-@@ -2538,7 +2538,7 @@ yyreduce:
-     break;
-   case 49:
--#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = 0;
-@@ -2547,7 +2547,7 @@ yyreduce:
-     break;
-   case 50:
--#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2556,7 +2556,7 @@ yyreduce:
-     break;
-   case 51:
--#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2565,29 +2565,29 @@ yyreduce:
-     break;
-   case 52:
--#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
-     break;
-   case 53:
--#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
-     break;
-   case 54:
--#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
-     break;
-   case 55:
--#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
-                       }
-     break;
-   case 56:
--#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         register REDIRECT *t;
-@@ -2599,27 +2599,27 @@ yyreduce:
-     break;
-   case 57:
--#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
-     break;
-   case 58:
--#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
-     break;
-   case 59:
--#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
-     break;
-   case 60:
--#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 61:
--#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2638,72 +2638,72 @@ yyreduce:
-     break;
-   case 62:
--#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 63:
--#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 64:
--#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 65:
--#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 66:
--#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
-     break;
-   case 67:
--#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
-     break;
-   case 68:
--#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 69:
--#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 70:
--#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 71:
--#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 72:
--#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 73:
--#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 74:
--#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 75:
--#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2711,7 +2711,7 @@ yyreduce:
-     break;
-   case 76:
--#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2719,7 +2719,7 @@ yyreduce:
-     break;
-   case 77:
--#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2727,7 +2727,7 @@ yyreduce:
-     break;
-   case 78:
--#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2735,7 +2735,7 @@ yyreduce:
-     break;
-   case 79:
--#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2743,7 +2743,7 @@ yyreduce:
-     break;
-   case 80:
--#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2751,7 +2751,7 @@ yyreduce:
-     break;
-   case 81:
--#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2759,7 +2759,7 @@ yyreduce:
-     break;
-   case 82:
--#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2767,7 +2767,7 @@ yyreduce:
-     break;
-   case 83:
--#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2775,7 +2775,7 @@ yyreduce:
-     break;
-   case 84:
--#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2783,7 +2783,7 @@ yyreduce:
-     break;
-   case 85:
--#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2791,7 +2791,7 @@ yyreduce:
-     break;
-   case 86:
--#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2799,7 +2799,7 @@ yyreduce:
-     break;
-   case 87:
--#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2807,7 +2807,7 @@ yyreduce:
-     break;
-   case 88:
--#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2815,7 +2815,7 @@ yyreduce:
-     break;
-   case 89:
--#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2823,7 +2823,7 @@ yyreduce:
-     break;
-   case 90:
--#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2831,7 +2831,7 @@ yyreduce:
-     break;
-   case 91:
--#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2839,7 +2839,7 @@ yyreduce:
-     break;
-   case 92:
--#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2847,7 +2847,7 @@ yyreduce:
-     break;
-   case 93:
--#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2855,7 +2855,7 @@ yyreduce:
-     break;
-   case 94:
--#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2863,7 +2863,7 @@ yyreduce:
-     break;
-   case 95:
--#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2871,27 +2871,27 @@ yyreduce:
-     break;
-   case 96:
--#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
-     break;
-   case 97:
--#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
-     break;
-   case 98:
--#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
-     break;
-   case 99:
--#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 100:
--#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2923,7 +2923,7 @@ yyreduce:
-     break;
-   case 101:
--#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL;
-@@ -2931,7 +2931,7 @@ yyreduce:
-     break;
-   case 102:
--#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2939,7 +2939,7 @@ yyreduce:
-     break;
-   case 103:
--#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2959,7 +2959,7 @@ yyreduce:
-     break;
-   case 104:
--#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2967,7 +2967,7 @@ yyreduce:
-     break;
-   case 105:
--#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2987,7 +2987,7 @@ yyreduce:
-     break;
-   case 106:
--#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2995,117 +2995,117 @@ yyreduce:
-     break;
-   case 107:
--#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
-     break;
-   case 108:
--#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
-     break;
-   case 109:
--#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
-     break;
-   case 110:
--#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
-     break;
-   case 111:
--#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
-     break;
-   case 112:
--#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(2) - (3)].command); }
-     break;
-   case 113:
--#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
-     break;
-   case 114:
--#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
-     break;
-   case 115:
--#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
-     break;
-   case 117:
--#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
-     break;
-   case 118:
--#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
-     break;
-   case 119:
--#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
-     break;
-   case 120:
--#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
-     break;
-   case 121:
--#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
-     break;
-   case 122:
--#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 123:
--#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 124:
--#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 125:
--#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 126:
--#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 127:
--#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 128:
--#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
-     break;
-   case 129:
--#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
-     break;
-   case 130:
--#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(2) - (2)].command);
-                         if (need_here_doc)
-@@ -3114,14 +3114,14 @@ yyreduce:
-     break;
-   case 132:
--#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(2) - (2)].command);
-                       }
-     break;
-   case 134:
--#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(1) - (3)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&');
-@@ -3131,17 +3131,17 @@ yyreduce:
-     break;
-   case 136:
--#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
-     break;
-   case 137:
--#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
-     break;
-   case 138:
--#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(1) - (4)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&');
-@@ -3151,37 +3151,37 @@ yyreduce:
-     break;
-   case 139:
--#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
-     break;
-   case 140:
--#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
-     break;
-   case 141:
--#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 144:
--#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = '\n'; }
-     break;
-   case 145:
--#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = ';'; }
-     break;
-   case 146:
--#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = yacc_EOF; }
-     break;
-   case 149:
--#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(1) - (1)].command);
-                         if (need_here_doc)
-@@ -3197,7 +3197,7 @@ yyreduce:
-     break;
-   case 150:
--#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(1) - (2)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&');
-@@ -3216,7 +3216,7 @@ yyreduce:
-     break;
-   case 151:
--#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(1) - (2)].command);
-                         if (need_here_doc)
-@@ -3232,17 +3232,17 @@ yyreduce:
-     break;
-   case 152:
--#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
-     break;
-   case 153:
--#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
-     break;
-   case 154:
--#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(1) - (3)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&');
-@@ -3252,22 +3252,22 @@ yyreduce:
-     break;
-   case 155:
--#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
-     break;
-   case 156:
--#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 157:
--#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 158:
--#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(2) - (2)].command))
-                           (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN;     /* toggle */
-@@ -3276,7 +3276,7 @@ yyreduce:
-     break;
-   case 159:
--#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(2) - (2)].command))
-                           (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number);
-@@ -3285,7 +3285,7 @@ yyreduce:
-     break;
-   case 160:
--#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         ELEMENT x;
-@@ -3305,7 +3305,7 @@ yyreduce:
-     break;
-   case 161:
--#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         ELEMENT x;
-@@ -3326,12 +3326,12 @@ yyreduce:
-     break;
-   case 162:
--#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
-     break;
-   case 163:
--#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
-                         COMMAND *tc;
-@@ -3357,22 +3357,22 @@ yyreduce:
-     break;
-   case 164:
--#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 165:
--#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE; }
-     break;
-   case 166:
--#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-     break;
-   case 167:
--#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-     break;
-@@ -3592,7 +3592,7 @@ yyreturn:
- }
--#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y"
- /* Initial size to allocate for tokens, and the
-@@ -4850,6 +4850,16 @@ shell_ungetc (c)
-     eol_ungetc_lookahead = c;
- }
-+char *
-+parser_remaining_input ()
-+{
-+  if (shell_input_line == 0)
-+    return 0;
-+  if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
-+    return '\0';      /* XXX */
-+  return (shell_input_line + shell_input_line_index);
-+}
-+
- #ifdef INCLUDE_UNUSED
- /* Back the input pointer up by one, effectively `ungetting' a character. */
- static void
-@@ -6339,8 +6349,8 @@ xparse_dolparen (base, string, indp, fla
-   reset_parser ();
-   /* reset_parser clears shell_input_line and associated variables */
-   restore_input_line_state (&ls);
--  if (interactive)
--    token_to_read = 0;
-+
-+  token_to_read = 0;
-   /* Need to find how many characters parse_and_execute consumed, update
-      *indp, if flags != 0, copy the portion of the string parsed into RET
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 29
-+#define PATCHLEVEL 30
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/131-upstream-bash43-031.patch b/utils/bash/patches/131-upstream-bash43-031.patch
deleted file mode 100644 (file)
index a22cb07..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-031
-
-Bug-Reported-by:       lolilolicon <lolilolicon@gmail.com>
-Bug-Reference-ID:      <CAMtVo_Nz=32Oq=zWTb6=+8gUNXOo2rRvud1W4oPnA-cgVk_ZqQ@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00139.html
-
-Bug-Description:
-
-The new nameref assignment functionality introduced in bash-4.3 did not perform
-enough validation on the variable value and would create variables with
-invalid names.
-
-Patch (apply with `patch -p0'):
-
---- a/subst.h
-+++ b/subst.h
-@@ -47,6 +47,7 @@
- #define ASS_MKASSOC   0x0004
- #define ASS_MKGLOBAL  0x0008  /* force global assignment */
- #define ASS_NAMEREF   0x0010  /* assigning to nameref variable */
-+#define ASS_FROMREF   0x0020  /* assigning from value of nameref variable */
- /* Flags for the string extraction functions. */
- #define SX_NOALLOC    0x0001  /* just skip; don't return substring */
---- a/variables.c
-+++ b/variables.c
-@@ -2516,10 +2516,27 @@ bind_variable_internal (name, value, tab
-      HASH_TABLE *table;
-      int hflags, aflags;
- {
--  char *newval;
-+  char *newname, *newval;
-   SHELL_VAR *entry;
-+#if defined (ARRAY_VARS)
-+  arrayind_t ind;
-+  char *subp;
-+  int sublen;
-+#endif
-+  newname = 0;
-+#if defined (ARRAY_VARS)
-+  if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name))
-+    {
-+      newname = array_variable_name (name, &subp, &sublen);
-+      if (newname == 0)
-+      return (SHELL_VAR *)NULL;       /* XXX */
-+      entry = hash_lookup (newname, table);
-+    }
-+  else
-+#endif
-   entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
-+
-   /* Follow the nameref chain here if this is the global variables table */
-   if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
-     {
-@@ -2550,6 +2567,16 @@ bind_variable_internal (name, value, tab
-       var_setvalue (entry, make_variable_value (entry, value, 0));
-       }
-     }
-+#if defined (ARRAY_VARS)
-+  else if (entry == 0 && newname)
-+    {
-+      entry = make_new_array_variable (newname);      /* indexed array by default */
-+      if (entry == 0)
-+      return entry;
-+      ind = array_expand_index (name, subp, sublen);
-+      bind_array_element (entry, ind, value, aflags);
-+    }
-+#endif
-   else if (entry == 0)
-     {
-       entry = make_new_variable (name, table);
-@@ -2670,7 +2697,8 @@ bind_variable (name, value, flags)
-                        normal. */
-                     if (nameref_cell (nv) == 0)
-                       return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
--                    return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
-+                    /* XXX - bug here with ref=array[index] */
-+                    return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF));
-                   }
-                 else
-                   v = nv;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 30
-+#define PATCHLEVEL 31
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/132-upstream-bash43-032.patch b/utils/bash/patches/132-upstream-bash43-032.patch
deleted file mode 100644 (file)
index 96a86c9..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-032
-
-Bug-Reported-by:       crispusfairbairn@gmail.com
-Bug-Reference-ID:      <b5e499f7-3b98-408d-9f94-c0387580e73a@googlegroups.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00013.html
-
-Bug-Description:
-
-When bash is running in Posix mode, it allows signals -- including SIGCHLD --
-to interrupt the `wait' builtin, as Posix requires.  However, the interrupt
-causes bash to not run a SIGCHLD trap for all exited children.  This patch
-fixes the issue and restores the documented behavior in Posix mode.
-
-Patch (apply with `patch -p0'):
-
---- a/jobs.c
-+++ b/jobs.c
-@@ -3339,7 +3339,9 @@ itrace("waitchld: waitpid returns %d blo
-       if (posixly_correct && this_shell_builtin && this_shell_builtin == wait_builtin)
-       {
-         interrupt_immediately = 0;
--        trap_handler (SIGCHLD);       /* set pending_traps[SIGCHLD] */
-+        /* This was trap_handler (SIGCHLD) but that can lose traps if
-+           children_exited > 1 */
-+        queue_sigchld_trap (children_exited);
-         wait_signal_received = SIGCHLD;
-         /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
-            run_pending_traps will call run_sigchld_trap later  */
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 31
-+#define PATCHLEVEL 32
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/133-upstream-bash43-033.patch b/utils/bash/patches/133-upstream-bash43-033.patch
deleted file mode 100644 (file)
index 6210b5e..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-033
-
-Bug-Reported-by:       mickael9@gmail.com, Jan Rome <jan.rome@gmail.com>
-Bug-Reference-ID:      <20140907224046.382ED3610CC@mickael-laptop.localdomain>,
-                       <540D661D.50908@gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00029.html
-                       http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00030.html
-
-Bug-Description:
-
-Bash does not clean up the terminal state in all cases where bash or
-readline  modifies it and bash is subsequently terminated by a fatal signal.
-This happens when the `read' builtin modifies the terminal settings, both
-when readline is active and when it is not.  It occurs most often when a script
-installs a trap that exits on a signal without re-sending the signal to itself.
-
-Patch (apply with `patch -p0'):
-
---- a/shell.c
-+++ b/shell.c
-@@ -73,6 +73,7 @@
- #endif
- #if defined (READLINE)
-+#  include <readline/readline.h>
- #  include "bashline.h"
- #endif
-@@ -909,6 +910,14 @@ exit_shell (s)
-   fflush (stdout);            /* XXX */
-   fflush (stderr);
-+  /* Clean up the terminal if we are in a state where it's been modified. */
-+#if defined (READLINE)
-+  if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function)
-+    (*rl_deprep_term_function) ();
-+#endif
-+  if (read_tty_modified ())
-+    read_tty_cleanup ();
-+
-   /* Do trap[0] if defined.  Allow it to override the exit status
-      passed to us. */
-   if (signal_is_trapped (0))
---- a/builtins/read.def
-+++ b/builtins/read.def
-@@ -140,10 +140,12 @@ static void reset_alarm __P((void));
- procenv_t alrmbuf;
- int sigalrm_seen;
--static int reading;
-+static int reading, tty_modified;
- static SigHandler *old_alrm;
- static unsigned char delim;
-+static struct ttsave termsave;
-+
- /* In all cases, SIGALRM just sets a flag that we check periodically.  This
-    avoids problems with the semi-tricky stuff we do with the xfree of
-    input_string at the top of the unwind-protect list (see below). */
-@@ -188,7 +190,6 @@ read_builtin (list)
-   struct stat tsb;
-   SHELL_VAR *var;
-   TTYSTRUCT ttattrs, ttset;
--  struct ttsave termsave;
- #if defined (ARRAY_VARS)
-   WORD_LIST *alist;
- #endif
-@@ -221,7 +222,7 @@ read_builtin (list)
-   USE_VAR(ps2);
-   USE_VAR(lastsig);
--  sigalrm_seen = reading = 0;
-+  sigalrm_seen = reading = tty_modified = 0;
-   i = 0;              /* Index into the string that we are reading. */
-   raw = edit = 0;     /* Not reading raw input by default. */
-@@ -438,6 +439,8 @@ read_builtin (list)
-         retval = 128+SIGALRM;
-         goto assign_vars;
-       }
-+      if (interactive_shell == 0)
-+      initialize_terminating_signals ();
-       old_alrm = set_signal_handler (SIGALRM, sigalrm);
-       add_unwind_protect (reset_alarm, (char *)NULL);
- #if defined (READLINE)
-@@ -482,7 +485,10 @@ read_builtin (list)
-         i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset);
-         if (i < 0)
-           sh_ttyerror (1);
-+        tty_modified = 1;
-         add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
-+        if (interactive_shell == 0)
-+          initialize_terminating_signals ();
-       }
-     }
-   else if (silent)    /* turn off echo but leave term in canonical mode */
-@@ -497,7 +503,10 @@ read_builtin (list)
-       if (i < 0)
-       sh_ttyerror (1);
-+      tty_modified = 1;
-       add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
-+      if (interactive_shell == 0)
-+      initialize_terminating_signals ();
-     }
-   /* This *must* be the top unwind-protect on the stack, so the manipulation
-@@ -588,6 +597,8 @@ read_builtin (list)
-           }
-         else
-           lastsig = 0;
-+        if (terminating_signal && tty_modified)
-+          ttyrestore (&termsave);     /* fix terminal before exiting */
-         CHECK_TERMSIG;
-         eof = 1;
-         break;
-@@ -978,6 +989,20 @@ ttyrestore (ttp)
-      struct ttsave *ttp;
- {
-   ttsetattr (ttp->fd, ttp->attrs);
-+  tty_modified = 0;
-+}
-+
-+void
-+read_tty_cleanup ()
-+{
-+  if (tty_modified)
-+    ttyrestore (&termsave);
-+}
-+
-+int
-+read_tty_modified ()
-+{
-+  return (tty_modified);
- }
- #if defined (READLINE)
---- a/builtins/common.h
-+++ b/builtins/common.h
-@@ -122,6 +122,10 @@ extern void bash_logout __P((void));
- /* Functions from getopts.def */
- extern void getopts_reset __P((int));
-+/* Functions from read.def */
-+extern void read_tty_cleanup __P((void));
-+extern int read_tty_modified __P((void));
-+
- /* Functions from set.def */
- extern int minus_o_option_value __P((char *));
- extern void list_minus_o_opts __P((int, int));
---- a/bashline.c
-+++ b/bashline.c
-@@ -202,6 +202,7 @@ extern int current_command_line_count, s
- extern int last_command_exit_value;
- extern int array_needs_making;
- extern int posixly_correct, no_symbolic_links;
-+extern int sigalrm_seen;
- extern char *current_prompt_string, *ps1_prompt;
- extern STRING_INT_ALIST word_token_alist[];
- extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
-@@ -4208,8 +4209,9 @@ bash_event_hook ()
- {
-   /* If we're going to longjmp to top_level, make sure we clean up readline.
-      check_signals will call QUIT, which will eventually longjmp to top_level,
--     calling run_interrupt_trap along the way. */
--  if (interrupt_state)
-+     calling run_interrupt_trap along the way.  The check for sigalrm_seen is
-+     to clean up the read builtin's state. */
-+  if (terminating_signal || interrupt_state || sigalrm_seen)
-     rl_cleanup_after_signal ();
-   bashline_reset_event_hook ();
-   check_signals_and_traps (); /* XXX */
---- a/sig.c
-+++ b/sig.c
-@@ -532,8 +532,10 @@ termsig_sighandler (sig)
- #if defined (READLINE)
-   /* Set the event hook so readline will call it after the signal handlers
-      finish executing, so if this interrupted character input we can get
--     quick response. */
--  if (interactive_shell && interactive && no_line_editing == 0)
-+     quick response.  If readline is active or has modified the terminal we
-+     need to set this no matter what the signal is, though the check for
-+     RL_STATE_TERMPREPPED is possibly redundant. */
-+  if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED))
-     bashline_set_event_hook ();
- #endif
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 32
-+#define PATCHLEVEL 33
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/134-upstream-bash43-034.patch b/utils/bash/patches/134-upstream-bash43-034.patch
deleted file mode 100644 (file)
index d3c4f8f..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-034
-
-Bug-Reported-by:       Dreamcat4 <dreamcat4@gmail.com>
-Bug-Reference-ID:      <CAN39uTpAEs2GFu4ebC_SfSVMRTh-DJ9YanrY4BZZ3OO+CCHjng@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-05/msg00001.html
-
-Bug-Description:
-
-If neither the -f nor -v options is supplied to unset, and a name argument is
-found to be a function and unset, subsequent name arguments are not treated as
-variables before attempting to unset a function by that name.
-
-Patch (apply with `patch -p0'):
-
---- a/builtins/set.def
-+++ b/builtins/set.def
-@@ -751,9 +751,11 @@ unset_builtin (list)
-   WORD_LIST *list;
- {
-   int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
-+  int global_unset_func, global_unset_var;
-   char *name;
-   unset_function = unset_variable = unset_array = nameref = any_failed = 0;
-+  global_unset_func = global_unset_var = 0;
-   reset_internal_getopt ();
-   while ((opt = internal_getopt (list, "fnv")) != -1)
-@@ -761,10 +763,10 @@ unset_builtin (list)
-       switch (opt)
-       {
-       case 'f':
--        unset_function = 1;
-+        global_unset_func = 1;
-         break;
-       case 'v':
--        unset_variable = 1;
-+        global_unset_var = 1;
-         break;
-       case 'n':
-         nameref = 1;
-@@ -777,7 +779,7 @@ unset_builtin (list)
-   list = loptend;
--  if (unset_function && unset_variable)
-+  if (global_unset_func && global_unset_var)
-     {
-       builtin_error (_("cannot simultaneously unset a function and a variable"));
-       return (EXECUTION_FAILURE);
-@@ -795,6 +797,9 @@ unset_builtin (list)
-       name = list->word->word;
-+      unset_function = global_unset_func;
-+      unset_variable = global_unset_var;
-+
- #if defined (ARRAY_VARS)
-       unset_array = 0;
-       if (!unset_function && valid_array_reference (name))
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 33
-+#define PATCHLEVEL 34
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/135-upstream-bash43-035.patch b/utils/bash/patches/135-upstream-bash43-035.patch
deleted file mode 100644 (file)
index 4e614ce..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-035
-
-Bug-Reported-by:       <romerox.adrian@gmail.com>
-Bug-Reference-ID:      <CABV5r3zhPXmSKUe9uedeGc5YFBM2njJ1iVmY2h5neWdQpDBQug@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00045.html
-
-Bug-Description:
-
-A locale with a long name can trigger a buffer overflow and core dump.  This
-applies on systems that do not have locale_charset in libc, are not using
-GNU libiconv, and are not using the libintl that ships with bash in lib/intl.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/sh/unicode.c
-+++ b/lib/sh/unicode.c
-@@ -78,13 +78,15 @@ stub_charset ()
-   s = strrchr (locale, '.');
-   if (s)
-     {
--      strcpy (charsetbuf, s+1);
-+      strncpy (charsetbuf, s+1, sizeof (charsetbuf) - 1);
-+      charsetbuf[sizeof (charsetbuf) - 1] = '\0';
-       t = strchr (charsetbuf, '@');
-       if (t)
-       *t = 0;
-       return charsetbuf;
-     }
--  strcpy (charsetbuf, locale);
-+  strncpy (charsetbuf, locale, sizeof (charsetbuf) - 1);
-+  charsetbuf[sizeof (charsetbuf) - 1] = '\0';
-   return charsetbuf;
- }
- #endif
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 34
-+#define PATCHLEVEL 35
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/136-upstream-bash43-036.patch b/utils/bash/patches/136-upstream-bash43-036.patch
deleted file mode 100644 (file)
index 198b662..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-036
-
-Bug-Reported-by:       emanuelczirai@cryptolab.net
-Bug-Reference-ID:      <f962e4f556da5ebfadaf7afe9c78a8cb@cryptolab.net>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00071.html
-
-Bug-Description:
-
-When evaluating and setting integer variables, and the assignment fails to
-create a variable (for example, when performing an operation on an array
-variable with an invalid subscript), bash attempts to dereference a null
-pointer, causing a segmentation violation.
-
-Patch (apply with `patch -p0'):
-
---- a/variables.c
-+++ b/variables.c
-@@ -2833,10 +2833,12 @@ bind_int_variable (lhs, rhs)
- #endif
-     v = bind_variable (lhs, rhs, 0);
--  if (v && isint)
--    VSETATTR (v, att_integer);
--
--  VUNSETATTR (v, att_invisible);
-+  if (v)
-+    {
-+      if (isint)
-+      VSETATTR (v, att_integer);
-+      VUNSETATTR (v, att_invisible);
-+    }
-   return (v);
- }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 35
-+#define PATCHLEVEL 36
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/137-upstream-bash43-037.patch b/utils/bash/patches/137-upstream-bash43-037.patch
deleted file mode 100644 (file)
index 946e9fe..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-037
-
-Bug-Reported-by:       Greg Wooledge <wooledg@eeg.ccf.org>
-Bug-Reference-ID:      <20150204144240.GN13956@eeg.ccf.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00007.html
-
-Bug-Description:
-
-If an associative array uses `@' or `*' as a subscript, `declare -p' produces
-output that cannot be reused as input.
-
-Patch (apply with `patch -p0'):
-
---- a/assoc.c
-+++ b/assoc.c
-@@ -436,6 +436,8 @@ assoc_to_assign (hash, quoted)
- #if 1
-       if (sh_contains_shell_metas (tlist->key))
-         istr = sh_double_quote (tlist->key);
-+      else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0')
-+        istr = sh_double_quote (tlist->key);  
-       else
-         istr = tlist->key;    
- #else
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 36
-+#define PATCHLEVEL 37
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/138-upstream-bash43-038.patch b/utils/bash/patches/138-upstream-bash43-038.patch
deleted file mode 100644 (file)
index 9857847..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-038
-
-Bug-Reported-by:       worley@alum.mit.edu (Dale R. Worley)
-Bug-Reference-ID:      <201406100051.s5A0pCeB014978@hobgoblin.ariadne.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00028.html
-
-Bug-Description:
-
-There are a number of instances where `time' is not recognized as a reserved
-word when the shell grammar says it should be.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -2818,11 +2818,16 @@ time_command_acceptable ()
-     case AND_AND:
-     case OR_OR:
-     case '&':
-+    case WHILE:
-     case DO:
-+    case UNTIL:
-+    case IF:
-     case THEN:
-+    case ELIF:
-     case ELSE:
-     case '{':         /* } */
--    case '(':         /* ) */
-+    case '(':         /* )( */
-+    case ')':         /* only valid in case statement */
-     case BANG:                /* ! time pipeline */
-     case TIME:                /* time time pipeline */
-     case TIMEOPT:     /* time -p time pipeline */
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -5130,11 +5130,16 @@ time_command_acceptable ()
-     case AND_AND:
-     case OR_OR:
-     case '&':
-+    case WHILE:
-     case DO:
-+    case UNTIL:
-+    case IF:
-     case THEN:
-+    case ELIF:
-     case ELSE:
-     case '{':         /* } */
--    case '(':         /* ) */
-+    case '(':         /* )( */
-+    case ')':         /* only valid in case statement */
-     case BANG:                /* ! time pipeline */
-     case TIME:                /* time time pipeline */
-     case TIMEOPT:     /* time -p time pipeline */
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 37
-+#define PATCHLEVEL 38
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/139-upstream-bash43-039.patch b/utils/bash/patches/139-upstream-bash43-039.patch
deleted file mode 100644 (file)
index f8ad363..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-039
-
-Bug-Reported-by:       SN <poczta-sn@gazeta.pl>
-Bug-Reference-ID:      <54E2554C.205@gazeta.pl>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00060.html
-
-Bug-Description:
-
-Using the output of `declare -p' when run in a function can result in variables
-that are invisible to `declare -p'.  This problem occurs when an assignment
-builtin such as `declare' receives a quoted compound array assignment as one of
-its arguments.
-
-Patch (apply with `patch -p0'):
-
---- a/arrayfunc.c
-+++ b/arrayfunc.c
-@@ -404,6 +404,9 @@ assign_array_var_from_word_list (var, li
-       (*var->assign_func) (var, l->word->word, i, 0);
-     else
-       array_insert (a, i, l->word->word);
-+
-+  VUNSETATTR (var, att_invisible);    /* no longer invisible */
-+
-   return var;
- }
-@@ -634,6 +637,10 @@ assign_array_var_from_string (var, value
-   if (nlist)
-     dispose_words (nlist);
-+
-+  if (var)
-+    VUNSETATTR (var, att_invisible);  /* no longer invisible */
-+
-   return (var);
- }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 38
-+#define PATCHLEVEL 39
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/140-upstream-bash43-040.patch b/utils/bash/patches/140-upstream-bash43-040.patch
deleted file mode 100644 (file)
index a329d37..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-040
-
-Bug-Reported-by:       Jean Delvare <jdelvare@suse.de>
-Bug-Reference-ID:      <20150609180231.5f463695@endymion.delvare>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00033.html
-
-Bug-Description:
-
-There is a memory leak that occurs when bash expands an array reference on
-the rhs of an assignment statement.
-
-Patch (apply with `patch -p0'):
-
---- a/subst.c
-+++ b/subst.c
-@@ -5782,7 +5782,7 @@ expand_arrayref:
-       /* XXX - does this leak if name[@] or name[*]? */
-       if (pflags & PF_ASSIGNRHS)
-         {
--          temp = array_variable_name (name, &tt, (int *)0);
-+          var = array_variable_part (name, &tt, (int *)0);
-           if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']')
-           temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind);
-         else
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 39
-+#define PATCHLEVEL 40
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/141-upstream-bash43-041.patch b/utils/bash/patches/141-upstream-bash43-041.patch
deleted file mode 100644 (file)
index 75fdace..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-041
-
-Bug-Reported-by:       Hanno Böck <hanno@hboeck.de>
-Bug-Reference-ID:      <20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html,
-                       http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html
-
-Bug-Description:
-
-There are several out-of-bounds read errors that occur when completing command
-lines where assignment statements appear before the command name.  The first
-two appear only when programmable completion is enabled; the last one only
-happens when listing possible completions.
-
-Patch (apply with `patch -p0'):
-
---- a/bashline.c
-+++ b/bashline.c
-@@ -1468,10 +1468,23 @@ attempt_shell_completion (text, start, e
-       os = start;
-       n = 0;
-+      was_assignment = 0;
-       s = find_cmd_start (os);
-       e = find_cmd_end (end);
-       do
-       {
-+        /* Don't read past the end of rl_line_buffer */
-+        if (s > rl_end)
-+          {
-+            s1 = s = e1;
-+            break;
-+          }
-+        /* Or past point if point is within an assignment statement */
-+        else if (was_assignment && s > rl_point)
-+          {
-+            s1 = s = e1;
-+            break;
-+          }
-         /* Skip over assignment statements preceding a command name.  If we
-            don't find a command name at all, we can perform command name
-            completion.  If we find a partial command name, we should perform
---- a/lib/readline/complete.c
-+++ b/lib/readline/complete.c
-@@ -689,6 +689,8 @@ printable_part (pathname)
-   if (temp == 0 || *temp == '\0')
-     return (pathname);
-+  else if (temp[1] == 0 && temp == pathname)
-+    return (pathname);
-   /* If the basename is NULL, we might have a pathname like '/usr/src/'.
-      Look for a previous slash and, if one is found, return the portion
-      following that slash.  If there's no previous slash, just return the
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 40
-+#define PATCHLEVEL 41
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/142-upstream-bash43-042.patch b/utils/bash/patches/142-upstream-bash43-042.patch
deleted file mode 100644 (file)
index bf1546b..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-042
-
-Bug-Reported-by:       Nathan Neulinger <nneul@neulinger.org>
-Bug-Reference-ID:      <558EFDF2.7060402@neulinger.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00096.html
-
-Bug-Description:
-
-There is a problem when parsing command substitutions containing `case'
-commands within pipelines that causes the parser to not correctly identify
-the end of the command substitution.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -3708,6 +3708,8 @@ eof_error:
- /*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/
-             tflags |= LEX_INWORD;
-             lex_wlen = 0;
-+            if (tflags & LEX_RESWDOK)
-+              lex_rwlen = 0;
-           }
-       }
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -6020,6 +6020,8 @@ eof_error:
- /*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/
-             tflags |= LEX_INWORD;
-             lex_wlen = 0;
-+            if (tflags & LEX_RESWDOK)
-+              lex_rwlen = 0;
-           }
-       }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 41
-+#define PATCHLEVEL 42
- #endif /* _PATCHLEVEL_H_ */
index bc7df71ce8b3ba6d5129ce78d08d8e5281eb7330..1c8a16d3e4ed6c374f587c343809c06b82079fc9 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=vim
-PKG_VERSION:=8.0.069
-PKG_RELEASE:=4
+PKG_VERSION:=8.0.586
+PKG_RELEASE:=1
 VIMVER:=80
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=ftp://ftp.vim.org/pub/vim/unix/
-PKG_HASH:=2e179182814715c3c77010c7300a4abcb964ba8a99a470640f9f2f03884b2ccb
+PKG_HASH:=08bd0d1dd30ece3cb9905ccd48b82b2f81c861696377508021265177dc153a61
 PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)$(VIMVER)