summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2023-11-10 18:46:44 +0000
committer Eric Hameleers <alien@slackware.com>2023-11-10 20:43:58 +0100
commita72f2094ac7c81c496b17288c11d9a817a1e900d (patch)
tree736924dcaf681dd546a0b4e9c23092b517f9e0bb
parent2d1558f83088dc6f975d1d648d24fa228fc98d83 (diff)
downloadcurrent-a72f2094ac7c81c496b17288c11d9a817a1e900d.tar.gz
current-a72f2094ac7c81c496b17288c11d9a817a1e900d.tar.xz
Fri Nov 10 18:46:44 UTC 202320231110184644
a/bash-5.2.021-x86_64-1.txz: Upgraded. ap/rdfind-1.6.0-x86_64-1.txz: Added. ap/sudo-1.9.15p2-x86_64-1.txz: Upgraded. l/ffmpeg-5.1.4-x86_64-1.txz: Upgraded. n/dhcpcd-10.0.5-x86_64-1.txz: Upgraded. n/whois-5.5.20-x86_64-1.txz: Upgraded. Added the .gn TLD server. Removed 6 new gTLDs which are no longer active. xfce/xfce4-whiskermenu-plugin-2.8.1-x86_64-1.txz: Upgraded.
-rw-r--r--ChangeLog.rss23
-rw-r--r--ChangeLog.txt11
-rw-r--r--FILELIST.TXT186
-rwxr-xr-xrecompress.sh2
-rw-r--r--slackware64/ap/maketag5
-rw-r--r--slackware64/ap/maketag.ez5
-rw-r--r--slackware64/ap/tagfile1
-rw-r--r--source/a/bash/bash-5.2-patches/bash52-01647
-rw-r--r--source/a/bash/bash-5.2-patches/bash52-01747
-rw-r--r--source/a/bash/bash-5.2-patches/bash52-0183643
-rw-r--r--source/a/bash/bash-5.2-patches/bash52-01966
-rw-r--r--source/a/bash/bash-5.2-patches/bash52-02053
-rw-r--r--source/a/bash/bash-5.2-patches/bash52-02161
-rw-r--r--source/a/kbd/vlock.pamd3
-rwxr-xr-xsource/ap/rdfind/rdfind.SlackBuild144
-rw-r--r--source/ap/rdfind/rdfind.url1
-rw-r--r--source/ap/rdfind/slack-desc19
-rw-r--r--source/l/ffmpeg/effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch77
-rwxr-xr-xsource/l/ffmpeg/ffmpeg.SlackBuild8
-rw-r--r--source/l/ffmpeg/texinfo.patch283
20 files changed, 4223 insertions, 462 deletions
diff --git a/ChangeLog.rss b/ChangeLog.rss
index e29a6bdb4..54bd5dd94 100644
--- a/ChangeLog.rss
+++ b/ChangeLog.rss
@@ -11,10 +11,29 @@
<description>Tracking Slackware development in git.</description>
<language>en-us</language>
<id xmlns="http://www.w3.org/2005/Atom">urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f</id>
- <pubDate>Thu, 9 Nov 2023 21:50:09 GMT</pubDate>
- <lastBuildDate>Thu, 9 Nov 2023 22:30:09 GMT</lastBuildDate>
+ <pubDate>Fri, 10 Nov 2023 18:46:44 GMT</pubDate>
+ <lastBuildDate>Fri, 10 Nov 2023 19:43:53 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.17</generator>
<item>
+ <title>Fri, 10 Nov 2023 18:46:44 GMT</title>
+ <pubDate>Fri, 10 Nov 2023 18:46:44 GMT</pubDate>
+ <link>https://git.slackware.nl/current/tag/?h=20231110184644</link>
+ <guid isPermaLink="false">20231110184644</guid>
+ <description>
+ <![CDATA[<pre>
+a/bash-5.2.021-x86_64-1.txz: Upgraded.
+ap/rdfind-1.6.0-x86_64-1.txz: Added.
+ap/sudo-1.9.15p2-x86_64-1.txz: Upgraded.
+l/ffmpeg-5.1.4-x86_64-1.txz: Upgraded.
+n/dhcpcd-10.0.5-x86_64-1.txz: Upgraded.
+n/whois-5.5.20-x86_64-1.txz: Upgraded.
+ Added the .gn TLD server.
+ Removed 6 new gTLDs which are no longer active.
+xfce/xfce4-whiskermenu-plugin-2.8.1-x86_64-1.txz: Upgraded.
+ </pre>]]>
+ </description>
+ </item>
+ <item>
<title>Thu, 9 Nov 2023 21:50:09 GMT</title>
<pubDate>Thu, 9 Nov 2023 21:50:09 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20231109215009</link>
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 2b3f742ec..3e7ca141e 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,14 @@
+Fri Nov 10 18:46:44 UTC 2023
+a/bash-5.2.021-x86_64-1.txz: Upgraded.
+ap/rdfind-1.6.0-x86_64-1.txz: Added.
+ap/sudo-1.9.15p2-x86_64-1.txz: Upgraded.
+l/ffmpeg-5.1.4-x86_64-1.txz: Upgraded.
+n/dhcpcd-10.0.5-x86_64-1.txz: Upgraded.
+n/whois-5.5.20-x86_64-1.txz: Upgraded.
+ Added the .gn TLD server.
+ Removed 6 new gTLDs which are no longer active.
+xfce/xfce4-whiskermenu-plugin-2.8.1-x86_64-1.txz: Upgraded.
++--------------------------+
Thu Nov 9 21:50:09 UTC 2023
a/kbd-2.6.3-x86_64-2.txz: Rebuilt.
Fixed /etc/pam.d/vlock installation. Thanks to ctrlaltca.
diff --git a/FILELIST.TXT b/FILELIST.TXT
index e64f86699..7e6a07271 100644
--- a/FILELIST.TXT
+++ b/FILELIST.TXT
@@ -1,20 +1,20 @@
-Thu Nov 9 21:56:00 UTC 2023
+Fri Nov 10 18:51:00 UTC 2023
Here is the file list for this directory. If you are using a
mirror site and find missing or extra files in the disk
subdirectories, please have the archive administrator refresh
the mirror.
-drwxr-xr-x 12 root root 4096 2023-11-09 21:50 .
+drwxr-xr-x 12 root root 4096 2023-11-10 18:46 .
-rw-r--r-- 1 root root 5767 2022-02-02 22:44 ./ANNOUNCE.15.0
-rw-r--r-- 1 root root 16617 2022-02-02 23:27 ./CHANGES_AND_HINTS.TXT
--rw-r--r-- 1 root root 1121355 2023-11-08 22:10 ./CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2023-11-08 22:10 ./CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 1121295 2023-11-09 21:56 ./CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2023-11-09 21:56 ./CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 17976 1994-06-10 02:28 ./COPYING
-rw-r--r-- 1 root root 35147 2007-06-30 04:21 ./COPYING3
-rw-r--r-- 1 root root 19573 2016-06-23 20:08 ./COPYRIGHT.TXT
-rw-r--r-- 1 root root 616 2006-10-02 04:37 ./CRYPTO_NOTICE.TXT
--rw-r--r-- 1 root root 855567 2023-11-09 21:50 ./ChangeLog.txt
+-rw-r--r-- 1 root root 856005 2023-11-10 18:46 ./ChangeLog.txt
drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI
drwxr-xr-x 2 root root 4096 2023-11-08 21:37 ./EFI/BOOT
-rw-r--r-- 1 root root 1187840 2021-06-15 19:16 ./EFI/BOOT/bootx64.efi
@@ -25,9 +25,9 @@ drwxr-xr-x 2 root root 4096 2023-11-08 21:37 ./EFI/BOOT
-rwxr-xr-x 1 root root 2504 2019-07-05 18:54 ./EFI/BOOT/make-grub.sh
-rw-r--r-- 1 root root 10722 2013-09-21 19:02 ./EFI/BOOT/osdetect.cfg
-rw-r--r-- 1 root root 1273 2013-08-12 21:08 ./EFI/BOOT/tools.cfg
--rw-r--r-- 1 root root 1463676 2023-11-08 22:10 ./FILELIST.TXT
+-rw-r--r-- 1 root root 1463600 2023-11-09 21:56 ./FILELIST.TXT
-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY
--rw-r--r-- 1 root root 885836 2023-11-09 21:55 ./PACKAGES.TXT
+-rw-r--r-- 1 root root 886351 2023-11-10 18:50 ./PACKAGES.TXT
-rw-r--r-- 1 root root 8034 2022-02-02 03:36 ./README.TXT
-rw-r--r-- 1 root root 3629 2023-11-08 21:27 ./README.initrd
-rw-r--r-- 1 root root 34162 2022-01-30 20:35 ./README_CRYPT.TXT
@@ -666,13 +666,13 @@ drwxr-xr-x 2 root root 4096 2022-02-03 07:02 ./patches
-rw-r--r-- 1 root root 575 2022-02-03 07:02 ./patches/FILE_LIST
-rw-r--r-- 1 root root 14 2022-02-03 07:02 ./patches/MANIFEST.bz2
-rw-r--r-- 1 root root 224 2022-02-03 07:02 ./patches/PACKAGES.TXT
-drwxr-xr-x 17 root root 4096 2023-11-09 21:55 ./slackware64
--rw-r--r-- 1 root root 344946 2023-11-09 21:55 ./slackware64/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2023-11-09 21:55 ./slackware64/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 427530 2023-11-09 21:54 ./slackware64/FILE_LIST
--rw-r--r-- 1 root root 4354261 2023-11-09 21:54 ./slackware64/MANIFEST.bz2
+drwxr-xr-x 17 root root 4096 2023-11-10 18:50 ./slackware64
+-rw-r--r-- 1 root root 345145 2023-11-10 18:50 ./slackware64/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2023-11-10 18:50 ./slackware64/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 427772 2023-11-10 18:49 ./slackware64/FILE_LIST
+-rw-r--r-- 1 root root 4355708 2023-11-10 18:50 ./slackware64/MANIFEST.bz2
lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT
-drwxr-xr-x 2 root root 32768 2023-11-09 21:53 ./slackware64/a
+drwxr-xr-x 2 root root 32768 2023-11-10 18:49 ./slackware64/a
-rw-r--r-- 1 root root 327 2022-02-15 18:16 ./slackware64/a/aaa_base-15.1-x86_64-2.txt
-rw-r--r-- 1 root root 10720 2022-02-15 18:16 ./slackware64/a/aaa_base-15.1-x86_64-2.txz
-rw-r--r-- 1 root root 163 2022-02-15 18:16 ./slackware64/a/aaa_base-15.1-x86_64-2.txz.asc
@@ -694,9 +694,9 @@ drwxr-xr-x 2 root root 32768 2023-11-09 21:53 ./slackware64/a
-rw-r--r-- 1 root root 606 2021-03-16 17:15 ./slackware64/a/attr-2.5.1-x86_64-1.txt
-rw-r--r-- 1 root root 62320 2021-03-16 17:15 ./slackware64/a/attr-2.5.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2021-03-16 17:15 ./slackware64/a/attr-2.5.1-x86_64-1.txz.asc
--rw-r--r-- 1 root root 507 2022-12-14 18:57 ./slackware64/a/bash-5.2.015-x86_64-1.txt
--rw-r--r-- 1 root root 1809476 2022-12-14 18:57 ./slackware64/a/bash-5.2.015-x86_64-1.txz
--rw-r--r-- 1 root root 163 2022-12-14 18:57 ./slackware64/a/bash-5.2.015-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 507 2023-11-10 02:35 ./slackware64/a/bash-5.2.021-x86_64-1.txt
+-rw-r--r-- 1 root root 1810184 2023-11-10 02:35 ./slackware64/a/bash-5.2.021-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2023-11-10 02:35 ./slackware64/a/bash-5.2.021-x86_64-1.txz.asc
-rw-r--r-- 1 root root 226 2021-02-13 10:55 ./slackware64/a/bin-11.1-x86_64-5.txt
-rw-r--r-- 1 root root 39244 2021-02-13 10:55 ./slackware64/a/bin-11.1-x86_64-5.txz
-rw-r--r-- 1 root root 163 2021-02-13 10:55 ./slackware64/a/bin-11.1-x86_64-5.txz.asc
@@ -1062,7 +1062,7 @@ drwxr-xr-x 2 root root 32768 2023-11-09 21:53 ./slackware64/a
-rw-r--r-- 1 root root 540 2021-02-13 11:22 ./slackware64/a/zoo-2.10_22-x86_64-4.txt
-rw-r--r-- 1 root root 56160 2021-02-13 11:22 ./slackware64/a/zoo-2.10_22-x86_64-4.txz
-rw-r--r-- 1 root root 163 2021-02-13 11:22 ./slackware64/a/zoo-2.10_22-x86_64-4.txz.asc
-drwxr-xr-x 2 root root 20480 2023-11-08 21:46 ./slackware64/ap
+drwxr-xr-x 2 root root 20480 2023-11-10 18:49 ./slackware64/ap
-rw-r--r-- 1 root root 291 2023-06-23 18:07 ./slackware64/ap/a2ps-4.15.5-x86_64-1.txt
-rw-r--r-- 1 root root 653716 2023-06-23 18:07 ./slackware64/ap/a2ps-4.15.5-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-06-23 18:07 ./slackware64/ap/a2ps-4.15.5-x86_64-1.txz.asc
@@ -1194,8 +1194,8 @@ drwxr-xr-x 2 root root 20480 2023-11-08 21:46 ./slackware64/ap
-rw-r--r-- 1 root root 338 2021-02-13 11:32 ./slackware64/ap/madplay-0.15.2b-x86_64-7.txt
-rw-r--r-- 1 root root 59992 2021-02-13 11:32 ./slackware64/ap/madplay-0.15.2b-x86_64-7.txz
-rw-r--r-- 1 root root 163 2021-02-13 11:32 ./slackware64/ap/madplay-0.15.2b-x86_64-7.txz.asc
--rw-r--r-- 1 root root 6406 2020-12-07 21:44 ./slackware64/ap/maketag
--rw-r--r-- 1 root root 6406 2020-12-07 21:44 ./slackware64/ap/maketag.ez
+-rw-r--r-- 1 root root 6460 2023-11-10 18:45 ./slackware64/ap/maketag
+-rw-r--r-- 1 root root 6460 2023-11-10 18:45 ./slackware64/ap/maketag.ez
-rw-r--r-- 1 root root 532 2023-09-24 17:52 ./slackware64/ap/man-db-2.12.0-x86_64-1.txt
-rw-r--r-- 1 root root 569852 2023-09-24 17:52 ./slackware64/ap/man-db-2.12.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-09-24 17:52 ./slackware64/ap/man-db-2.12.0-x86_64-1.txz.asc
@@ -1244,6 +1244,9 @@ drwxr-xr-x 2 root root 20480 2023-11-08 21:46 ./slackware64/ap
-rw-r--r-- 1 root root 364 2021-02-13 11:42 ./slackware64/ap/radeontool-1.6.3-x86_64-4.txt
-rw-r--r-- 1 root root 59984 2021-02-13 11:42 ./slackware64/ap/radeontool-1.6.3-x86_64-4.txz
-rw-r--r-- 1 root root 163 2021-02-13 11:42 ./slackware64/ap/radeontool-1.6.3-x86_64-4.txz.asc
+-rw-r--r-- 1 root root 371 2023-11-10 18:29 ./slackware64/ap/rdfind-1.6.0-x86_64-1.txt
+-rw-r--r-- 1 root root 50224 2023-11-10 18:29 ./slackware64/ap/rdfind-1.6.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2023-11-10 18:29 ./slackware64/ap/rdfind-1.6.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 491 2023-08-19 19:45 ./slackware64/ap/rpm-4.18.1-x86_64-1.txt
-rw-r--r-- 1 root root 881060 2023-08-19 19:45 ./slackware64/ap/rpm-4.18.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-08-19 19:45 ./slackware64/ap/rpm-4.18.1-x86_64-1.txz.asc
@@ -1277,13 +1280,13 @@ drwxr-xr-x 2 root root 20480 2023-11-08 21:46 ./slackware64/ap
-rw-r--r-- 1 root root 584 2023-03-28 18:23 ./slackware64/ap/squashfs-tools-4.6.1-x86_64-1.txt
-rw-r--r-- 1 root root 198020 2023-03-28 18:23 ./slackware64/ap/squashfs-tools-4.6.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-03-28 18:23 ./slackware64/ap/squashfs-tools-4.6.1-x86_64-1.txz.asc
--rw-r--r-- 1 root root 442 2023-11-08 19:07 ./slackware64/ap/sudo-1.9.15p1-x86_64-1.txt
--rw-r--r-- 1 root root 1307236 2023-11-08 19:07 ./slackware64/ap/sudo-1.9.15p1-x86_64-1.txz
--rw-r--r-- 1 root root 163 2023-11-08 19:07 ./slackware64/ap/sudo-1.9.15p1-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 442 2023-11-10 02:38 ./slackware64/ap/sudo-1.9.15p2-x86_64-1.txt
+-rw-r--r-- 1 root root 1307592 2023-11-10 02:38 ./slackware64/ap/sudo-1.9.15p2-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2023-11-10 02:38 ./slackware64/ap/sudo-1.9.15p2-x86_64-1.txz.asc
-rw-r--r-- 1 root root 403 2023-06-22 16:47 ./slackware64/ap/sysstat-12.7.4-x86_64-1.txt
-rw-r--r-- 1 root root 376968 2023-06-22 16:47 ./slackware64/ap/sysstat-12.7.4-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-06-22 16:47 ./slackware64/ap/sysstat-12.7.4-x86_64-1.txz.asc
--rw-r--r-- 1 root root 957 2020-12-07 21:44 ./slackware64/ap/tagfile
+-rw-r--r-- 1 root root 968 2023-11-10 18:45 ./slackware64/ap/tagfile
-rw-r--r-- 1 root root 495 2021-02-13 11:45 ./slackware64/ap/terminus-font-4.49.1-noarch-3.txt
-rw-r--r-- 1 root root 2309356 2021-02-13 11:45 ./slackware64/ap/terminus-font-4.49.1-noarch-3.txz
-rw-r--r-- 1 root root 163 2021-02-13 11:45 ./slackware64/ap/terminus-font-4.49.1-noarch-3.txz.asc
@@ -2710,8 +2713,8 @@ drwxr-xr-x 2 root root 86016 2023-11-09 21:54 ./slackware64/kde
-rw-r--r-- 1 root root 163 2023-11-09 18:31 ./slackware64/kde/spectacle-23.08.3-x86_64-1.txz.asc
-rw-r--r-- 1 root root 488 2023-10-22 18:40 ./slackware64/kde/stellarsolver-2.5-x86_64-1.txt
-rw-r--r-- 1 root root 453392 2023-10-22 18:40 ./slackware64/kde/stellarsolver-2.5-x86_64-1.txz
--rw-r--r-- 1 root root 163 2023-10-22 18:40 ./slackware64/kde/stellarsolver-2.5-x86_64-1.txz.asc
--rw-r--r-- 1 root root 409 2023-11-09 19:00 ./slackware64/kde/step-23.08.3-x86_64-1.txt
+-rw-r--r-- 1 root root 163 2023-10-22 18:40 ./slackware64/kde/stellarsolver-2.5-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 409 2023-11-09 19:00 ./slackware64/kde/step-23.08.3-x86_64-1.txt
-rw-r--r-- 1 root root 1290140 2023-11-09 19:00 ./slackware64/kde/step-23.08.3-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-11-09 19:00 ./slackware64/kde/step-23.08.3-x86_64-1.txz.asc
-rw-r--r-- 1 root root 164 2023-11-09 18:31 ./slackware64/kde/svgpart-23.08.3-x86_64-1.txt
@@ -2754,7 +2757,7 @@ drwxr-xr-x 2 root root 86016 2023-11-09 21:54 ./slackware64/kde
-rw-r--r-- 1 root root 403 2023-07-06 17:30 ./slackware64/kde/zxing-cpp-2.1.0-x86_64-1.txt
-rw-r--r-- 1 root root 754048 2023-07-06 17:30 ./slackware64/kde/zxing-cpp-2.1.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-07-06 17:30 ./slackware64/kde/zxing-cpp-2.1.0-x86_64-1.txz.asc
-drwxr-xr-x 2 root root 86016 2023-11-08 21:46 ./slackware64/l
+drwxr-xr-x 2 root root 86016 2023-11-10 18:49 ./slackware64/l
-rw-r--r-- 1 root root 329 2022-03-06 20:00 ./slackware64/l/GConf-3.2.6-x86_64-8.txt
-rw-r--r-- 1 root root 928144 2022-03-06 20:00 ./slackware64/l/GConf-3.2.6-x86_64-8.txz
-rw-r--r-- 1 root root 163 2022-03-06 20:00 ./slackware64/l/GConf-3.2.6-x86_64-8.txz.asc
@@ -2926,9 +2929,9 @@ drwxr-xr-x 2 root root 86016 2023-11-08 21:46 ./slackware64/l
-rw-r--r-- 1 root root 315 2021-02-13 06:27 ./slackware64/l/farstream-0.2.9-x86_64-3.txt
-rw-r--r-- 1 root root 268080 2021-02-13 06:27 ./slackware64/l/farstream-0.2.9-x86_64-3.txz
-rw-r--r-- 1 root root 163 2021-02-13 06:27 ./slackware64/l/farstream-0.2.9-x86_64-3.txz.asc
--rw-r--r-- 1 root root 490 2023-08-29 18:15 ./slackware64/l/ffmpeg-5.1.3-x86_64-2.txt
--rw-r--r-- 1 root root 10420672 2023-08-29 18:15 ./slackware64/l/ffmpeg-5.1.3-x86_64-2.txz
--rw-r--r-- 1 root root 163 2023-08-29 18:15 ./slackware64/l/ffmpeg-5.1.3-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 490 2023-11-10 02:49 ./slackware64/l/ffmpeg-5.1.4-x86_64-1.txt
+-rw-r--r-- 1 root root 10438764 2023-11-10 02:49 ./slackware64/l/ffmpeg-5.1.4-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2023-11-10 02:49 ./slackware64/l/ffmpeg-5.1.4-x86_64-1.txz.asc
-rw-r--r-- 1 root root 502 2023-10-05 20:05 ./slackware64/l/fftw-3.3.10-x86_64-2.txt
-rw-r--r-- 1 root root 2323336 2023-10-05 20:05 ./slackware64/l/fftw-3.3.10-x86_64-2.txz
-rw-r--r-- 1 root root 163 2023-10-05 20:05 ./slackware64/l/fftw-3.3.10-x86_64-2.txz.asc
@@ -3975,7 +3978,7 @@ drwxr-xr-x 2 root root 86016 2023-11-08 21:46 ./slackware64/l
-rw-r--r-- 1 root root 455 2023-10-16 16:43 ./slackware64/l/zug-0.1.1-x86_64-1.txt
-rw-r--r-- 1 root root 34856 2023-10-16 16:43 ./slackware64/l/zug-0.1.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-10-16 16:43 ./slackware64/l/zug-0.1.1-x86_64-1.txz.asc
-drwxr-xr-x 2 root root 36864 2023-11-09 21:53 ./slackware64/n
+drwxr-xr-x 2 root root 36864 2023-11-10 18:49 ./slackware64/n
-rw-r--r-- 1 root root 357 2023-03-09 19:11 ./slackware64/n/ModemManager-1.20.6-x86_64-1.txt
-rw-r--r-- 1 root root 1517848 2023-03-09 19:11 ./slackware64/n/ModemManager-1.20.6-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-03-09 19:11 ./slackware64/n/ModemManager-1.20.6-x86_64-1.txz.asc
@@ -4039,9 +4042,9 @@ drwxr-xr-x 2 root root 36864 2023-11-09 21:53 ./slackware64/n
-rw-r--r-- 1 root root 641 2022-10-05 18:11 ./slackware64/n/dhcp-4.4.3_P1-x86_64-1.txt
-rw-r--r-- 1 root root 1810988 2022-10-05 18:11 ./slackware64/n/dhcp-4.4.3_P1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2022-10-05 18:11 ./slackware64/n/dhcp-4.4.3_P1-x86_64-1.txz.asc
--rw-r--r-- 1 root root 493 2023-10-19 17:36 ./slackware64/n/dhcpcd-10.0.4-x86_64-1.txt
--rw-r--r-- 1 root root 188480 2023-10-19 17:36 ./slackware64/n/dhcpcd-10.0.4-x86_64-1.txz
--rw-r--r-- 1 root root 163 2023-10-19 17:36 ./slackware64/n/dhcpcd-10.0.4-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 493 2023-11-10 18:03 ./slackware64/n/dhcpcd-10.0.5-x86_64-1.txt
+-rw-r--r-- 1 root root 188592 2023-11-10 18:03 ./slackware64/n/dhcpcd-10.0.5-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2023-11-10 18:03 ./slackware64/n/dhcpcd-10.0.5-x86_64-1.txz.asc
-rw-r--r-- 1 root root 443 2023-02-05 20:21 ./slackware64/n/dnsmasq-2.89-x86_64-1.txt
-rw-r--r-- 1 root root 409312 2023-02-05 20:21 ./slackware64/n/dnsmasq-2.89-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-02-05 20:21 ./slackware64/n/dnsmasq-2.89-x86_64-1.txz.asc
@@ -4425,9 +4428,9 @@ drwxr-xr-x 2 root root 36864 2023-11-09 21:53 ./slackware64/n
-rw-r--r-- 1 root root 586 2023-09-01 18:52 ./slackware64/n/wget2-2.1.0-x86_64-1.txt
-rw-r--r-- 1 root root 540112 2023-09-01 18:52 ./slackware64/n/wget2-2.1.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-09-01 18:52 ./slackware64/n/wget2-2.1.0-x86_64-1.txz.asc
--rw-r--r-- 1 root root 367 2023-10-09 17:24 ./slackware64/n/whois-5.5.19-x86_64-1.txt
--rw-r--r-- 1 root root 64220 2023-10-09 17:24 ./slackware64/n/whois-5.5.19-x86_64-1.txz
--rw-r--r-- 1 root root 163 2023-10-09 17:24 ./slackware64/n/whois-5.5.19-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 367 2023-11-10 02:39 ./slackware64/n/whois-5.5.20-x86_64-1.txt
+-rw-r--r-- 1 root root 64184 2023-11-10 02:39 ./slackware64/n/whois-5.5.20-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2023-11-10 02:39 ./slackware64/n/whois-5.5.20-x86_64-1.txz.asc
-rw-r--r-- 1 root root 488 2021-09-14 18:26 ./slackware64/n/wireguard-tools-1.0.20210914-x86_64-1.txt
-rw-r--r-- 1 root root 59572 2021-09-14 18:26 ./slackware64/n/wireguard-tools-1.0.20210914-x86_64-1.txz
-rw-r--r-- 1 root root 163 2021-09-14 18:26 ./slackware64/n/wireguard-tools-1.0.20210914-x86_64-1.txz.asc
@@ -5496,8 +5499,8 @@ drwxr-xr-x 2 root root 16384 2023-11-08 21:46 ./slackware64/xap
-rw-r--r-- 1 root root 309 2023-03-08 03:14 ./slackware64/xap/x3270-4.0ga14-x86_64-3.txt
-rw-r--r-- 1 root root 1454760 2023-03-08 03:14 ./slackware64/xap/x3270-4.0ga14-x86_64-3.txz
-rw-r--r-- 1 root root 163 2023-03-08 03:14 ./slackware64/xap/x3270-4.0ga14-x86_64-3.txz.asc
--rw-r--r-- 1 root root 426 2021-02-13 13:43 ./slackware64/xap/xaos-4.2.1-x86_64-2.txt
--rw-r--r-- 1 root root 492136 2021-02-13 13:43 ./slackware64/xap/xaos-4.2.1-x86_64-2.txz
+-rw-r--r-- 1 root root 426 2021-02-13 13:43 ./slackware64/xap/xaos-4.2.1-x86_64-2.txt
+-rw-r--r-- 1 root root 492136 2021-02-13 13:43 ./slackware64/xap/xaos-4.2.1-x86_64-2.txz
-rw-r--r-- 1 root root 163 2021-02-13 13:43 ./slackware64/xap/xaos-4.2.1-x86_64-2.txz.asc
-rw-r--r-- 1 root root 239 2021-02-13 13:43 ./slackware64/xap/xgames-0.3-x86_64-8.txt
-rw-r--r-- 1 root root 93540 2021-02-13 13:43 ./slackware64/xap/xgames-0.3-x86_64-8.txz
@@ -5529,7 +5532,7 @@ drwxr-xr-x 2 root root 16384 2023-11-08 21:46 ./slackware64/xap
-rw-r--r-- 1 root root 230 2023-06-28 19:46 ./slackware64/xap/xsnow-3.7.5-x86_64-1.txt
-rw-r--r-- 1 root root 1788332 2023-06-28 19:46 ./slackware64/xap/xsnow-3.7.5-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-06-28 19:46 ./slackware64/xap/xsnow-3.7.5-x86_64-1.txz.asc
-drwxr-xr-x 2 root root 12288 2023-11-03 23:49 ./slackware64/xfce
+drwxr-xr-x 2 root root 12288 2023-11-10 18:49 ./slackware64/xfce
-rw-r--r-- 1 root root 253 2021-10-01 03:27 ./slackware64/xfce/Greybird-3.22.15-noarch-1.txt
-rw-r--r-- 1 root root 189900 2021-10-01 03:27 ./slackware64/xfce/Greybird-3.22.15-noarch-1.txz
-rw-r--r-- 1 root root 163 2021-10-01 03:27 ./slackware64/xfce/Greybird-3.22.15-noarch-1.txz.asc
@@ -5613,9 +5616,9 @@ drwxr-xr-x 2 root root 12288 2023-11-03 23:49 ./slackware64/xfce
-rw-r--r-- 1 root root 369 2023-04-24 20:09 ./slackware64/xfce/xfce4-weather-plugin-0.11.1-x86_64-1.txt
-rw-r--r-- 1 root root 2426532 2023-04-24 20:09 ./slackware64/xfce/xfce4-weather-plugin-0.11.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-04-24 20:09 ./slackware64/xfce/xfce4-weather-plugin-0.11.1-x86_64-1.txz.asc
--rw-r--r-- 1 root root 829 2023-08-29 18:34 ./slackware64/xfce/xfce4-whiskermenu-plugin-2.8.0-x86_64-1.txt
--rw-r--r-- 1 root root 217636 2023-08-29 18:34 ./slackware64/xfce/xfce4-whiskermenu-plugin-2.8.0-x86_64-1.txz
--rw-r--r-- 1 root root 163 2023-08-29 18:34 ./slackware64/xfce/xfce4-whiskermenu-plugin-2.8.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 829 2023-11-10 02:43 ./slackware64/xfce/xfce4-whiskermenu-plugin-2.8.1-x86_64-1.txt
+-rw-r--r-- 1 root root 217976 2023-11-10 02:43 ./slackware64/xfce/xfce4-whiskermenu-plugin-2.8.1-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2023-11-10 02:43 ./slackware64/xfce/xfce4-whiskermenu-plugin-2.8.1-x86_64-1.txz.asc
-rw-r--r-- 1 root root 293 2023-11-01 19:47 ./slackware64/xfce/xfconf-4.18.3-x86_64-1.txt
-rw-r--r-- 1 root root 189692 2023-11-01 19:47 ./slackware64/xfce/xfconf-4.18.3-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-11-01 19:47 ./slackware64/xfce/xfconf-4.18.3-x86_64-1.txz.asc
@@ -5637,11 +5640,11 @@ drwxr-xr-x 2 root root 4096 2023-03-08 20:34 ./slackware64/y
-rw-r--r-- 1 root root 1491108 2023-02-19 18:31 ./slackware64/y/nethack-3.6.7-x86_64-1.txz
-rw-r--r-- 1 root root 163 2023-02-19 18:31 ./slackware64/y/nethack-3.6.7-x86_64-1.txz.asc
-rw-r--r-- 1 root root 26 2020-12-30 21:55 ./slackware64/y/tagfile
-drwxr-xr-x 18 root root 4096 2023-11-09 21:56 ./source
--rw-r--r-- 1 root root 603423 2023-11-09 21:56 ./source/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2023-11-09 21:56 ./source/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 840075 2023-11-09 21:55 ./source/FILE_LIST
--rw-r--r-- 1 root root 25145530 2023-11-09 21:55 ./source/MANIFEST.bz2
+drwxr-xr-x 18 root root 4096 2023-11-10 18:51 ./source
+-rw-r--r-- 1 root root 604395 2023-11-10 18:51 ./source/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2023-11-10 18:51 ./source/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 841345 2023-11-10 18:50 ./source/FILE_LIST
+-rw-r--r-- 1 root root 25157941 2023-11-10 18:50 ./source/MANIFEST.bz2
-rw-r--r-- 1 root root 828 2022-02-02 04:43 ./source/README.TXT
drwxr-xr-x 124 root root 4096 2023-11-08 18:15 ./source/a
-rw-r--r-- 1 root root 339 2023-09-28 19:06 ./source/a/FTBFSlog
@@ -5689,7 +5692,7 @@ drwxr-xr-x 2 root root 4096 2021-03-16 17:15 ./source/a/attr
-rw-r--r-- 1 root root 270 2018-06-19 18:09 ./source/a/attr/doinst.sh.gz
-rw-r--r-- 1 root root 1058 2018-02-27 06:13 ./source/a/attr/slack-desc
drwxr-xr-x 3 root root 4096 2022-09-26 18:03 ./source/a/bash
-drwxr-xr-x 2 root root 4096 2022-12-14 18:57 ./source/a/bash/bash-5.2-patches
+drwxr-xr-x 2 root root 4096 2023-11-10 02:35 ./source/a/bash/bash-5.2-patches
-rw-r--r-- 1 root root 1381 2022-10-05 14:03 ./source/a/bash/bash-5.2-patches/bash52-001
-rw-r--r-- 1 root root 95 2022-10-05 14:03 ./source/a/bash/bash-5.2-patches/bash52-001.sig
-rw-r--r-- 1 root root 1328 2022-10-05 14:03 ./source/a/bash/bash-5.2-patches/bash52-002
@@ -5720,6 +5723,18 @@ drwxr-xr-x 2 root root 4096 2022-12-14 18:57 ./source/a/bash/bash-5.2-pat
-rw-r--r-- 1 root root 95 2022-12-13 17:25 ./source/a/bash/bash-5.2-patches/bash52-014.sig
-rw-r--r-- 1 root root 8088 2022-12-13 17:25 ./source/a/bash/bash-5.2-patches/bash52-015
-rw-r--r-- 1 root root 95 2022-12-13 17:25 ./source/a/bash/bash-5.2-patches/bash52-015.sig
+-rw-r--r-- 1 root root 1225 2023-11-09 21:25 ./source/a/bash/bash-5.2-patches/bash52-016
+-rw-r--r-- 1 root root 95 2023-11-09 21:25 ./source/a/bash/bash-5.2-patches/bash52-016.sig
+-rw-r--r-- 1 root root 1396 2023-11-09 21:25 ./source/a/bash/bash-5.2-patches/bash52-017
+-rw-r--r-- 1 root root 95 2023-11-09 21:25 ./source/a/bash/bash-5.2-patches/bash52-017.sig
+-rw-r--r-- 1 root root 151467 2023-11-09 21:26 ./source/a/bash/bash-5.2-patches/bash52-018
+-rw-r--r-- 1 root root 95 2023-11-09 21:26 ./source/a/bash/bash-5.2-patches/bash52-018.sig
+-rw-r--r-- 1 root root 2548 2023-11-09 21:26 ./source/a/bash/bash-5.2-patches/bash52-019
+-rw-r--r-- 1 root root 95 2023-11-09 21:26 ./source/a/bash/bash-5.2-patches/bash52-019.sig
+-rw-r--r-- 1 root root 1459 2023-11-09 21:26 ./source/a/bash/bash-5.2-patches/bash52-020
+-rw-r--r-- 1 root root 95 2023-11-09 21:26 ./source/a/bash/bash-5.2-patches/bash52-020.sig
+-rw-r--r-- 1 root root 1890 2023-11-09 21:26 ./source/a/bash/bash-5.2-patches/bash52-021
+-rw-r--r-- 1 root root 95 2023-11-09 21:26 ./source/a/bash/bash-5.2-patches/bash52-021.sig
-rw-r--r-- 1 root root 6390158 2022-09-26 15:58 ./source/a/bash/bash-5.2.tar.lz
-rwxr-xr-x 1 root root 6188 2021-05-05 16:36 ./source/a/bash/bash.SlackBuild
-rw-r--r-- 1 root root 631 2018-03-29 01:12 ./source/a/bash/bash_manpages.patch.gz
@@ -6758,7 +6773,7 @@ drwxr-xr-x 2 root root 4096 2021-02-13 05:31 ./source/a/zoo
-rw-r--r-- 1 root root 173607 1994-12-30 20:19 ./source/a/zoo/zoo-2.10.tar.gz
-rwxr-xr-x 1 root root 3143 2021-02-13 05:31 ./source/a/zoo/zoo.SlackBuild
-rw-r--r-- 1 root root 14136 2010-05-22 09:49 ./source/a/zoo/zoo_2.10-22.debian.tar.gz
-drwxr-xr-x 85 root root 4096 2023-09-26 17:43 ./source/ap
+drwxr-xr-x 86 root root 4096 2023-11-10 18:29 ./source/ap
-rw-r--r-- 1 root root 363 2023-03-01 20:06 ./source/ap/FTBFSlog
drwxr-xr-x 2 root root 4096 2023-06-23 18:00 ./source/ap/a2ps
-rw-r--r-- 1 root root 1790136 2023-06-22 20:55 ./source/ap/a2ps/a2ps-4.15.5.tar.lz
@@ -7141,6 +7156,11 @@ drwxr-xr-x 2 root root 4096 2021-02-13 05:31 ./source/ap/radeontool
-rw-r--r-- 1 root root 305656 2012-03-21 18:29 ./source/ap/radeontool/radeontool-1.6.3.tar.xz
-rwxr-xr-x 1 root root 3288 2021-02-13 05:31 ./source/ap/radeontool/radeontool.SlackBuild
-rw-r--r-- 1 root root 818 2018-02-27 06:12 ./source/ap/radeontool/slack-desc
+drwxr-xr-x 2 root root 4096 2023-11-10 18:28 ./source/ap/rdfind
+-rw-r--r-- 1 root root 47554 2023-06-17 10:39 ./source/ap/rdfind/rdfind-releases-1.6.0.tar.lz
+-rwxr-xr-x 1 root root 4425 2023-11-10 18:24 ./source/ap/rdfind/rdfind.SlackBuild
+-rw-r--r-- 1 root root 36 2023-11-10 18:19 ./source/ap/rdfind/rdfind.url
+-rw-r--r-- 1 root root 825 2023-11-10 18:28 ./source/ap/rdfind/slack-desc
drwxr-xr-x 2 root root 4096 2023-08-19 19:33 ./source/ap/rpm
-rw-r--r-- 1 root root 133 2009-11-27 18:09 ./source/ap/rpm/Packages.gz
-rw-r--r-- 1 root root 132 2009-11-27 18:09 ./source/ap/rpm/doinst.sh.gz
@@ -7266,10 +7286,10 @@ drwxr-xr-x 2 root root 4096 2023-03-28 18:23 ./source/ap/squashfs-tools
-rw-r--r-- 1 root root 1078 2018-09-13 21:00 ./source/ap/squashfs-tools/slack-desc
-rw-r--r-- 1 root root 202913 2023-03-25 20:53 ./source/ap/squashfs-tools/squashfs-tools-4.6.1.tar.lz
-rwxr-xr-- 1 root root 4284 2023-03-20 17:48 ./source/ap/squashfs-tools/squashfs-tools.SlackBuild
-drwxr-xr-x 2 root root 4096 2023-11-08 18:38 ./source/ap/sudo
+drwxr-xr-x 2 root root 4096 2023-11-10 02:38 ./source/ap/sudo
-rw-r--r-- 1 root root 275 2004-09-19 00:25 ./source/ap/sudo/doinst.sh.gz
-rw-r--r-- 1 root root 894 2018-02-27 06:12 ./source/ap/sudo/slack-desc
--rw-r--r-- 1 root root 2899340 2023-11-07 20:48 ./source/ap/sudo/sudo-1.9.15p1.tar.xz
+-rw-r--r-- 1 root root 2899056 2023-11-09 16:43 ./source/ap/sudo/sudo-1.9.15p2.tar.xz
-rwxr-xr-x 1 root root 4572 2023-06-28 19:41 ./source/ap/sudo/sudo.SlackBuild
-rw-r--r-- 1 root root 25 2020-06-19 19:00 ./source/ap/sudo/sudo.url
drwxr-xr-x 2 root root 4096 2023-06-22 16:47 ./source/ap/sysstat
@@ -9845,7 +9865,7 @@ drwxr-xr-x 2 root root 4096 2023-07-06 17:29 ./source/kde/zxing-cpp
-rw-r--r-- 1 root root 574494 2023-07-05 16:25 ./source/kde/zxing-cpp/zxing-cpp-2.1.0.tar.lz
-rwxr-xr-x 1 root root 3872 2023-04-20 20:52 ./source/kde/zxing-cpp/zxing-cpp.SlackBuild
-rw-r--r-- 1 root root 39 2023-04-20 20:51 ./source/kde/zxing-cpp/zxing-cpp.url
-drwxr-xr-x 404 root root 12288 2023-10-28 21:11 ./source/l
+drwxr-xr-x 404 root root 12288 2023-11-10 02:49 ./source/l
-rw-r--r-- 1 root root 1485 2023-10-27 17:56 ./source/l/FTBFSlog
drwxr-xr-x 3 root root 4096 2022-03-06 19:58 ./source/l/GConf
-rw-r--r-- 1 root root 1559904 2013-01-22 02:48 ./source/l/GConf/GConf-3.2.6.tar.xz
@@ -10157,15 +10177,13 @@ drwxr-xr-x 2 root root 4096 2022-09-06 18:27 ./source/l/farstream
-rwxr-xr-x 1 root root 4632 2022-09-06 18:27 ./source/l/farstream/farstream.SlackBuild
-rw-r--r-- 1 root root 61 2020-07-21 19:02 ./source/l/farstream/farstream.url
-rw-r--r-- 1 root root 772 2020-07-21 19:18 ./source/l/farstream/slack-desc
-drwxr-xr-x 2 root root 4096 2023-10-27 17:54 ./source/l/ffmpeg
+drwxr-xr-x 2 root root 4096 2023-11-10 02:46 ./source/l/ffmpeg
-rw-r--r-- 1 root root 542 2022-10-03 17:27 ./source/l/ffmpeg/add-av_stream_get_first_dts-for-chromium.patch.gz
--rw-r--r-- 1 root root 905 2023-08-04 04:18 ./source/l/ffmpeg/effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch.gz
--rw-r--r-- 1 root root 10007756 2023-03-26 14:21 ./source/l/ffmpeg/ffmpeg-5.1.3.tar.xz
--rw-r--r-- 1 root root 520 2023-03-26 14:26 ./source/l/ffmpeg/ffmpeg-5.1.3.tar.xz.asc
--rwxr-xr-x 1 root root 12077 2023-10-27 17:54 ./source/l/ffmpeg/ffmpeg.SlackBuild
+-rw-r--r-- 1 root root 10009968 2023-11-09 23:39 ./source/l/ffmpeg/ffmpeg-5.1.4.tar.xz
+-rw-r--r-- 1 root root 520 2023-11-09 23:41 ./source/l/ffmpeg/ffmpeg-5.1.4.tar.xz.asc
+-rwxr-xr-x 1 root root 11848 2023-11-10 02:48 ./source/l/ffmpeg/ffmpeg.SlackBuild
-rw-r--r-- 1 root root 463 2023-08-29 18:13 ./source/l/ffmpeg/ffmpeg.vulkan.diff.gz
-rw-r--r-- 1 root root 944 2018-12-10 19:57 ./source/l/ffmpeg/slack-desc
--rw-r--r-- 1 root root 2961 2023-10-26 03:09 ./source/l/ffmpeg/texinfo.patch.gz
drwxr-xr-x 2 root root 4096 2022-11-21 20:13 ./source/l/fftw
-rw-r--r-- 1 root root 2334329 2021-09-15 13:42 ./source/l/fftw/fftw-3.3.10.tar.lz
-rwxr-xr-x 1 root root 6067 2023-10-05 19:37 ./source/l/fftw/fftw.SlackBuild
@@ -12298,8 +12316,8 @@ drwxr-xr-x 2 root root 4096 2022-10-05 18:08 ./source/n/dhcp
-rw-r--r-- 1 root root 28 2020-01-22 18:55 ./source/n/dhcp/dhcp.url
-rw-r--r-- 1 root root 309 2011-03-24 13:39 ./source/n/dhcp/doinst.sh.gz
-rw-r--r-- 1 root root 1093 2018-02-27 06:13 ./source/n/dhcp/slack-desc
-drwxr-xr-x 3 root root 4096 2023-10-19 17:36 ./source/n/dhcpcd
--rw-r--r-- 1 root root 268755 2023-10-19 11:15 ./source/n/dhcpcd/dhcpcd-10.0.4.tar.lz
+drwxr-xr-x 3 root root 4096 2023-11-10 18:03 ./source/n/dhcpcd
+-rw-r--r-- 1 root root 269226 2023-11-10 14:25 ./source/n/dhcpcd/dhcpcd-10.0.5.tar.lz
-rwxr-xr-x 1 root root 5350 2023-04-21 18:47 ./source/n/dhcpcd/dhcpcd.SlackBuild
-rw-r--r-- 1 root root 90 2023-04-12 21:03 ./source/n/dhcpcd/dhcpcd.url
-rw-r--r-- 1 root root 265 2009-07-24 16:30 ./source/n/dhcpcd/doinst.sh.gz
@@ -13189,9 +13207,9 @@ drwxr-xr-x 2 root root 4096 2023-09-01 18:52 ./source/n/wget2
-rw-r--r-- 1 root root 2122122 2023-08-31 12:54 ./source/n/wget2/wget2-2.1.0.tar.lz
-rw-r--r-- 1 root root 566 2023-08-31 12:54 ./source/n/wget2/wget2-2.1.0.tar.lz.sig
-rwxr-xr-x 1 root root 4975 2022-07-04 18:48 ./source/n/wget2/wget2.SlackBuild
-drwxr-xr-x 2 root root 4096 2023-10-09 17:24 ./source/n/whois
+drwxr-xr-x 2 root root 4096 2023-11-10 02:39 ./source/n/whois
-rw-r--r-- 1 root root 820 2019-03-28 19:25 ./source/n/whois/slack-desc
--rw-r--r-- 1 root root 90880 2023-10-08 20:58 ./source/n/whois/whois-5.5.19.tar.xz
+-rw-r--r-- 1 root root 90996 2023-11-09 21:05 ./source/n/whois/whois-5.5.20.tar.xz
-rwxr-xr-x 1 root root 3046 2023-02-28 19:20 ./source/n/whois/whois.SlackBuild
-rw-r--r-- 1 root root 33 2019-07-24 18:55 ./source/n/whois/whois.url
drwxr-xr-x 2 root root 4096 2022-09-06 18:27 ./source/n/wireguard-tools
@@ -15251,26 +15269,26 @@ drwxr-xr-x 2 root root 4096 2021-01-29 18:38 ./source/xap/xpdf/lang
-rw-r--r-- 1 root root 743 2019-10-03 18:55 ./source/xap/xpdf/lang/xpdf-japanese.diff.gz
-rw-r--r-- 1 root root 289552 2020-12-22 22:47 ./source/xap/xpdf/lang/xpdf-japanese.tar.xz
-rw-r--r-- 1 root root 336 2021-01-29 18:38 ./source/xap/xpdf/lang/xpdf-korean.diff.gz
--rw-r--r-- 1 root root 327024 2020-12-22 22:47 ./source/xap/xpdf/lang/xpdf-korean.tar.xz
--rw-r--r-- 1 root root 1316 2011-08-15 21:28 ./source/xap/xpdf/lang/xpdf-latin2-2011-aug-15.tar.xz
--rw-r--r-- 1 root root 224 2013-03-28 20:51 ./source/xap/xpdf/lang/xpdf-latin2.diff.gz
--rw-r--r-- 1 root root 1804 2011-08-15 21:28 ./source/xap/xpdf/lang/xpdf-thai-2011-aug-15.tar.xz
--rw-r--r-- 1 root root 252 2013-03-28 20:51 ./source/xap/xpdf/lang/xpdf-thai.diff.gz
--rw-r--r-- 1 root root 1152 2011-08-15 21:28 ./source/xap/xpdf/lang/xpdf-turkish-2011-aug-15.tar.xz
--rw-r--r-- 1 root root 239 2013-03-28 20:51 ./source/xap/xpdf/lang/xpdf-turkish.diff.gz
-drwxr-xr-x 2 root root 4096 2021-01-29 18:32 ./source/xap/xpdf/patches
--rw-r--r-- 1 root root 555 2017-09-26 04:39 ./source/xap/xpdf/patches/xpdfrc.diff.gz
--rw-r--r-- 1 root root 640 2018-02-27 06:13 ./source/xap/xpdf/slack-desc
--rw-r--r-- 1 root root 685124 2022-04-18 21:27 ./source/xap/xpdf/xpdf-4.04.tar.lz
--rwxr-xr-x 1 root root 5287 2022-04-26 18:17 ./source/xap/xpdf/xpdf.SlackBuild
--rw-r--r-- 1 root root 3260 2010-01-11 05:07 ./source/xap/xpdf/xpdf.desktop
--rw-r--r-- 1 root root 27 2019-10-03 18:45 ./source/xap/xpdf/xpdf.url
--rw-r--r-- 1 root root 2751 2016-03-03 05:04 ./source/xap/xpdf/xpdfIcon.xpm
-drwxr-xr-x 2 root root 4096 2021-02-13 05:32 ./source/xap/xsane
--rw-r--r-- 1 root root 951 2018-02-27 06:13 ./source/xap/xsane/slack-desc
--rw-r--r-- 1 root root 1073 2015-03-26 16:54 ./source/xap/xsane/xsane-0.995-close-fds.patch.gz
--rw-r--r-- 1 root root 521 2015-03-26 16:54 ./source/xap/xsane/xsane-0.995-xdg-open.patch.gz
--rw-r--r-- 1 root root 1558 2015-03-26 16:54 ./source/xap/xsane/xsane-0.996-no-eula.patch.gz
+-rw-r--r-- 1 root root 327024 2020-12-22 22:47 ./source/xap/xpdf/lang/xpdf-korean.tar.xz
+-rw-r--r-- 1 root root 1316 2011-08-15 21:28 ./source/xap/xpdf/lang/xpdf-latin2-2011-aug-15.tar.xz
+-rw-r--r-- 1 root root 224 2013-03-28 20:51 ./source/xap/xpdf/lang/xpdf-latin2.diff.gz
+-rw-r--r-- 1 root root 1804 2011-08-15 21:28 ./source/xap/xpdf/lang/xpdf-thai-2011-aug-15.tar.xz
+-rw-r--r-- 1 root root 252 2013-03-28 20:51 ./source/xap/xpdf/lang/xpdf-thai.diff.gz
+-rw-r--r-- 1 root root 1152 2011-08-15 21:28 ./source/xap/xpdf/lang/xpdf-turkish-2011-aug-15.tar.xz
+-rw-r--r-- 1 root root 239 2013-03-28 20:51 ./source/xap/xpdf/lang/xpdf-turkish.diff.gz
+drwxr-xr-x 2 root root 4096 2021-01-29 18:32 ./source/xap/xpdf/patches
+-rw-r--r-- 1 root root 555 2017-09-26 04:39 ./source/xap/xpdf/patches/xpdfrc.diff.gz
+-rw-r--r-- 1 root root 640 2018-02-27 06:13 ./source/xap/xpdf/slack-desc
+-rw-r--r-- 1 root root 685124 2022-04-18 21:27 ./source/xap/xpdf/xpdf-4.04.tar.lz
+-rwxr-xr-x 1 root root 5287 2022-04-26 18:17 ./source/xap/xpdf/xpdf.SlackBuild
+-rw-r--r-- 1 root root 3260 2010-01-11 05:07 ./source/xap/xpdf/xpdf.desktop
+-rw-r--r-- 1 root root 27 2019-10-03 18:45 ./source/xap/xpdf/xpdf.url
+-rw-r--r-- 1 root root 2751 2016-03-03 05:04 ./source/xap/xpdf/xpdfIcon.xpm
+drwxr-xr-x 2 root root 4096 2021-02-13 05:32 ./source/xap/xsane
+-rw-r--r-- 1 root root 951 2018-02-27 06:13 ./source/xap/xsane/slack-desc
+-rw-r--r-- 1 root root 1073 2015-03-26 16:54 ./source/xap/xsane/xsane-0.995-close-fds.patch.gz
+-rw-r--r-- 1 root root 521 2015-03-26 16:54 ./source/xap/xsane/xsane-0.995-xdg-open.patch.gz
+-rw-r--r-- 1 root root 1558 2015-03-26 16:54 ./source/xap/xsane/xsane-0.996-no-eula.patch.gz
-rw-r--r-- 1 root root 1679 2015-03-26 16:54 ./source/xap/xsane/xsane-0.997-ipv6.patch.gz
-rw-r--r-- 1 root root 1383 2015-03-26 16:54 ./source/xap/xsane/xsane-0.997-off-root-build.patch.gz
-rw-r--r-- 1 root root 771 2015-03-26 16:54 ./source/xap/xsane/xsane-0.998-desktop-file.patch.gz
@@ -15452,10 +15470,10 @@ drwxr-xr-x 2 root root 4096 2023-04-24 20:09 ./source/xfce/xfce4-weather-p
-rw-r--r-- 1 root root 2790805 2023-04-21 18:50 ./source/xfce/xfce4-weather-plugin/xfce4-weather-plugin-0.11.1.tar.lz
-rwxr-xr-x 1 root root 3721 2022-12-17 20:50 ./source/xfce/xfce4-weather-plugin/xfce4-weather-plugin.SlackBuild
-rw-r--r-- 1 root root 65 2018-09-22 21:37 ./source/xfce/xfce4-weather-plugin/xfce4-weather-plugin.url
-drwxr-xr-x 2 root root 4096 2023-08-29 18:32 ./source/xfce/xfce4-whiskermenu-plugin
+drwxr-xr-x 2 root root 4096 2023-11-10 02:43 ./source/xfce/xfce4-whiskermenu-plugin
-rw-r--r-- 1 root root 172 2016-06-18 20:47 ./source/xfce/xfce4-whiskermenu-plugin/doinst.sh.gz
-rw-r--r-- 1 root root 1334 2020-11-25 21:11 ./source/xfce/xfce4-whiskermenu-plugin/slack-desc
--rw-r--r-- 1 root root 174459 2023-08-29 14:21 ./source/xfce/xfce4-whiskermenu-plugin/xfce4-whiskermenu-plugin-2.8.0.tar.lz
+-rw-r--r-- 1 root root 175071 2023-11-09 18:29 ./source/xfce/xfce4-whiskermenu-plugin/xfce4-whiskermenu-plugin-2.8.1.tar.lz
-rwxr-xr-x 1 root root 4082 2023-08-29 18:34 ./source/xfce/xfce4-whiskermenu-plugin/xfce4-whiskermenu-plugin.SlackBuild
-rw-r--r-- 1 root root 69 2018-11-20 06:26 ./source/xfce/xfce4-whiskermenu-plugin/xfce4-whiskermenu-plugin.url
drwxr-xr-x 2 root root 4096 2023-11-01 19:46 ./source/xfce/xfconf
diff --git a/recompress.sh b/recompress.sh
index c47fe7dad..c43cbaf0c 100755
--- a/recompress.sh
+++ b/recompress.sh
@@ -831,8 +831,6 @@ gzip ./source/l/sdl/SDL_ttf.shaded.text.diff
gzip ./source/l/sdl/SDL_mixer.usrlocal.diff
gzip ./source/l/sdl/libsdl-1.2.15-resizing.patch
gzip ./source/l/adwaita-icon-theme/doinst.sh
-gzip ./source/l/ffmpeg/texinfo.patch
-gzip ./source/l/ffmpeg/effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch
gzip ./source/l/ffmpeg/ffmpeg.vulkan.diff
gzip ./source/l/ffmpeg/add-av_stream_get_first_dts-for-chromium.patch
gzip ./source/l/svgalib/svgalib-1.9.25-kernel-2.6.26.diff
diff --git a/slackware64/ap/maketag b/slackware64/ap/maketag
index 4137f9024..26f01481d 100644
--- a/slackware64/ap/maketag
+++ b/slackware64/ap/maketag
@@ -70,6 +70,7 @@ done." 22 72 12 \
"powertop" "PowerTOP system energy usage utility" "on" \
"qpdf" "Command-line tools and library for PDF files" "on" \
"radeontool" "Utility for laptops with a Radeon chipset" "on" \
+"rdfind" "redundant data finder" "on" \
"rpm" "RPM package tool (unsupported)" "on" \
"rzip" "A large file compression utility" "on" \
"sc" "The 'sc' spreadsheet" "on" \
@@ -99,7 +100,7 @@ if [ $? = 1 -o $? = 255 ]; then
rm -f $TMP/SeTpkgs
> $TMP/SeTnewtag
for pkg in \
-a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters dash dc3dd ddrescue diffstat diffutils dmapi dmidecode dvd+rw-tools enscript flac ghostscript ghostscript-fonts-std gphoto2 groff gutenprint hplip htop inxi ispell itstool jed joe jove ksh93 libx86 linuxdoc-tools lm_sensors lsof lsscsi lxc madplay man-db man-pages mariadb mc moc most mpg123 nano neofetch normalize nvme-cli opus-tools pamixer powertop qpdf radeontool rpm rzip sc sc-im screen seejpeg slackpkg soma sox sqlite squashfs-tools sudo sysstat terminus-font texinfo tmux undervolt usbmuxd vbetool vim vorbis-tools xfsdump xorriso zsh \
+a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters dash dc3dd ddrescue diffstat diffutils dmapi dmidecode dvd+rw-tools enscript flac ghostscript ghostscript-fonts-std gphoto2 groff gutenprint hplip htop inxi ispell itstool jed joe jove ksh93 libx86 linuxdoc-tools lm_sensors lsof lsscsi lxc madplay man-db man-pages mariadb mc moc most mpg123 nano neofetch normalize nvme-cli opus-tools pamixer powertop qpdf radeontool rdfind rpm rzip sc sc-im screen seejpeg slackpkg soma sox sqlite squashfs-tools sudo sysstat terminus-font texinfo tmux undervolt usbmuxd vbetool vim vorbis-tools xfsdump xorriso zsh \
; do
echo "$pkg: SKP" >> $TMP/SeTnewtag
done
@@ -107,7 +108,7 @@ a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters
fi
cat /dev/null > $TMP/SeTnewtag
for PACKAGE in \
-a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters dash dc3dd ddrescue diffstat diffutils dmapi dmidecode dvd+rw-tools enscript flac ghostscript ghostscript-fonts-std gphoto2 groff gutenprint hplip htop inxi ispell itstool jed joe jove ksh93 libx86 linuxdoc-tools lm_sensors lsof lsscsi lxc madplay man-db man-pages mariadb mc moc most mpg123 nano neofetch normalize nvme-cli opus-tools pamixer powertop qpdf radeontool rpm rzip sc sc-im screen seejpeg slackpkg soma sox sqlite squashfs-tools sudo sysstat terminus-font texinfo tmux undervolt usbmuxd vbetool vim vorbis-tools xfsdump xorriso zsh \
+a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters dash dc3dd ddrescue diffstat diffutils dmapi dmidecode dvd+rw-tools enscript flac ghostscript ghostscript-fonts-std gphoto2 groff gutenprint hplip htop inxi ispell itstool jed joe jove ksh93 libx86 linuxdoc-tools lm_sensors lsof lsscsi lxc madplay man-db man-pages mariadb mc moc most mpg123 nano neofetch normalize nvme-cli opus-tools pamixer powertop qpdf radeontool rdfind rpm rzip sc sc-im screen seejpeg slackpkg soma sox sqlite squashfs-tools sudo sysstat terminus-font texinfo tmux undervolt usbmuxd vbetool vim vorbis-tools xfsdump xorriso zsh \
; do
if grep "\(^\| \)$PACKAGE\( \|$\)" $TMP/SeTpkgs 1> /dev/null 2> /dev/null ; then
echo "$PACKAGE: ADD" >> $TMP/SeTnewtag
diff --git a/slackware64/ap/maketag.ez b/slackware64/ap/maketag.ez
index 4137f9024..26f01481d 100644
--- a/slackware64/ap/maketag.ez
+++ b/slackware64/ap/maketag.ez
@@ -70,6 +70,7 @@ done." 22 72 12 \
"powertop" "PowerTOP system energy usage utility" "on" \
"qpdf" "Command-line tools and library for PDF files" "on" \
"radeontool" "Utility for laptops with a Radeon chipset" "on" \
+"rdfind" "redundant data finder" "on" \
"rpm" "RPM package tool (unsupported)" "on" \
"rzip" "A large file compression utility" "on" \
"sc" "The 'sc' spreadsheet" "on" \
@@ -99,7 +100,7 @@ if [ $? = 1 -o $? = 255 ]; then
rm -f $TMP/SeTpkgs
> $TMP/SeTnewtag
for pkg in \
-a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters dash dc3dd ddrescue diffstat diffutils dmapi dmidecode dvd+rw-tools enscript flac ghostscript ghostscript-fonts-std gphoto2 groff gutenprint hplip htop inxi ispell itstool jed joe jove ksh93 libx86 linuxdoc-tools lm_sensors lsof lsscsi lxc madplay man-db man-pages mariadb mc moc most mpg123 nano neofetch normalize nvme-cli opus-tools pamixer powertop qpdf radeontool rpm rzip sc sc-im screen seejpeg slackpkg soma sox sqlite squashfs-tools sudo sysstat terminus-font texinfo tmux undervolt usbmuxd vbetool vim vorbis-tools xfsdump xorriso zsh \
+a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters dash dc3dd ddrescue diffstat diffutils dmapi dmidecode dvd+rw-tools enscript flac ghostscript ghostscript-fonts-std gphoto2 groff gutenprint hplip htop inxi ispell itstool jed joe jove ksh93 libx86 linuxdoc-tools lm_sensors lsof lsscsi lxc madplay man-db man-pages mariadb mc moc most mpg123 nano neofetch normalize nvme-cli opus-tools pamixer powertop qpdf radeontool rdfind rpm rzip sc sc-im screen seejpeg slackpkg soma sox sqlite squashfs-tools sudo sysstat terminus-font texinfo tmux undervolt usbmuxd vbetool vim vorbis-tools xfsdump xorriso zsh \
; do
echo "$pkg: SKP" >> $TMP/SeTnewtag
done
@@ -107,7 +108,7 @@ a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters
fi
cat /dev/null > $TMP/SeTnewtag
for PACKAGE in \
-a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters dash dc3dd ddrescue diffstat diffutils dmapi dmidecode dvd+rw-tools enscript flac ghostscript ghostscript-fonts-std gphoto2 groff gutenprint hplip htop inxi ispell itstool jed joe jove ksh93 libx86 linuxdoc-tools lm_sensors lsof lsscsi lxc madplay man-db man-pages mariadb mc moc most mpg123 nano neofetch normalize nvme-cli opus-tools pamixer powertop qpdf radeontool rpm rzip sc sc-im screen seejpeg slackpkg soma sox sqlite squashfs-tools sudo sysstat terminus-font texinfo tmux undervolt usbmuxd vbetool vim vorbis-tools xfsdump xorriso zsh \
+a2ps acct alsa-utils amp at bc bpe cdparanoia cdrdao cdrtools cups cups-filters dash dc3dd ddrescue diffstat diffutils dmapi dmidecode dvd+rw-tools enscript flac ghostscript ghostscript-fonts-std gphoto2 groff gutenprint hplip htop inxi ispell itstool jed joe jove ksh93 libx86 linuxdoc-tools lm_sensors lsof lsscsi lxc madplay man-db man-pages mariadb mc moc most mpg123 nano neofetch normalize nvme-cli opus-tools pamixer powertop qpdf radeontool rdfind rpm rzip sc sc-im screen seejpeg slackpkg soma sox sqlite squashfs-tools sudo sysstat terminus-font texinfo tmux undervolt usbmuxd vbetool vim vorbis-tools xfsdump xorriso zsh \
; do
if grep "\(^\| \)$PACKAGE\( \|$\)" $TMP/SeTpkgs 1> /dev/null 2> /dev/null ; then
echo "$PACKAGE: ADD" >> $TMP/SeTnewtag
diff --git a/slackware64/ap/tagfile b/slackware64/ap/tagfile
index 4982f8301..6dc9f6911 100644
--- a/slackware64/ap/tagfile
+++ b/slackware64/ap/tagfile
@@ -57,6 +57,7 @@ pamixer:REC
powertop:OPT
qpdf:REC
radeontool:REC
+rdfind:OPT
rpm:OPT
rzip:OPT
sc:OPT
diff --git a/source/a/bash/bash-5.2-patches/bash52-016 b/source/a/bash/bash-5.2-patches/bash52-016
new file mode 100644
index 000000000..e9fbbef17
--- /dev/null
+++ b/source/a/bash/bash-5.2-patches/bash52-016
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.2
+Patch-ID: bash52-016
+
+Bug-Reported-by: F G <frank.graziano@gmail.com>
+Bug-Reference-ID: <CAOhYt35M5VctK+xAPu=Gy_UzzGmHedWPJE4q+kL4UHF_6Nb1kA@mail.gmail.com>
+Bug-Reference-URL:
+
+Bug-Description:
+
+If an expression in an arithmetic for loop expands to NULL, the shell
+would crash.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-5.2-patched/execute_cmd.c Thu Feb 23 14:15:05 2023
+--- execute_cmd.c Mon Feb 27 17:53:08 2023
+***************
+*** 3051,3055 ****
+ if (l->next)
+ free (expr);
+! new = make_word_list (make_word (temp), (WORD_LIST *)NULL);
+ free (temp);
+
+--- 3051,3055 ----
+ if (l->next)
+ free (expr);
+! new = make_word_list (make_word (temp ? temp : ""), (WORD_LIST *)NULL);
+ free (temp);
+
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 15
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 16
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-5.2-patches/bash52-017 b/source/a/bash/bash-5.2-patches/bash52-017
new file mode 100644
index 000000000..d28b504bf
--- /dev/null
+++ b/source/a/bash/bash-5.2-patches/bash52-017
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.2
+Patch-ID: bash52-017
+
+Bug-Reported-by: Dan Church <h3xx@gmx.com>
+Bug-Reference-ID: <1a8fd1d6-a3ac-9a67-78eb-b9a7435304c8@gmx.com>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-12/msg00076.html
+
+Bug-Description:
+
+In certain cases, using the `.' builtin in a subshell would optimize away
+the rest of the commands in the subshell.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-5.2-patched/builtins/evalfile.c 2019-07-20 16:16:08.000000000 -0400
+--- builtins/evalfile.c 2022-12-22 12:13:08.000000000 -0500
+***************
+*** 267,271 ****
+
+ /* set the flags to be passed to parse_and_execute */
+! pflags = SEVAL_RESETLINE;
+ pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST;
+
+--- 267,271 ----
+
+ /* set the flags to be passed to parse_and_execute */
+! pflags = SEVAL_RESETLINE|SEVAL_NOOPTIMIZE;
+ pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST;
+
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 16
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 17
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-5.2-patches/bash52-018 b/source/a/bash/bash-5.2-patches/bash52-018
new file mode 100644
index 000000000..d93f11281
--- /dev/null
+++ b/source/a/bash/bash-5.2-patches/bash52-018
@@ -0,0 +1,3643 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.2
+Patch-ID: bash52-018
+
+Bug-Reported-by: Todd Stein <toddbstein@gmail.com>
+ Eduardo A . Bustamante López <dualbus@gmail.com>
+Bug-Reference-ID:
+ <Y/SHWg7/+sc19k7P@system76-pc>
+Bug-Reference-URL: https://savannah.gnu.org/support/?110745
+ https://lists.gnu.org/archive/html/bug-bash/2023-02/msg00141.html
+
+Bug-Description:
+
+There are two problems with returning tokens to yyparse() when the shell
+encounters a syntax error or when it reads EOF.
+
+When reading a WORD token, the parser has to return the correct value to
+yyparse. Previous versions returned a value < 0, which the bash parser
+translated into YYERRCODE for bison, and in newer versions of bison, the
+appropriate reset actions didn't happen. We should return YYUNDEF, which
+bison uses for `invalid token'. Since we can return a token < 0 for both
+invalid tokens and EOF, the bash tokenizer needs to differentiate between
+those two cases.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-5.2-patched/parse.y 2022-12-13 12:09:02.000000000 -0500
+--- parse.y 2023-11-08 14:29:13.000000000 -0500
+***************
+*** 453,456 ****
+--- 453,471 ----
+ }
+ }
++ | error YYEOF
++ {
++ global_command = (COMMAND *)NULL;
++ if (last_command_exit_value == 0)
++ last_command_exit_value = EX_BADUSAGE; /* force error return */
++ if (interactive && parse_and_execute_level == 0)
++ {
++ handle_eof_input_unit ();
++ YYACCEPT;
++ }
++ else
++ {
++ YYABORT;
++ }
++ }
+ | yacc_EOF
+ {
+***************
+*** 2898,2904 ****
+ if (current_token < 0)
+ #if defined (YYERRCODE) && !defined (YYUNDEF)
+! current_token = YYERRCODE;
+ #else
+! current_token = YYerror;
+ #endif
+
+--- 2913,2919 ----
+ if (current_token < 0)
+ #if defined (YYERRCODE) && !defined (YYUNDEF)
+! current_token = EOF_Reached ? YYEOF : YYERRCODE;
+ #else
+! current_token = EOF_Reached ? YYEOF : YYUNDEF;
+ #endif
+
+***************
+*** 3695,3698 ****
+--- 3711,3715 ----
+ parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
+ EOF_Reached = 1; /* XXX */
++ parser_state |= PST_NOERROR; /* avoid redundant error message */
+ return (&matched_pair_error);
+ }
+***************
+*** 4157,4160 ****
+--- 4172,4176 ----
+
+ /* yyparse() has already called yyerror() and reset_parser() */
++ parser_state |= PST_NOERROR;
+ return (&matched_pair_error);
+ }
+
+*** /Users/chet/src/bash/bash-5.2-patched/y.tab.c 2022-12-13 12:09:02.000000000 -0500
+--- y.tab.c 2023-11-08 14:38:01.000000000 -0500
+***************
+*** 993,997 ****
+
+ /* YYFINAL -- State number of the termination state. */
+! #define YYFINAL 121
+ /* YYLAST -- Last index in YYTABLE. */
+ #define YYLAST 740
+--- 993,997 ----
+
+ /* YYFINAL -- State number of the termination state. */
+! #define YYFINAL 122
+ /* YYLAST -- Last index in YYTABLE. */
+ #define YYLAST 740
+***************
+*** 1002,1008 ****
+ #define YYNNTS 38
+ /* YYNRULES -- Number of rules. */
+! #define YYNRULES 174
+ /* YYNSTATES -- Number of states. */
+! #define YYNSTATES 349
+
+ /* YYMAXUTOK -- Last valid token kind. */
+--- 1002,1008 ----
+ #define YYNNTS 38
+ /* YYNRULES -- Number of rules. */
+! #define YYNRULES 175
+ /* YYNSTATES -- Number of states. */
+! #define YYNSTATES 350
+
+ /* YYMAXUTOK -- Last valid token kind. */
+***************
+*** 1058,1079 ****
+ static const yytype_int16 yyrline[] =
+ {
+! 0, 395, 395, 406, 414, 423, 438, 455, 465, 467,
+! 471, 477, 483, 489, 495, 501, 507, 513, 519, 525,
+! 531, 537, 543, 549, 555, 561, 568, 575, 582, 589,
+! 596, 603, 609, 615, 621, 627, 633, 639, 645, 651,
+! 657, 663, 669, 675, 681, 687, 693, 699, 705, 711,
+! 717, 723, 729, 735, 743, 745, 747, 751, 755, 766,
+! 768, 772, 774, 776, 792, 794, 798, 800, 802, 804,
+! 806, 808, 810, 812, 814, 816, 818, 822, 827, 832,
+! 837, 842, 847, 852, 857, 864, 870, 876, 882, 890,
+! 895, 900, 905, 910, 915, 920, 925, 932, 937, 942,
+! 949, 951, 953, 955, 959, 961, 992, 999, 1003, 1009,
+! 1014, 1031, 1036, 1053, 1060, 1062, 1064, 1069, 1073, 1077,
+! 1081, 1083, 1085, 1089, 1090, 1094, 1096, 1098, 1100, 1104,
+! 1106, 1108, 1110, 1112, 1114, 1118, 1120, 1129, 1135, 1141,
+! 1142, 1149, 1153, 1155, 1157, 1164, 1166, 1173, 1177, 1178,
+! 1181, 1183, 1185, 1189, 1190, 1199, 1214, 1232, 1249, 1251,
+! 1253, 1260, 1263, 1267, 1269, 1275, 1281, 1301, 1324, 1326,
+! 1349, 1353, 1355, 1357, 1359
+ };
+ #endif
+--- 1058,1079 ----
+ static const yytype_int16 yyrline[] =
+ {
+! 0, 395, 395, 406, 414, 423, 438, 455, 470, 480,
+! 482, 486, 492, 498, 504, 510, 516, 522, 528, 534,
+! 540, 546, 552, 558, 564, 570, 576, 583, 590, 597,
+! 604, 611, 618, 624, 630, 636, 642, 648, 654, 660,
+! 666, 672, 678, 684, 690, 696, 702, 708, 714, 720,
+! 726, 732, 738, 744, 750, 758, 760, 762, 766, 770,
+! 781, 783, 787, 789, 791, 807, 809, 813, 815, 817,
+! 819, 821, 823, 825, 827, 829, 831, 833, 837, 842,
+! 847, 852, 857, 862, 867, 872, 879, 885, 891, 897,
+! 905, 910, 915, 920, 925, 930, 935, 940, 947, 952,
+! 957, 964, 966, 968, 970, 974, 976, 1007, 1014, 1018,
+! 1024, 1029, 1046, 1051, 1068, 1075, 1077, 1079, 1084, 1088,
+! 1092, 1096, 1098, 1100, 1104, 1105, 1109, 1111, 1113, 1115,
+! 1119, 1121, 1123, 1125, 1127, 1129, 1133, 1135, 1144, 1150,
+! 1156, 1157, 1164, 1168, 1170, 1172, 1179, 1181, 1188, 1192,
+! 1193, 1196, 1198, 1200, 1204, 1205, 1214, 1229, 1247, 1264,
+! 1266, 1268, 1275, 1278, 1282, 1284, 1290, 1296, 1316, 1339,
+! 1341, 1364, 1368, 1370, 1372, 1374
+ };
+ #endif
+***************
+*** 1120,1124 ****
+ #endif
+
+! #define YYPACT_NINF (-152)
+
+ #define yypact_value_is_default(Yyn) \
+--- 1120,1124 ----
+ #endif
+
+! #define YYPACT_NINF (-125)
+
+ #define yypact_value_is_default(Yyn) \
+***************
+*** 1134,1172 ****
+ static const yytype_int16 yypact[] =
+ {
+! 328, 80, -152, -11, -1, 3, -152, -152, 15, 637,
+! -5, 433, 149, -28, -152, 187, 684, -152, 18, 28,
+! 130, 38, 139, 50, 52, 60, 65, 74, -152, -152,
+! -152, 89, 104, -152, -152, 97, -152, -152, 246, -152,
+! 670, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+! -152, -152, -152, 146, 211, -152, 1, 433, -152, -152,
+! 135, 484, -152, 59, 61, 90, 167, 171, 10, 71,
+! 246, 670, 144, -152, -152, -152, -152, -152, 165, -152,
+! 142, 179, 192, 140, 194, 160, 227, 245, 252, 253,
+! 260, 261, 262, 162, 269, 178, 270, 272, 273, 274,
+! 277, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+! -152, -152, -152, -152, -152, 168, 379, -152, -152, 173,
+! 244, -152, -152, -152, -152, 670, -152, -152, -152, -152,
+! -152, 535, 535, -152, -152, -152, -152, -152, -152, -152,
+! 205, -152, 14, -152, 36, -152, -152, -152, -152, 84,
+! -152, -152, -152, 249, 670, -152, 670, 670, -152, -152,
+! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+! -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+! -152, -152, -152, -152, 484, 484, 203, 203, 586, 586,
+! 145, -152, -152, -152, -152, -152, -152, 0, -152, 119,
+! -152, 291, 248, 66, 88, -152, 119, -152, 296, 297,
+! 35, -152, 670, 670, 35, -152, -152, 1, 1, -152,
+! -152, -152, 306, 484, 484, 484, 484, 484, 305, 169,
+! -152, 7, -152, -152, 302, -152, 131, -152, 265, -152,
+! -152, -152, -152, -152, -152, 304, 131, -152, 266, -152,
+! -152, -152, 35, -152, 313, 317, -152, -152, -152, 225,
+! 225, 225, -152, -152, -152, -152, 206, 25, -152, -152,
+! 307, -42, 319, 276, -152, -152, -152, 95, -152, 322,
+! 283, 332, 284, -152, -152, 102, -152, -152, -152, -152,
+! -152, -152, -152, -152, 45, 323, -152, -152, -152, 106,
+! -152, -152, -152, -152, -152, -152, 109, -152, -152, 264,
+! -152, -152, -152, 484, -152, -152, 333, 293, -152, -152,
+! 338, 300, -152, -152, -152, 484, 345, 303, -152, -152,
+! 346, 309, -152, -152, -152, -152, -152, -152, -152
+ };
+
+--- 1134,1172 ----
+ static const yytype_int16 yypact[] =
+ {
+! 329, 27, -125, 8, 81, 10, -125, -125, 16, 38,
+! 0, 434, -5, -16, -125, 670, 684, -125, 33, 43,
+! 62, 63, 71, 69, 94, 105, 108, 116, -125, -125,
+! -125, 125, 139, -125, -125, 111, -125, -125, 626, -125,
+! 648, -125, -125, -125, -125, -125, -125, -125, -125, -125,
+! -125, -125, -125, 5, -21, -125, -15, 434, -125, -125,
+! -125, 196, 485, -125, 157, 2, 180, 207, 222, 227,
+! 638, 626, 648, 224, -125, -125, -125, -125, -125, 219,
+! -125, 185, 223, 228, 140, 230, 161, 232, 233, 234,
+! 236, 241, 248, 249, 162, 250, 163, 251, 254, 256,
+! 257, 258, -125, -125, -125, -125, -125, -125, -125, -125,
+! -125, -125, -125, -125, -125, -125, 225, 380, -125, -125,
+! 229, 231, -125, -125, -125, -125, 648, -125, -125, -125,
+! -125, -125, 536, 536, -125, -125, -125, -125, -125, -125,
+! -125, 214, -125, -7, -125, 85, -125, -125, -125, -125,
+! 89, -125, -125, -125, 235, 648, -125, 648, 648, -125,
+! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125,
+! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125,
+! -125, -125, -125, -125, -125, -125, -125, -125, -125, -125,
+! -125, -125, -125, -125, -125, 485, 485, 138, 138, 587,
+! 587, 17, -125, -125, -125, -125, -125, -125, 88, -125,
+! 122, -125, 274, 238, 100, 101, -125, 122, -125, 276,
+! 278, 260, -125, 648, 648, 260, -125, -125, -15, -15,
+! -125, -125, -125, 287, 485, 485, 485, 485, 485, 290,
+! 164, -125, 26, -125, -125, 285, -125, 131, -125, 242,
+! -125, -125, -125, -125, -125, -125, 288, 131, -125, 243,
+! -125, -125, -125, 260, -125, 297, 302, -125, -125, -125,
+! 152, 152, 152, -125, -125, -125, -125, 170, 61, -125,
+! -125, 281, -36, 293, 252, -125, -125, -125, 102, -125,
+! 298, 255, 300, 262, -125, -125, 103, -125, -125, -125,
+! -125, -125, -125, -125, -125, -33, 296, -125, -125, -125,
+! 110, -125, -125, -125, -125, -125, -125, 112, -125, -125,
+! 189, -125, -125, -125, 485, -125, -125, 310, 267, -125,
+! -125, 314, 275, -125, -125, -125, 485, 318, 277, -125,
+! -125, 320, 279, -125, -125, -125, -125, -125, -125, -125
+ };
+
+***************
+*** 1176,1214 ****
+ static const yytype_uint8 yydefact[] =
+ {
+! 0, 0, 153, 0, 0, 0, 153, 153, 0, 0,
+! 0, 0, 171, 54, 55, 0, 0, 118, 0, 0,
+! 0, 0, 0, 0, 0, 0, 0, 0, 153, 4,
+! 7, 0, 0, 153, 153, 0, 56, 59, 61, 170,
+! 62, 66, 76, 70, 67, 64, 72, 3, 65, 71,
+! 73, 74, 75, 0, 155, 162, 163, 0, 5, 6,
+! 0, 0, 153, 153, 0, 153, 0, 0, 0, 54,
+! 113, 109, 0, 151, 150, 152, 167, 164, 172, 173,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+! 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+! 0, 16, 25, 40, 34, 49, 31, 43, 37, 46,
+! 28, 52, 53, 22, 19, 0, 0, 10, 11, 0,
+! 0, 1, 54, 60, 57, 63, 148, 149, 2, 153,
+! 153, 156, 157, 153, 153, 166, 165, 153, 154, 137,
+! 138, 147, 0, 153, 0, 153, 153, 153, 153, 0,
+! 153, 153, 153, 153, 104, 102, 111, 110, 119, 174,
+! 153, 18, 27, 42, 36, 51, 33, 45, 39, 48,
+! 30, 24, 21, 14, 15, 17, 26, 41, 35, 50,
+! 32, 44, 38, 47, 29, 23, 20, 12, 13, 107,
+! 108, 117, 106, 58, 0, 0, 160, 161, 0, 0,
+! 0, 153, 153, 153, 153, 153, 153, 0, 153, 0,
+! 153, 0, 0, 0, 0, 153, 0, 153, 0, 0,
+! 0, 153, 105, 112, 0, 158, 159, 169, 168, 153,
+! 153, 114, 0, 0, 0, 140, 141, 139, 0, 123,
+! 153, 0, 153, 153, 0, 8, 0, 153, 0, 87,
+! 88, 153, 153, 153, 153, 0, 0, 153, 0, 68,
+! 69, 103, 0, 100, 0, 0, 116, 142, 143, 144,
+! 145, 146, 99, 129, 131, 133, 124, 0, 97, 135,
+! 0, 0, 0, 0, 77, 9, 153, 0, 78, 0,
+! 0, 0, 0, 89, 153, 0, 90, 101, 115, 153,
+! 130, 132, 134, 98, 0, 0, 153, 79, 80, 0,
+! 153, 153, 85, 86, 91, 92, 0, 153, 153, 120,
+! 153, 136, 125, 126, 153, 153, 0, 0, 153, 153,
+! 0, 0, 153, 122, 127, 128, 0, 0, 83, 84,
+! 0, 0, 95, 96, 121, 81, 82, 93, 94
+ };
+
+--- 1176,1214 ----
+ static const yytype_uint8 yydefact[] =
+ {
+! 0, 0, 154, 0, 0, 0, 154, 154, 0, 0,
+! 0, 0, 172, 55, 56, 0, 0, 119, 0, 0,
+! 0, 0, 0, 0, 0, 0, 0, 0, 154, 4,
+! 8, 0, 0, 154, 154, 0, 57, 60, 62, 171,
+! 63, 67, 77, 71, 68, 65, 73, 3, 66, 72,
+! 74, 75, 76, 0, 156, 163, 164, 0, 7, 5,
+! 6, 0, 0, 154, 154, 0, 154, 0, 0, 0,
+! 55, 114, 110, 0, 152, 151, 153, 168, 165, 173,
+! 174, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+! 0, 0, 17, 26, 41, 35, 50, 32, 44, 38,
+! 47, 29, 53, 54, 23, 20, 0, 0, 11, 12,
+! 0, 0, 1, 55, 61, 58, 64, 149, 150, 2,
+! 154, 154, 157, 158, 154, 154, 167, 166, 154, 155,
+! 138, 139, 148, 0, 154, 0, 154, 154, 154, 154,
+! 0, 154, 154, 154, 154, 105, 103, 112, 111, 120,
+! 175, 154, 19, 28, 43, 37, 52, 34, 46, 40,
+! 49, 31, 25, 22, 15, 16, 18, 27, 42, 36,
+! 51, 33, 45, 39, 48, 30, 24, 21, 13, 14,
+! 108, 109, 118, 107, 59, 0, 0, 161, 162, 0,
+! 0, 0, 154, 154, 154, 154, 154, 154, 0, 154,
+! 0, 154, 0, 0, 0, 0, 154, 0, 154, 0,
+! 0, 0, 154, 106, 113, 0, 159, 160, 170, 169,
+! 154, 154, 115, 0, 0, 0, 141, 142, 140, 0,
+! 124, 154, 0, 154, 154, 0, 9, 0, 154, 0,
+! 88, 89, 154, 154, 154, 154, 0, 0, 154, 0,
+! 69, 70, 104, 0, 101, 0, 0, 117, 143, 144,
+! 145, 146, 147, 100, 130, 132, 134, 125, 0, 98,
+! 136, 0, 0, 0, 0, 78, 10, 154, 0, 79,
+! 0, 0, 0, 0, 90, 154, 0, 91, 102, 116,
+! 154, 131, 133, 135, 99, 0, 0, 154, 80, 81,
+! 0, 154, 154, 86, 87, 92, 93, 0, 154, 154,
+! 121, 154, 137, 126, 127, 154, 154, 0, 0, 154,
+! 154, 0, 0, 154, 123, 128, 129, 0, 0, 84,
+! 85, 0, 0, 96, 97, 122, 82, 83, 94, 95
+ };
+
+***************
+*** 1216,1223 ****
+ static const yytype_int16 yypgoto[] =
+ {
+! -152, -152, 112, -29, -14, -64, 360, -152, -8, -152,
+! -152, -152, -152, -152, -151, -152, -152, -152, -152, -152,
+! -152, -152, 13, -152, 136, -152, 98, -2, -152, 30,
+! -152, -54, -26, -152, -123, 6, 78, -152
+ };
+
+--- 1216,1223 ----
+ static const yytype_int16 yypgoto[] =
+ {
+! -125, -125, 126, -25, -28, -65, 335, -125, -8, -125,
+! -125, -125, -125, -125, -96, -125, -125, -125, -125, -125,
+! -125, -125, 28, -125, 109, -125, 68, -2, -125, -11,
+! -125, -54, -26, -125, -124, 6, 34, -125
+ };
+
+***************
+*** 1225,1232 ****
+ static const yytype_int16 yydefgoto[] =
+ {
+! 0, 35, 246, 36, 37, 125, 38, 39, 40, 41,
+! 42, 43, 44, 45, 155, 46, 47, 48, 49, 50,
+! 51, 52, 232, 238, 239, 240, 281, 120, 139, 140,
+! 128, 76, 61, 53, 54, 141, 56, 57
+ };
+
+--- 1225,1232 ----
+ static const yytype_int16 yydefgoto[] =
+ {
+! 0, 35, 247, 36, 37, 126, 38, 39, 40, 41,
+! 42, 43, 44, 45, 156, 46, 47, 48, 49, 50,
+! 51, 52, 233, 239, 240, 241, 282, 121, 140, 141,
+! 129, 77, 62, 53, 54, 142, 56, 57
+ };
+
+***************
+*** 1236,1390 ****
+ static const yytype_int16 yytable[] =
+ {
+! 60, 71, 116, 135, 66, 67, 55, 157, 196, 197,
+! 147, 124, 305, 2, 242, 62, 278, 77, 3, 306,
+! 4, 5, 6, 7, 123, 63, 115, 72, 10, 65,
+! 64, 119, 80, 279, 303, 206, 142, 144, 2, 149,
+! 17, 68, 124, 3, 101, 4, 5, 6, 7, 133,
+! 208, 279, 138, 10, 102, 134, 123, 209, 243, 138,
+! 154, 156, 152, 136, 106, 17, 138, 280, 33, 261,
+! 153, 225, 226, 263, 2, 145, 110, 138, 111, 3,
+! 251, 4, 5, 6, 7, 280, 112, 138, 138, 10,
+! 222, 113, 223, 33, 210, 34, 193, 121, 215, 305,
+! 114, 17, 253, 194, 195, 216, 320, 198, 199, 310,
+! 143, 297, 73, 74, 75, 117, 317, 207, 138, 146,
+! 324, 213, 214, 328, 252, 124, 220, 124, 193, 33,
+! 118, 34, 58, 59, 224, 200, 138, 55, 55, 137,
+! 138, 148, 217, 211, 212, 245, 254, 138, 218, 219,
+! 229, 230, 231, 311, 138, 247, 103, 285, 138, 104,
+! 318, 138, 257, 158, 325, 107, 163, 329, 108, 164,
+! 73, 74, 75, 78, 79, 233, 234, 235, 236, 237,
+! 241, 150, 73, 74, 75, 151, 167, 105, 177, 168,
+! 159, 178, 286, 193, 193, 262, 109, 165, 126, 127,
+! 55, 55, 294, 160, 181, 161, 244, 182, 248, 273,
+! 274, 275, 154, 255, 277, 258, 154, 169, 162, 179,
+! 166, 287, 81, 82, 83, 84, 85, 264, 265, 189,
+! 86, 295, 191, 87, 88, 183, 129, 130, 201, 202,
+! 282, 283, 89, 90, 129, 130, 300, 301, 302, 289,
+! 290, 291, 292, 170, 154, 203, 204, 205, 201, 202,
+! 309, 131, 132, 267, 268, 269, 270, 271, 316, 332,
+! 230, 171, 122, 14, 15, 16, 227, 228, 172, 173,
+! 323, 18, 19, 20, 21, 22, 174, 175, 176, 23,
+! 24, 25, 26, 27, 335, 180, 184, 319, 185, 186,
+! 187, 31, 32, 188, 322, 192, 249, 250, 326, 327,
+! 221, 259, 260, 266, 272, 330, 331, 284, 334, 293,
+! 298, 299, 336, 337, 288, 296, 340, 341, 256, 1,
+! 344, 2, 333, 279, 307, 308, 3, 312, 4, 5,
+! 6, 7, 313, 315, 8, 9, 10, 314, 338, 321,
+! 11, 12, 339, 342, 13, 14, 15, 16, 17, 343,
+! 345, 347, 346, 18, 19, 20, 21, 22, 348, 70,
+! 0, 23, 24, 25, 26, 27, 276, 28, 304, 0,
+! 29, 30, 2, 31, 32, 0, 33, 3, 34, 4,
+! 5, 6, 7, 0, 0, 8, 9, 10, 0, 0,
+! 0, 11, 12, 0, 0, 13, 14, 15, 16, 17,
+ 0, 0, 0, 0, 18, 19, 20, 21, 22, 0,
+! 0, 0, 23, 24, 25, 26, 27, 0, 0, 0,
+! 0, 138, 0, 0, 31, 32, 2, 33, 0, 34,
+! 190, 3, 0, 4, 5, 6, 7, 0, 0, 8,
+! 9, 10, 0, 0, 0, 11, 12, 0, 0, 13,
+! 14, 15, 16, 17, 0, 0, 0, 0, 18, 19,
+! 20, 21, 22, 0, 0, 0, 23, 24, 25, 26,
+! 27, 0, 0, 0, 73, 74, 75, 2, 31, 32,
+! 0, 33, 3, 34, 4, 5, 6, 7, 0, 0,
+ 8, 9, 10, 0, 0, 0, 11, 12, 0, 0,
+ 13, 14, 15, 16, 17, 0, 0, 0, 0, 18,
+ 19, 20, 21, 22, 0, 0, 0, 23, 24, 25,
+! 26, 27, 0, 0, 0, 0, 138, 0, 2, 31,
+ 32, 0, 33, 3, 34, 4, 5, 6, 7, 0,
+ 0, 8, 9, 10, 0, 0, 0, 11, 12, 0,
+ 0, 13, 14, 15, 16, 17, 0, 0, 0, 0,
+ 18, 19, 20, 21, 22, 0, 0, 0, 23, 24,
+! 25, 26, 27, 0, 0, 0, 0, 0, 0, 2,
+ 31, 32, 0, 33, 3, 34, 4, 5, 6, 7,
+! 0, 0, 8, 9, 10, 0, 0, 0, 0, 0,
+ 0, 0, 13, 14, 15, 16, 17, 0, 0, 0,
+ 0, 18, 19, 20, 21, 22, 0, 0, 0, 23,
+! 24, 25, 26, 27, 0, 0, 0, 0, 138, 0,
+ 2, 31, 32, 0, 33, 3, 34, 4, 5, 6,
+! 7, 0, 0, 0, 0, 10, 0, 0, 0, 0,
+! 0, 0, 0, 69, 14, 15, 16, 17, 0, 0,
+ 0, 0, 18, 19, 20, 21, 22, 0, 0, 0,
+! 23, 24, 25, 26, 27, 0, 0, 0, 0, 0,
+! 0, 0, 31, 32, 0, 33, 0, 34, 15, 16,
+! 0, 0, 0, 0, 0, 18, 19, 20, 21, 22,
+! 0, 0, 0, 23, 24, 25, 26, 27, 0, 91,
+! 92, 93, 94, 95, 0, 31, 32, 96, 0, 0,
+! 97, 98, 0, 0, 0, 0, 0, 0, 0, 99,
+! 100
+ };
+
+ static const yytype_int16 yycheck[] =
+ {
+! 2, 9, 28, 57, 6, 7, 0, 71, 131, 132,
+! 64, 40, 54, 3, 14, 26, 9, 11, 8, 61,
+! 10, 11, 12, 13, 38, 26, 28, 32, 18, 26,
+! 31, 33, 60, 26, 9, 21, 62, 63, 3, 65,
+! 30, 26, 71, 8, 26, 10, 11, 12, 13, 48,
+! 14, 26, 52, 18, 26, 54, 70, 21, 58, 52,
+! 68, 69, 52, 57, 26, 30, 52, 60, 58, 220,
+! 60, 194, 195, 224, 3, 14, 26, 52, 26, 8,
+! 14, 10, 11, 12, 13, 60, 26, 52, 52, 18,
+! 154, 26, 156, 58, 58, 60, 125, 0, 14, 54,
+! 26, 30, 14, 129, 130, 21, 61, 133, 134, 14,
+! 51, 262, 51, 52, 53, 26, 14, 143, 52, 58,
+! 14, 147, 148, 14, 58, 154, 152, 156, 157, 58,
+! 26, 60, 52, 53, 160, 137, 52, 131, 132, 4,
+! 52, 51, 58, 145, 146, 26, 58, 52, 150, 151,
+! 5, 6, 7, 58, 52, 209, 26, 26, 52, 29,
+! 58, 52, 216, 19, 58, 26, 26, 58, 29, 29,
+! 51, 52, 53, 24, 25, 201, 202, 203, 204, 205,
+! 206, 14, 51, 52, 53, 14, 26, 57, 26, 29,
+! 25, 29, 246, 222, 223, 221, 57, 57, 52, 53,
+! 194, 195, 256, 61, 26, 26, 208, 29, 210, 40,
+! 41, 42, 220, 215, 240, 217, 224, 57, 26, 57,
+! 26, 247, 35, 36, 37, 38, 39, 229, 230, 61,
+! 43, 257, 59, 46, 47, 57, 33, 34, 33, 34,
+! 242, 243, 55, 56, 33, 34, 40, 41, 42, 251,
+! 252, 253, 254, 26, 262, 50, 51, 52, 33, 34,
+! 286, 50, 51, 233, 234, 235, 236, 237, 294, 5,
+! 6, 26, 26, 27, 28, 29, 198, 199, 26, 26,
+! 306, 35, 36, 37, 38, 39, 26, 26, 26, 43,
+! 44, 45, 46, 47, 320, 26, 26, 299, 26, 26,
+! 26, 55, 56, 26, 306, 61, 15, 59, 310, 311,
+! 61, 15, 15, 7, 9, 317, 318, 15, 320, 15,
+! 7, 4, 324, 325, 59, 59, 328, 329, 216, 1,
+! 332, 3, 319, 26, 15, 59, 8, 15, 10, 11,
+! 12, 13, 59, 59, 16, 17, 18, 15, 15, 26,
+! 22, 23, 59, 15, 26, 27, 28, 29, 30, 59,
+! 15, 15, 59, 35, 36, 37, 38, 39, 59, 9,
+! -1, 43, 44, 45, 46, 47, 240, 49, 280, -1,
+! 52, 53, 3, 55, 56, -1, 58, 8, 60, 10,
+! 11, 12, 13, -1, -1, 16, 17, 18, -1, -1,
+! -1, 22, 23, -1, -1, 26, 27, 28, 29, 30,
+ -1, -1, -1, -1, 35, 36, 37, 38, 39, -1,
+! -1, -1, 43, 44, 45, 46, 47, -1, -1, -1,
+! -1, 52, -1, -1, 55, 56, 3, 58, -1, 60,
+! 61, 8, -1, 10, 11, 12, 13, -1, -1, 16,
+! 17, 18, -1, -1, -1, 22, 23, -1, -1, 26,
+! 27, 28, 29, 30, -1, -1, -1, -1, 35, 36,
+! 37, 38, 39, -1, -1, -1, 43, 44, 45, 46,
+! 47, -1, -1, -1, 51, 52, 53, 3, 55, 56,
+! -1, 58, 8, 60, 10, 11, 12, 13, -1, -1,
+ 16, 17, 18, -1, -1, -1, 22, 23, -1, -1,
+ 26, 27, 28, 29, 30, -1, -1, -1, -1, 35,
+ 36, 37, 38, 39, -1, -1, -1, 43, 44, 45,
+! 46, 47, -1, -1, -1, -1, 52, -1, 3, 55,
+ 56, -1, 58, 8, 60, 10, 11, 12, 13, -1,
+ -1, 16, 17, 18, -1, -1, -1, 22, 23, -1,
+ -1, 26, 27, 28, 29, 30, -1, -1, -1, -1,
+ 35, 36, 37, 38, 39, -1, -1, -1, 43, 44,
+! 45, 46, 47, -1, -1, -1, -1, -1, -1, 3,
+ 55, 56, -1, 58, 8, 60, 10, 11, 12, 13,
+! -1, -1, 16, 17, 18, -1, -1, -1, -1, -1,
+ -1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
+ -1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
+! 44, 45, 46, 47, -1, -1, -1, -1, 52, -1,
+ 3, 55, 56, -1, 58, 8, 60, 10, 11, 12,
+! 13, -1, -1, -1, -1, 18, -1, -1, -1, -1,
+ -1, -1, -1, 26, 27, 28, 29, 30, -1, -1,
+ -1, -1, 35, 36, 37, 38, 39, -1, -1, -1,
+! 43, 44, 45, 46, 47, -1, -1, -1, -1, -1,
+! -1, -1, 55, 56, -1, 58, -1, 60, 28, 29,
+! -1, -1, -1, -1, -1, 35, 36, 37, 38, 39,
+! -1, -1, -1, 43, 44, 45, 46, 47, -1, 35,
+ 36, 37, 38, 39, -1, 55, 56, 43, -1, -1,
+ 46, 47, -1, -1, -1, -1, -1, -1, -1, 55,
+--- 1236,1390 ----
+ static const yytype_int16 yytable[] =
+ {
+! 61, 72, 117, 136, 67, 68, 55, 158, 197, 198,
+! 124, 148, 130, 131, 207, 125, 146, 78, 306, 79,
+! 80, 306, 230, 231, 232, 307, 116, 58, 321, 132,
+! 133, 120, 73, 134, 63, 279, 66, 143, 145, 135,
+! 150, 2, 69, 124, 81, 139, 3, 125, 4, 5,
+! 6, 7, 280, 74, 75, 76, 10, 127, 128, 102,
+! 147, 155, 157, 137, 70, 14, 15, 16, 17, 103,
+! 304, 226, 227, 18, 19, 20, 21, 22, 139, 59,
+! 60, 23, 24, 25, 26, 27, 281, 280, 104, 107,
+! 223, 105, 224, 31, 32, 111, 33, 108, 34, 209,
+! 109, 194, 243, 216, 195, 196, 210, 64, 199, 200,
+! 217, 122, 65, 139, 252, 254, 311, 318, 208, 106,
+! 112, 281, 214, 215, 325, 262, 329, 221, 110, 264,
+! 125, 113, 125, 194, 114, 225, 201, 139, 55, 55,
+! 139, 139, 115, 211, 212, 213, 244, 218, 246, 219,
+! 220, 118, 139, 139, 139, 139, 248, 286, 253, 255,
+! 312, 319, 139, 258, 139, 119, 164, 298, 326, 165,
+! 330, 130, 131, 74, 75, 76, 234, 235, 236, 237,
+! 238, 242, 74, 75, 76, 202, 203, 168, 178, 182,
+! 169, 179, 183, 287, 333, 231, 263, 166, 194, 194,
+! 138, 55, 55, 295, 274, 275, 276, 245, 144, 249,
+! 301, 302, 303, 155, 256, 278, 259, 155, 170, 180,
+! 184, 151, 288, 268, 269, 270, 271, 272, 265, 266,
+! 2, 149, 296, 228, 229, 3, 152, 4, 5, 6,
+! 7, 283, 284, 159, 160, 10, 161, 202, 203, 162,
+! 290, 291, 292, 293, 163, 155, 167, 17, 171, 172,
+! 173, 310, 174, 2, 204, 205, 206, 175, 3, 317,
+! 4, 5, 6, 7, 176, 177, 181, 185, 10, 153,
+! 186, 324, 187, 188, 189, 33, 190, 154, 192, 250,
+! 17, 260, 193, 261, 267, 336, 222, 251, 320, 273,
+! 285, 289, 297, 294, 299, 323, 300, 280, 308, 327,
+! 328, 309, 139, 313, 314, 315, 331, 332, 33, 335,
+! 34, 316, 322, 337, 338, 339, 340, 341, 342, 343,
+! 1, 345, 2, 346, 344, 348, 347, 3, 349, 4,
+! 5, 6, 7, 257, 71, 8, 9, 10, 334, 305,
+! 277, 11, 12, 0, 0, 13, 14, 15, 16, 17,
+ 0, 0, 0, 0, 18, 19, 20, 21, 22, 0,
+! 0, 0, 23, 24, 25, 26, 27, 0, 28, 0,
+! 0, 29, 30, 2, 31, 32, 0, 33, 3, 34,
+! 4, 5, 6, 7, 0, 0, 8, 9, 10, 0,
+! 0, 0, 11, 12, 0, 0, 13, 14, 15, 16,
+! 17, 0, 0, 0, 0, 18, 19, 20, 21, 22,
+! 0, 0, 0, 23, 24, 25, 26, 27, 0, 0,
+! 0, 0, 139, 0, 0, 31, 32, 2, 33, 0,
+! 34, 191, 3, 0, 4, 5, 6, 7, 0, 0,
+ 8, 9, 10, 0, 0, 0, 11, 12, 0, 0,
+ 13, 14, 15, 16, 17, 0, 0, 0, 0, 18,
+ 19, 20, 21, 22, 0, 0, 0, 23, 24, 25,
+! 26, 27, 0, 0, 0, 74, 75, 76, 2, 31,
+ 32, 0, 33, 3, 34, 4, 5, 6, 7, 0,
+ 0, 8, 9, 10, 0, 0, 0, 11, 12, 0,
+ 0, 13, 14, 15, 16, 17, 0, 0, 0, 0,
+ 18, 19, 20, 21, 22, 0, 0, 0, 23, 24,
+! 25, 26, 27, 0, 0, 0, 0, 139, 0, 2,
+ 31, 32, 0, 33, 3, 34, 4, 5, 6, 7,
+! 0, 0, 8, 9, 10, 0, 0, 0, 11, 12,
+ 0, 0, 13, 14, 15, 16, 17, 0, 0, 0,
+ 0, 18, 19, 20, 21, 22, 0, 0, 0, 23,
+! 24, 25, 26, 27, 0, 0, 0, 0, 0, 0,
+ 2, 31, 32, 0, 33, 3, 34, 4, 5, 6,
+! 7, 0, 0, 8, 9, 10, 0, 0, 0, 0,
+! 0, 0, 0, 13, 14, 15, 16, 17, 0, 0,
+ 0, 0, 18, 19, 20, 21, 22, 0, 0, 0,
+! 23, 24, 25, 26, 27, 0, 0, 0, 0, 139,
+! 0, 2, 31, 32, 0, 33, 3, 34, 4, 5,
+! 6, 7, 123, 14, 15, 16, 10, 0, 0, 0,
+! 0, 18, 19, 20, 21, 22, 0, 0, 17, 23,
+! 24, 25, 26, 27, 0, 0, 15, 16, 0, 0,
+! 0, 31, 32, 18, 19, 20, 21, 22, 0, 0,
+! 0, 23, 24, 25, 26, 27, 33, 0, 34, 0,
+! 0, 0, 0, 31, 32, 82, 83, 84, 85, 86,
+! 0, 0, 0, 87, 0, 0, 88, 89, 0, 92,
+! 93, 94, 95, 96, 0, 90, 91, 97, 0, 0,
+! 98, 99, 0, 0, 0, 0, 0, 0, 0, 100,
+! 101
+ };
+
+ static const yytype_int16 yycheck[] =
+ {
+! 2, 9, 28, 57, 6, 7, 0, 72, 132, 133,
+! 38, 65, 33, 34, 21, 40, 14, 11, 54, 24,
+! 25, 54, 5, 6, 7, 61, 28, 0, 61, 50,
+! 51, 33, 32, 48, 26, 9, 26, 63, 64, 54,
+! 66, 3, 26, 71, 60, 52, 8, 72, 10, 11,
+! 12, 13, 26, 51, 52, 53, 18, 52, 53, 26,
+! 58, 69, 70, 57, 26, 27, 28, 29, 30, 26,
+! 9, 195, 196, 35, 36, 37, 38, 39, 52, 52,
+! 53, 43, 44, 45, 46, 47, 60, 26, 26, 26,
+! 155, 29, 157, 55, 56, 26, 58, 26, 60, 14,
+! 29, 126, 14, 14, 130, 131, 21, 26, 134, 135,
+! 21, 0, 31, 52, 14, 14, 14, 14, 144, 57,
+! 26, 60, 148, 149, 14, 221, 14, 153, 57, 225,
+! 155, 26, 157, 158, 26, 161, 138, 52, 132, 133,
+! 52, 52, 26, 58, 146, 147, 58, 58, 26, 151,
+! 152, 26, 52, 52, 52, 52, 210, 26, 58, 58,
+! 58, 58, 52, 217, 52, 26, 26, 263, 58, 29,
+! 58, 33, 34, 51, 52, 53, 202, 203, 204, 205,
+! 206, 207, 51, 52, 53, 33, 34, 26, 26, 26,
+! 29, 29, 29, 247, 5, 6, 222, 57, 223, 224,
+! 4, 195, 196, 257, 40, 41, 42, 209, 51, 211,
+! 40, 41, 42, 221, 216, 241, 218, 225, 57, 57,
+! 57, 14, 248, 234, 235, 236, 237, 238, 230, 231,
+! 3, 51, 258, 199, 200, 8, 14, 10, 11, 12,
+! 13, 243, 244, 19, 25, 18, 61, 33, 34, 26,
+! 252, 253, 254, 255, 26, 263, 26, 30, 26, 26,
+! 26, 287, 26, 3, 50, 51, 52, 26, 8, 295,
+! 10, 11, 12, 13, 26, 26, 26, 26, 18, 52,
+! 26, 307, 26, 26, 26, 58, 61, 60, 59, 15,
+! 30, 15, 61, 15, 7, 321, 61, 59, 300, 9,
+! 15, 59, 59, 15, 7, 307, 4, 26, 15, 311,
+! 312, 59, 52, 15, 59, 15, 318, 319, 58, 321,
+! 60, 59, 26, 325, 326, 15, 59, 329, 330, 15,
+! 1, 333, 3, 15, 59, 15, 59, 8, 59, 10,
+! 11, 12, 13, 217, 9, 16, 17, 18, 320, 281,
+! 241, 22, 23, -1, -1, 26, 27, 28, 29, 30,
+ -1, -1, -1, -1, 35, 36, 37, 38, 39, -1,
+! -1, -1, 43, 44, 45, 46, 47, -1, 49, -1,
+! -1, 52, 53, 3, 55, 56, -1, 58, 8, 60,
+! 10, 11, 12, 13, -1, -1, 16, 17, 18, -1,
+! -1, -1, 22, 23, -1, -1, 26, 27, 28, 29,
+! 30, -1, -1, -1, -1, 35, 36, 37, 38, 39,
+! -1, -1, -1, 43, 44, 45, 46, 47, -1, -1,
+! -1, -1, 52, -1, -1, 55, 56, 3, 58, -1,
+! 60, 61, 8, -1, 10, 11, 12, 13, -1, -1,
+ 16, 17, 18, -1, -1, -1, 22, 23, -1, -1,
+ 26, 27, 28, 29, 30, -1, -1, -1, -1, 35,
+ 36, 37, 38, 39, -1, -1, -1, 43, 44, 45,
+! 46, 47, -1, -1, -1, 51, 52, 53, 3, 55,
+ 56, -1, 58, 8, 60, 10, 11, 12, 13, -1,
+ -1, 16, 17, 18, -1, -1, -1, 22, 23, -1,
+ -1, 26, 27, 28, 29, 30, -1, -1, -1, -1,
+ 35, 36, 37, 38, 39, -1, -1, -1, 43, 44,
+! 45, 46, 47, -1, -1, -1, -1, 52, -1, 3,
+ 55, 56, -1, 58, 8, 60, 10, 11, 12, 13,
+! -1, -1, 16, 17, 18, -1, -1, -1, 22, 23,
+ -1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
+ -1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
+! 44, 45, 46, 47, -1, -1, -1, -1, -1, -1,
+ 3, 55, 56, -1, 58, 8, 60, 10, 11, 12,
+! 13, -1, -1, 16, 17, 18, -1, -1, -1, -1,
+ -1, -1, -1, 26, 27, 28, 29, 30, -1, -1,
+ -1, -1, 35, 36, 37, 38, 39, -1, -1, -1,
+! 43, 44, 45, 46, 47, -1, -1, -1, -1, 52,
+! -1, 3, 55, 56, -1, 58, 8, 60, 10, 11,
+! 12, 13, 26, 27, 28, 29, 18, -1, -1, -1,
+! -1, 35, 36, 37, 38, 39, -1, -1, 30, 43,
+! 44, 45, 46, 47, -1, -1, 28, 29, -1, -1,
+! -1, 55, 56, 35, 36, 37, 38, 39, -1, -1,
+! -1, 43, 44, 45, 46, 47, 58, -1, 60, -1,
+! -1, -1, -1, 55, 56, 35, 36, 37, 38, 39,
+! -1, -1, -1, 43, -1, -1, 46, 47, -1, 35,
+ 36, 37, 38, 39, -1, 55, 56, 43, -1, -1,
+ 46, 47, -1, -1, -1, -1, -1, -1, -1, 55,
+***************
+*** 1401,1434 ****
+ 53, 55, 56, 58, 60, 63, 65, 66, 68, 69,
+ 70, 71, 72, 73, 74, 75, 77, 78, 79, 80,
+! 81, 82, 83, 95, 96, 97, 98, 99, 52, 53,
+! 89, 94, 26, 26, 31, 26, 89, 89, 26, 26,
+! 68, 70, 32, 51, 52, 53, 93, 97, 24, 25,
+! 60, 35, 36, 37, 38, 39, 43, 46, 47, 55,
+! 56, 35, 36, 37, 38, 39, 43, 46, 47, 55,
+! 56, 26, 26, 26, 29, 57, 26, 26, 29, 57,
+! 26, 26, 26, 26, 26, 89, 94, 26, 26, 89,
+! 89, 0, 26, 66, 65, 67, 52, 53, 92, 33,
+! 34, 50, 51, 48, 54, 93, 97, 4, 52, 90,
+! 91, 97, 94, 51, 94, 14, 58, 93, 51, 94,
+! 14, 14, 52, 60, 70, 76, 70, 67, 19, 25,
+! 61, 26, 26, 26, 29, 57, 26, 26, 29, 57,
+! 26, 26, 26, 26, 26, 26, 26, 26, 29, 57,
+! 26, 26, 29, 57, 26, 26, 26, 26, 26, 61,
+! 61, 59, 61, 65, 94, 94, 96, 96, 94, 94,
+! 89, 33, 34, 50, 51, 52, 21, 94, 14, 21,
+! 58, 89, 89, 94, 94, 14, 21, 58, 89, 89,
+! 94, 61, 67, 67, 94, 96, 96, 98, 98, 5,
+! 6, 7, 84, 94, 94, 94, 94, 94, 85, 86,
+! 87, 94, 14, 58, 89, 26, 64, 93, 89, 15,
+! 59, 14, 58, 14, 58, 89, 64, 93, 89, 15,
+! 15, 76, 94, 76, 89, 89, 7, 91, 91, 91,
+! 91, 91, 9, 40, 41, 42, 86, 94, 9, 26,
+! 60, 88, 89, 89, 15, 26, 93, 94, 59, 89,
+! 89, 89, 89, 15, 93, 94, 59, 76, 7, 4,
+! 40, 41, 42, 9, 88, 54, 61, 15, 59, 94,
+! 14, 58, 15, 59, 15, 59, 94, 14, 58, 89,
+! 61, 26, 89, 94, 14, 58, 89, 89, 14, 58,
+! 89, 89, 5, 84, 89, 94, 89, 89, 15, 59,
+! 89, 89, 15, 59, 89, 15, 59, 15, 59
+ };
+
+--- 1401,1434 ----
+ 53, 55, 56, 58, 60, 63, 65, 66, 68, 69,
+ 70, 71, 72, 73, 74, 75, 77, 78, 79, 80,
+! 81, 82, 83, 95, 96, 97, 98, 99, 0, 52,
+! 53, 89, 94, 26, 26, 31, 26, 89, 89, 26,
+! 26, 68, 70, 32, 51, 52, 53, 93, 97, 24,
+! 25, 60, 35, 36, 37, 38, 39, 43, 46, 47,
+! 55, 56, 35, 36, 37, 38, 39, 43, 46, 47,
+! 55, 56, 26, 26, 26, 29, 57, 26, 26, 29,
+! 57, 26, 26, 26, 26, 26, 89, 94, 26, 26,
+! 89, 89, 0, 26, 66, 65, 67, 52, 53, 92,
+! 33, 34, 50, 51, 48, 54, 93, 97, 4, 52,
+! 90, 91, 97, 94, 51, 94, 14, 58, 93, 51,
+! 94, 14, 14, 52, 60, 70, 76, 70, 67, 19,
+! 25, 61, 26, 26, 26, 29, 57, 26, 26, 29,
+! 57, 26, 26, 26, 26, 26, 26, 26, 26, 29,
+! 57, 26, 26, 29, 57, 26, 26, 26, 26, 26,
+! 61, 61, 59, 61, 65, 94, 94, 96, 96, 94,
+! 94, 89, 33, 34, 50, 51, 52, 21, 94, 14,
+! 21, 58, 89, 89, 94, 94, 14, 21, 58, 89,
+! 89, 94, 61, 67, 67, 94, 96, 96, 98, 98,
+! 5, 6, 7, 84, 94, 94, 94, 94, 94, 85,
+! 86, 87, 94, 14, 58, 89, 26, 64, 93, 89,
+! 15, 59, 14, 58, 14, 58, 89, 64, 93, 89,
+! 15, 15, 76, 94, 76, 89, 89, 7, 91, 91,
+! 91, 91, 91, 9, 40, 41, 42, 86, 94, 9,
+! 26, 60, 88, 89, 89, 15, 26, 93, 94, 59,
+! 89, 89, 89, 89, 15, 93, 94, 59, 76, 7,
+! 4, 40, 41, 42, 9, 88, 54, 61, 15, 59,
+! 94, 14, 58, 15, 59, 15, 59, 94, 14, 58,
+! 89, 61, 26, 89, 94, 14, 58, 89, 89, 14,
+! 58, 89, 89, 5, 84, 89, 94, 89, 89, 15,
+! 59, 89, 89, 15, 59, 89, 15, 59, 15, 59
+ };
+
+***************
+*** 1436,1457 ****
+ static const yytype_int8 yyr1[] =
+ {
+! 0, 62, 63, 63, 63, 63, 63, 63, 64, 64,
+! 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+! 65, 65, 65, 65, 66, 66, 66, 67, 67, 68,
+! 68, 69, 69, 69, 69, 69, 70, 70, 70, 70,
+! 70, 70, 70, 70, 70, 70, 70, 71, 71, 71,
+! 71, 71, 71, 71, 71, 72, 72, 72, 72, 73,
+! 73, 73, 73, 73, 73, 73, 73, 74, 74, 74,
+! 75, 75, 75, 75, 76, 76, 77, 78, 78, 79,
+! 79, 79, 79, 79, 80, 80, 80, 81, 82, 83,
+! 84, 84, 84, 85, 85, 86, 86, 86, 86, 87,
+! 87, 87, 87, 87, 87, 88, 88, 89, 89, 90,
+! 90, 90, 91, 91, 91, 91, 91, 91, 92, 92,
+! 93, 93, 93, 94, 94, 95, 95, 95, 96, 96,
+! 96, 96, 96, 97, 97, 97, 97, 97, 98, 98,
+! 98, 99, 99, 99, 99
+ };
+
+--- 1436,1457 ----
+ static const yytype_int8 yyr1[] =
+ {
+! 0, 62, 63, 63, 63, 63, 63, 63, 63, 64,
+! 64, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+! 65, 65, 65, 65, 65, 66, 66, 66, 67, 67,
+! 68, 68, 69, 69, 69, 69, 69, 70, 70, 70,
+! 70, 70, 70, 70, 70, 70, 70, 70, 71, 71,
+! 71, 71, 71, 71, 71, 71, 72, 72, 72, 72,
+! 73, 73, 73, 73, 73, 73, 73, 73, 74, 74,
+! 74, 75, 75, 75, 75, 76, 76, 77, 78, 78,
+! 79, 79, 79, 79, 79, 80, 80, 80, 81, 82,
+! 83, 84, 84, 84, 85, 85, 86, 86, 86, 86,
+! 87, 87, 87, 87, 87, 87, 88, 88, 89, 89,
+! 90, 90, 90, 91, 91, 91, 91, 91, 91, 92,
+! 92, 93, 93, 93, 94, 94, 95, 95, 95, 96,
+! 96, 96, 96, 96, 97, 97, 97, 97, 97, 98,
+! 98, 98, 99, 99, 99, 99
+ };
+
+***************
+*** 1459,1480 ****
+ static const yytype_int8 yyr2[] =
+ {
+! 0, 2, 2, 1, 1, 2, 2, 1, 1, 2,
+! 2, 2, 3, 3, 3, 3, 2, 3, 3, 2,
+ 3, 3, 2, 3, 3, 2, 3, 3, 2, 3,
+ 3, 2, 3, 3, 2, 3, 3, 2, 3, 3,
+! 2, 3, 3, 2, 3, 3, 2, 3, 3, 2,
+! 3, 3, 2, 2, 1, 1, 1, 1, 2, 1,
+! 2, 1, 1, 2, 1, 1, 1, 1, 5, 5,
+! 1, 1, 1, 1, 1, 1, 1, 6, 6, 7,
+! 7, 10, 10, 9, 9, 7, 7, 5, 5, 6,
+! 6, 7, 7, 10, 10, 9, 9, 6, 7, 6,
+! 5, 6, 3, 5, 1, 2, 3, 3, 3, 2,
+! 3, 3, 4, 2, 5, 7, 6, 3, 1, 3,
+! 4, 6, 5, 1, 2, 4, 4, 5, 5, 2,
+! 3, 2, 3, 2, 3, 1, 3, 2, 2, 3,
+! 3, 3, 4, 4, 4, 4, 4, 1, 1, 1,
+! 1, 1, 1, 0, 2, 1, 2, 2, 4, 4,
+! 3, 3, 1, 1, 2, 2, 2, 2, 4, 4,
+! 1, 1, 2, 2, 3
+ };
+
+--- 1459,1480 ----
+ static const yytype_int8 yyr2[] =
+ {
+! 0, 2, 2, 1, 1, 2, 2, 2, 1, 1,
+! 2, 2, 2, 3, 3, 3, 3, 2, 3, 3,
+! 2, 3, 3, 2, 3, 3, 2, 3, 3, 2,
+ 3, 3, 2, 3, 3, 2, 3, 3, 2, 3,
+ 3, 2, 3, 3, 2, 3, 3, 2, 3, 3,
+! 2, 3, 3, 2, 2, 1, 1, 1, 1, 2,
+! 1, 2, 1, 1, 2, 1, 1, 1, 1, 5,
+! 5, 1, 1, 1, 1, 1, 1, 1, 6, 6,
+! 7, 7, 10, 10, 9, 9, 7, 7, 5, 5,
+! 6, 6, 7, 7, 10, 10, 9, 9, 6, 7,
+! 6, 5, 6, 3, 5, 1, 2, 3, 3, 3,
+! 2, 3, 3, 4, 2, 5, 7, 6, 3, 1,
+! 3, 4, 6, 5, 1, 2, 4, 4, 5, 5,
+! 2, 3, 2, 3, 2, 3, 1, 3, 2, 2,
+! 3, 3, 3, 4, 4, 4, 4, 4, 1, 1,
+! 1, 1, 1, 1, 0, 2, 1, 2, 2, 4,
+! 4, 3, 3, 1, 1, 2, 2, 2, 2, 4,
+! 4, 1, 1, 2, 2, 3
+ };
+
+***************
+*** 2019,2025 ****
+ break;
+
+! case 7: /* inputunit: yacc_EOF */
+ #line 456 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ /* Case of EOF seen by itself. Do ignoreeof or
+ not. */
+--- 2019,2044 ----
+ break;
+
+! case 7: /* inputunit: error $end */
+ #line 456 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
++ global_command = (COMMAND *)NULL;
++ if (last_command_exit_value == 0)
++ last_command_exit_value = EX_BADUSAGE; /* force error return */
++ if (interactive && parse_and_execute_level == 0)
++ {
++ handle_eof_input_unit ();
++ YYACCEPT;
++ }
++ else
++ {
++ YYABORT;
++ }
++ }
++ #line 2038 "y.tab.c"
++ break;
++
++ case 8: /* inputunit: yacc_EOF */
++ #line 471 "/usr/local/src/chet/src/bash/src/parse.y"
++ {
+ /* Case of EOF seen by itself. Do ignoreeof or
+ not. */
+***************
+*** 2028,2048 ****
+ YYACCEPT;
+ }
+! #line 2031 "y.tab.c"
+ break;
+
+! case 8: /* word_list: WORD */
+! #line 466 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+! #line 2037 "y.tab.c"
+ break;
+
+! case 9: /* word_list: word_list WORD */
+! #line 468 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
+! #line 2043 "y.tab.c"
+ break;
+
+! case 10: /* redirection: '>' WORD */
+! #line 472 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+--- 2047,2067 ----
+ YYACCEPT;
+ }
+! #line 2050 "y.tab.c"
+ break;
+
+! case 9: /* word_list: WORD */
+! #line 481 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+! #line 2056 "y.tab.c"
+ break;
+
+! case 10: /* word_list: word_list WORD */
+! #line 483 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
+! #line 2062 "y.tab.c"
+ break;
+
+! case 11: /* redirection: '>' WORD */
+! #line 487 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+***************
+*** 2050,2058 ****
+ (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
+ }
+! #line 2053 "y.tab.c"
+ break;
+
+! case 11: /* redirection: '<' WORD */
+! #line 478 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+--- 2069,2077 ----
+ (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
+ }
+! #line 2072 "y.tab.c"
+ break;
+
+! case 12: /* redirection: '<' WORD */
+! #line 493 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+***************
+*** 2060,2068 ****
+ (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
+ }
+! #line 2063 "y.tab.c"
+ break;
+
+! case 12: /* redirection: NUMBER '>' WORD */
+! #line 484 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2079,2087 ----
+ (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
+ }
+! #line 2082 "y.tab.c"
+ break;
+
+! case 13: /* redirection: NUMBER '>' WORD */
+! #line 499 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2070,2078 ****
+ (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
+ }
+! #line 2073 "y.tab.c"
+ break;
+
+! case 13: /* redirection: NUMBER '<' WORD */
+! #line 490 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2089,2097 ----
+ (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
+ }
+! #line 2092 "y.tab.c"
+ break;
+
+! case 14: /* redirection: NUMBER '<' WORD */
+! #line 505 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2080,2088 ****
+ (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
+ }
+! #line 2083 "y.tab.c"
+ break;
+
+! case 14: /* redirection: REDIR_WORD '>' WORD */
+! #line 496 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2099,2107 ----
+ (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
+ }
+! #line 2102 "y.tab.c"
+ break;
+
+! case 15: /* redirection: REDIR_WORD '>' WORD */
+! #line 511 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2090,2098 ****
+ (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
+ }
+! #line 2093 "y.tab.c"
+ break;
+
+! case 15: /* redirection: REDIR_WORD '<' WORD */
+! #line 502 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2109,2117 ----
+ (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
+ }
+! #line 2112 "y.tab.c"
+ break;
+
+! case 16: /* redirection: REDIR_WORD '<' WORD */
+! #line 517 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2100,2108 ****
+ (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
+ }
+! #line 2103 "y.tab.c"
+ break;
+
+! case 16: /* redirection: GREATER_GREATER WORD */
+! #line 508 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+--- 2119,2127 ----
+ (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
+ }
+! #line 2122 "y.tab.c"
+ break;
+
+! case 17: /* redirection: GREATER_GREATER WORD */
+! #line 523 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+***************
+*** 2110,2118 ****
+ (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
+ }
+! #line 2113 "y.tab.c"
+ break;
+
+! case 17: /* redirection: NUMBER GREATER_GREATER WORD */
+! #line 514 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2129,2137 ----
+ (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
+ }
+! #line 2132 "y.tab.c"
+ break;
+
+! case 18: /* redirection: NUMBER GREATER_GREATER WORD */
+! #line 529 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2120,2128 ****
+ (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
+ }
+! #line 2123 "y.tab.c"
+ break;
+
+! case 18: /* redirection: REDIR_WORD GREATER_GREATER WORD */
+! #line 520 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2139,2147 ----
+ (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
+ }
+! #line 2142 "y.tab.c"
+ break;
+
+! case 19: /* redirection: REDIR_WORD GREATER_GREATER WORD */
+! #line 535 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2130,2138 ****
+ (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
+ }
+! #line 2133 "y.tab.c"
+ break;
+
+! case 19: /* redirection: GREATER_BAR WORD */
+! #line 526 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+--- 2149,2157 ----
+ (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
+ }
+! #line 2152 "y.tab.c"
+ break;
+
+! case 20: /* redirection: GREATER_BAR WORD */
+! #line 541 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+***************
+*** 2140,2148 ****
+ (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
+ }
+! #line 2143 "y.tab.c"
+ break;
+
+! case 20: /* redirection: NUMBER GREATER_BAR WORD */
+! #line 532 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2159,2167 ----
+ (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
+ }
+! #line 2162 "y.tab.c"
+ break;
+
+! case 21: /* redirection: NUMBER GREATER_BAR WORD */
+! #line 547 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2150,2158 ****
+ (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
+ }
+! #line 2153 "y.tab.c"
+ break;
+
+! case 21: /* redirection: REDIR_WORD GREATER_BAR WORD */
+! #line 538 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2169,2177 ----
+ (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
+ }
+! #line 2172 "y.tab.c"
+ break;
+
+! case 22: /* redirection: REDIR_WORD GREATER_BAR WORD */
+! #line 553 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2160,2168 ****
+ (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
+ }
+! #line 2163 "y.tab.c"
+ break;
+
+! case 22: /* redirection: LESS_GREATER WORD */
+! #line 544 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+--- 2179,2187 ----
+ (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
+ }
+! #line 2182 "y.tab.c"
+ break;
+
+! case 23: /* redirection: LESS_GREATER WORD */
+! #line 559 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+***************
+*** 2170,2178 ****
+ (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
+ }
+! #line 2173 "y.tab.c"
+ break;
+
+! case 23: /* redirection: NUMBER LESS_GREATER WORD */
+! #line 550 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2189,2197 ----
+ (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
+ }
+! #line 2192 "y.tab.c"
+ break;
+
+! case 24: /* redirection: NUMBER LESS_GREATER WORD */
+! #line 565 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2180,2188 ****
+ (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
+ }
+! #line 2183 "y.tab.c"
+ break;
+
+! case 24: /* redirection: REDIR_WORD LESS_GREATER WORD */
+! #line 556 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2199,2207 ----
+ (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
+ }
+! #line 2202 "y.tab.c"
+ break;
+
+! case 25: /* redirection: REDIR_WORD LESS_GREATER WORD */
+! #line 571 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2190,2198 ****
+ (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
+ }
+! #line 2193 "y.tab.c"
+ break;
+
+! case 25: /* redirection: LESS_LESS WORD */
+! #line 562 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+--- 2209,2217 ----
+ (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
+ }
+! #line 2212 "y.tab.c"
+ break;
+
+! case 26: /* redirection: LESS_LESS WORD */
+! #line 577 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+***************
+*** 2201,2209 ****
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2204 "y.tab.c"
+ break;
+
+! case 26: /* redirection: NUMBER LESS_LESS WORD */
+! #line 569 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2220,2228 ----
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2223 "y.tab.c"
+ break;
+
+! case 27: /* redirection: NUMBER LESS_LESS WORD */
+! #line 584 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2212,2220 ****
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2215 "y.tab.c"
+ break;
+
+! case 27: /* redirection: REDIR_WORD LESS_LESS WORD */
+! #line 576 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2231,2239 ----
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2234 "y.tab.c"
+ break;
+
+! case 28: /* redirection: REDIR_WORD LESS_LESS WORD */
+! #line 591 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2223,2231 ****
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2226 "y.tab.c"
+ break;
+
+! case 28: /* redirection: LESS_LESS_MINUS WORD */
+! #line 583 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+--- 2242,2250 ----
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2245 "y.tab.c"
+ break;
+
+! case 29: /* redirection: LESS_LESS_MINUS WORD */
+! #line 598 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+***************
+*** 2234,2242 ****
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2237 "y.tab.c"
+ break;
+
+! case 29: /* redirection: NUMBER LESS_LESS_MINUS WORD */
+! #line 590 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2253,2261 ----
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2256 "y.tab.c"
+ break;
+
+! case 30: /* redirection: NUMBER LESS_LESS_MINUS WORD */
+! #line 605 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2245,2253 ****
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2248 "y.tab.c"
+ break;
+
+! case 30: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */
+! #line 597 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2264,2272 ----
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2267 "y.tab.c"
+ break;
+
+! case 31: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */
+! #line 612 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2256,2264 ****
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2259 "y.tab.c"
+ break;
+
+! case 31: /* redirection: LESS_LESS_LESS WORD */
+! #line 604 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+--- 2275,2283 ----
+ push_heredoc ((yyval.redirect));
+ }
+! #line 2278 "y.tab.c"
+ break;
+
+! case 32: /* redirection: LESS_LESS_LESS WORD */
+! #line 619 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+***************
+*** 2266,2274 ****
+ (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
+ }
+! #line 2269 "y.tab.c"
+ break;
+
+! case 32: /* redirection: NUMBER LESS_LESS_LESS WORD */
+! #line 610 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2285,2293 ----
+ (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
+ }
+! #line 2288 "y.tab.c"
+ break;
+
+! case 33: /* redirection: NUMBER LESS_LESS_LESS WORD */
+! #line 625 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2276,2284 ****
+ (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
+ }
+! #line 2279 "y.tab.c"
+ break;
+
+! case 33: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */
+! #line 616 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2295,2303 ----
+ (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
+ }
+! #line 2298 "y.tab.c"
+ break;
+
+! case 34: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */
+! #line 631 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2286,2294 ****
+ (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
+ }
+! #line 2289 "y.tab.c"
+ break;
+
+! case 34: /* redirection: LESS_AND NUMBER */
+! #line 622 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+--- 2305,2313 ----
+ (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
+ }
+! #line 2308 "y.tab.c"
+ break;
+
+! case 35: /* redirection: LESS_AND NUMBER */
+! #line 637 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+***************
+*** 2296,2304 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
+ }
+! #line 2299 "y.tab.c"
+ break;
+
+! case 35: /* redirection: NUMBER LESS_AND NUMBER */
+! #line 628 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2315,2323 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
+ }
+! #line 2318 "y.tab.c"
+ break;
+
+! case 36: /* redirection: NUMBER LESS_AND NUMBER */
+! #line 643 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2306,2314 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
+ }
+! #line 2309 "y.tab.c"
+ break;
+
+! case 36: /* redirection: REDIR_WORD LESS_AND NUMBER */
+! #line 634 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2325,2333 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
+ }
+! #line 2328 "y.tab.c"
+ break;
+
+! case 37: /* redirection: REDIR_WORD LESS_AND NUMBER */
+! #line 649 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2316,2324 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
+ }
+! #line 2319 "y.tab.c"
+ break;
+
+! case 37: /* redirection: GREATER_AND NUMBER */
+! #line 640 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+--- 2335,2343 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
+ }
+! #line 2338 "y.tab.c"
+ break;
+
+! case 38: /* redirection: GREATER_AND NUMBER */
+! #line 655 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+***************
+*** 2326,2334 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
+ }
+! #line 2329 "y.tab.c"
+ break;
+
+! case 38: /* redirection: NUMBER GREATER_AND NUMBER */
+! #line 646 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2345,2353 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
+ }
+! #line 2348 "y.tab.c"
+ break;
+
+! case 39: /* redirection: NUMBER GREATER_AND NUMBER */
+! #line 661 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2336,2344 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
+ }
+! #line 2339 "y.tab.c"
+ break;
+
+! case 39: /* redirection: REDIR_WORD GREATER_AND NUMBER */
+! #line 652 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2355,2363 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
+ }
+! #line 2358 "y.tab.c"
+ break;
+
+! case 40: /* redirection: REDIR_WORD GREATER_AND NUMBER */
+! #line 667 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2346,2354 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
+ }
+! #line 2349 "y.tab.c"
+ break;
+
+! case 40: /* redirection: LESS_AND WORD */
+! #line 658 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+--- 2365,2373 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
+ }
+! #line 2368 "y.tab.c"
+ break;
+
+! case 41: /* redirection: LESS_AND WORD */
+! #line 673 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+***************
+*** 2356,2364 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
+ }
+! #line 2359 "y.tab.c"
+ break;
+
+! case 41: /* redirection: NUMBER LESS_AND WORD */
+! #line 664 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2375,2383 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
+ }
+! #line 2378 "y.tab.c"
+ break;
+
+! case 42: /* redirection: NUMBER LESS_AND WORD */
+! #line 679 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2366,2374 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
+ }
+! #line 2369 "y.tab.c"
+ break;
+
+! case 42: /* redirection: REDIR_WORD LESS_AND WORD */
+! #line 670 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2385,2393 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
+ }
+! #line 2388 "y.tab.c"
+ break;
+
+! case 43: /* redirection: REDIR_WORD LESS_AND WORD */
+! #line 685 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2376,2384 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
+ }
+! #line 2379 "y.tab.c"
+ break;
+
+! case 43: /* redirection: GREATER_AND WORD */
+! #line 676 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+--- 2395,2403 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
+ }
+! #line 2398 "y.tab.c"
+ break;
+
+! case 44: /* redirection: GREATER_AND WORD */
+! #line 691 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+***************
+*** 2386,2394 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
+ }
+! #line 2389 "y.tab.c"
+ break;
+
+! case 44: /* redirection: NUMBER GREATER_AND WORD */
+! #line 682 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2405,2413 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
+ }
+! #line 2408 "y.tab.c"
+ break;
+
+! case 45: /* redirection: NUMBER GREATER_AND WORD */
+! #line 697 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2396,2404 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
+ }
+! #line 2399 "y.tab.c"
+ break;
+
+! case 45: /* redirection: REDIR_WORD GREATER_AND WORD */
+! #line 688 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2415,2423 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
+ }
+! #line 2418 "y.tab.c"
+ break;
+
+! case 46: /* redirection: REDIR_WORD GREATER_AND WORD */
+! #line 703 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2406,2414 ****
+ (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
+ }
+! #line 2409 "y.tab.c"
+ break;
+
+! case 46: /* redirection: GREATER_AND '-' */
+! #line 694 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+--- 2425,2433 ----
+ (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
+ }
+! #line 2428 "y.tab.c"
+ break;
+
+! case 47: /* redirection: GREATER_AND '-' */
+! #line 709 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+***************
+*** 2416,2424 ****
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
+ }
+! #line 2419 "y.tab.c"
+ break;
+
+! case 47: /* redirection: NUMBER GREATER_AND '-' */
+! #line 700 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2435,2443 ----
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
+ }
+! #line 2438 "y.tab.c"
+ break;
+
+! case 48: /* redirection: NUMBER GREATER_AND '-' */
+! #line 715 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2426,2434 ****
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
+ }
+! #line 2429 "y.tab.c"
+ break;
+
+! case 48: /* redirection: REDIR_WORD GREATER_AND '-' */
+! #line 706 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2445,2453 ----
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
+ }
+! #line 2448 "y.tab.c"
+ break;
+
+! case 49: /* redirection: REDIR_WORD GREATER_AND '-' */
+! #line 721 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2436,2444 ****
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
+ }
+! #line 2439 "y.tab.c"
+ break;
+
+! case 49: /* redirection: LESS_AND '-' */
+! #line 712 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+--- 2455,2463 ----
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
+ }
+! #line 2458 "y.tab.c"
+ break;
+
+! case 50: /* redirection: LESS_AND '-' */
+! #line 727 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 0;
+***************
+*** 2446,2454 ****
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
+ }
+! #line 2449 "y.tab.c"
+ break;
+
+! case 50: /* redirection: NUMBER LESS_AND '-' */
+! #line 718 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+--- 2465,2473 ----
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
+ }
+! #line 2468 "y.tab.c"
+ break;
+
+! case 51: /* redirection: NUMBER LESS_AND '-' */
+! #line 733 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = (yyvsp[-2].number);
+***************
+*** 2456,2464 ****
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
+ }
+! #line 2459 "y.tab.c"
+ break;
+
+! case 51: /* redirection: REDIR_WORD LESS_AND '-' */
+! #line 724 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+--- 2475,2483 ----
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
+ }
+! #line 2478 "y.tab.c"
+ break;
+
+! case 52: /* redirection: REDIR_WORD LESS_AND '-' */
+! #line 739 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.filename = (yyvsp[-2].word);
+***************
+*** 2466,2474 ****
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
+ }
+! #line 2469 "y.tab.c"
+ break;
+
+! case 52: /* redirection: AND_GREATER WORD */
+! #line 730 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+--- 2485,2493 ----
+ (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
+ }
+! #line 2488 "y.tab.c"
+ break;
+
+! case 53: /* redirection: AND_GREATER WORD */
+! #line 745 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+***************
+*** 2476,2484 ****
+ (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
+ }
+! #line 2479 "y.tab.c"
+ break;
+
+! case 53: /* redirection: AND_GREATER_GREATER WORD */
+! #line 736 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+--- 2495,2503 ----
+ (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
+ }
+! #line 2498 "y.tab.c"
+ break;
+
+! case 54: /* redirection: AND_GREATER_GREATER WORD */
+! #line 751 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ source.dest = 1;
+***************
+*** 2486,2520 ****
+ (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
+ }
+! #line 2489 "y.tab.c"
+ break;
+
+! case 54: /* simple_command_element: WORD */
+! #line 744 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+! #line 2495 "y.tab.c"
+ break;
+
+! case 55: /* simple_command_element: ASSIGNMENT_WORD */
+! #line 746 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+! #line 2501 "y.tab.c"
+ break;
+
+! case 56: /* simple_command_element: redirection */
+! #line 748 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
+! #line 2507 "y.tab.c"
+ break;
+
+! case 57: /* redirection_list: redirection */
+! #line 752 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.redirect) = (yyvsp[0].redirect);
+ }
+! #line 2515 "y.tab.c"
+ break;
+
+! case 58: /* redirection_list: redirection_list redirection */
+! #line 756 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ register REDIRECT *t;
+--- 2505,2539 ----
+ (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
+ }
+! #line 2508 "y.tab.c"
+ break;
+
+! case 55: /* simple_command_element: WORD */
+! #line 759 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+! #line 2514 "y.tab.c"
+ break;
+
+! case 56: /* simple_command_element: ASSIGNMENT_WORD */
+! #line 761 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+! #line 2520 "y.tab.c"
+ break;
+
+! case 57: /* simple_command_element: redirection */
+! #line 763 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
+! #line 2526 "y.tab.c"
+ break;
+
+! case 58: /* redirection_list: redirection */
+! #line 767 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.redirect) = (yyvsp[0].redirect);
+ }
+! #line 2534 "y.tab.c"
+ break;
+
+! case 59: /* redirection_list: redirection_list redirection */
+! #line 771 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ register REDIRECT *t;
+***************
+*** 2525,2557 ****
+ (yyval.redirect) = (yyvsp[-1].redirect);
+ }
+! #line 2528 "y.tab.c"
+ break;
+
+! case 59: /* simple_command: simple_command_element */
+! #line 767 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
+! #line 2534 "y.tab.c"
+ break;
+
+! case 60: /* simple_command: simple_command simple_command_element */
+! #line 769 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
+! #line 2540 "y.tab.c"
+ break;
+
+! case 61: /* command: simple_command */
+! #line 773 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
+! #line 2546 "y.tab.c"
+ break;
+
+! case 62: /* command: shell_command */
+! #line 775 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2552 "y.tab.c"
+ break;
+
+! case 63: /* command: shell_command redirection_list */
+! #line 777 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ COMMAND *tc;
+--- 2544,2576 ----
+ (yyval.redirect) = (yyvsp[-1].redirect);
+ }
+! #line 2547 "y.tab.c"
+ break;
+
+! case 60: /* simple_command: simple_command_element */
+! #line 782 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
+! #line 2553 "y.tab.c"
+ break;
+
+! case 61: /* simple_command: simple_command simple_command_element */
+! #line 784 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
+! #line 2559 "y.tab.c"
+ break;
+
+! case 62: /* command: simple_command */
+! #line 788 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
+! #line 2565 "y.tab.c"
+ break;
+
+! case 63: /* command: shell_command */
+! #line 790 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2571 "y.tab.c"
+ break;
+
+! case 64: /* command: shell_command redirection_list */
+! #line 792 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ COMMAND *tc;
+***************
+*** 2569,2727 ****
+ (yyval.command) = (yyvsp[-1].command);
+ }
+! #line 2572 "y.tab.c"
+ break;
+
+! case 64: /* command: function_def */
+! #line 793 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2578 "y.tab.c"
+ break;
+
+! case 65: /* command: coproc */
+! #line 795 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2584 "y.tab.c"
+ break;
+
+! case 66: /* shell_command: for_command */
+! #line 799 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2590 "y.tab.c"
+ break;
+
+! case 67: /* shell_command: case_command */
+! #line 801 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2596 "y.tab.c"
+ break;
+
+! case 68: /* shell_command: WHILE compound_list DO compound_list DONE */
+! #line 803 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 2602 "y.tab.c"
+ break;
+
+! case 69: /* shell_command: UNTIL compound_list DO compound_list DONE */
+! #line 805 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 2608 "y.tab.c"
+ break;
+
+! case 70: /* shell_command: select_command */
+! #line 807 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2614 "y.tab.c"
+ break;
+
+! case 71: /* shell_command: if_command */
+! #line 809 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2620 "y.tab.c"
+ break;
+
+! case 72: /* shell_command: subshell */
+! #line 811 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2626 "y.tab.c"
+ break;
+
+! case 73: /* shell_command: group_command */
+! #line 813 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2632 "y.tab.c"
+ break;
+
+! case 74: /* shell_command: arith_command */
+! #line 815 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2638 "y.tab.c"
+ break;
+
+! case 75: /* shell_command: cond_command */
+! #line 817 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2644 "y.tab.c"
+ break;
+
+! case 76: /* shell_command: arith_for_command */
+! #line 819 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2650 "y.tab.c"
+ break;
+
+! case 77: /* for_command: FOR WORD newline_list DO compound_list DONE */
+! #line 823 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2659 "y.tab.c"
+ break;
+
+! case 78: /* for_command: FOR WORD newline_list '{' compound_list '}' */
+! #line 828 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2668 "y.tab.c"
+ break;
+
+! case 79: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */
+! #line 833 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2677 "y.tab.c"
+ break;
+
+! case 80: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */
+! #line 838 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2686 "y.tab.c"
+ break;
+
+! case 81: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
+! #line 843 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2695 "y.tab.c"
+ break;
+
+! case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
+! #line 848 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2704 "y.tab.c"
+ break;
+
+! case 83: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */
+! #line 853 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2713 "y.tab.c"
+ break;
+
+! case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
+! #line 858 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2722 "y.tab.c"
+ break;
+
+! case 85: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */
+! #line 865 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+--- 2588,2746 ----
+ (yyval.command) = (yyvsp[-1].command);
+ }
+! #line 2591 "y.tab.c"
+ break;
+
+! case 65: /* command: function_def */
+! #line 808 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2597 "y.tab.c"
+ break;
+
+! case 66: /* command: coproc */
+! #line 810 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2603 "y.tab.c"
+ break;
+
+! case 67: /* shell_command: for_command */
+! #line 814 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2609 "y.tab.c"
+ break;
+
+! case 68: /* shell_command: case_command */
+! #line 816 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2615 "y.tab.c"
+ break;
+
+! case 69: /* shell_command: WHILE compound_list DO compound_list DONE */
+! #line 818 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 2621 "y.tab.c"
+ break;
+
+! case 70: /* shell_command: UNTIL compound_list DO compound_list DONE */
+! #line 820 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 2627 "y.tab.c"
+ break;
+
+! case 71: /* shell_command: select_command */
+! #line 822 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2633 "y.tab.c"
+ break;
+
+! case 72: /* shell_command: if_command */
+! #line 824 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2639 "y.tab.c"
+ break;
+
+! case 73: /* shell_command: subshell */
+! #line 826 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2645 "y.tab.c"
+ break;
+
+! case 74: /* shell_command: group_command */
+! #line 828 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2651 "y.tab.c"
+ break;
+
+! case 75: /* shell_command: arith_command */
+! #line 830 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2657 "y.tab.c"
+ break;
+
+! case 76: /* shell_command: cond_command */
+! #line 832 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2663 "y.tab.c"
+ break;
+
+! case 77: /* shell_command: arith_for_command */
+! #line 834 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2669 "y.tab.c"
+ break;
+
+! case 78: /* for_command: FOR WORD newline_list DO compound_list DONE */
+! #line 838 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2678 "y.tab.c"
+ break;
+
+! case 79: /* for_command: FOR WORD newline_list '{' compound_list '}' */
+! #line 843 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2687 "y.tab.c"
+ break;
+
+! case 80: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */
+! #line 848 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2696 "y.tab.c"
+ break;
+
+! case 81: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */
+! #line 853 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2705 "y.tab.c"
+ break;
+
+! case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
+! #line 858 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2714 "y.tab.c"
+ break;
+
+! case 83: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
+! #line 863 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2723 "y.tab.c"
+ break;
+
+! case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */
+! #line 868 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2732 "y.tab.c"
+ break;
+
+! case 85: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
+! #line 873 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2741 "y.tab.c"
+ break;
+
+! case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */
+! #line 880 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+***************
+*** 2729,2737 ****
+ if (word_top > 0) word_top--;
+ }
+! #line 2732 "y.tab.c"
+ break;
+
+! case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */
+! #line 871 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+--- 2748,2756 ----
+ if (word_top > 0) word_top--;
+ }
+! #line 2751 "y.tab.c"
+ break;
+
+! case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */
+! #line 886 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+***************
+*** 2739,2747 ****
+ if (word_top > 0) word_top--;
+ }
+! #line 2742 "y.tab.c"
+ break;
+
+! case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */
+! #line 877 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+--- 2758,2766 ----
+ if (word_top > 0) word_top--;
+ }
+! #line 2761 "y.tab.c"
+ break;
+
+! case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */
+! #line 892 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+***************
+*** 2749,2757 ****
+ if (word_top > 0) word_top--;
+ }
+! #line 2752 "y.tab.c"
+ break;
+
+! case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */
+! #line 883 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+--- 2768,2776 ----
+ if (word_top > 0) word_top--;
+ }
+! #line 2771 "y.tab.c"
+ break;
+
+! case 89: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */
+! #line 898 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+***************
+*** 2759,2896 ****
+ if (word_top > 0) word_top--;
+ }
+! #line 2762 "y.tab.c"
+ break;
+
+! case 89: /* select_command: SELECT WORD newline_list DO compound_list DONE */
+! #line 891 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2771 "y.tab.c"
+ break;
+
+! case 90: /* select_command: SELECT WORD newline_list '{' compound_list '}' */
+! #line 896 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2780 "y.tab.c"
+ break;
+
+! case 91: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */
+! #line 901 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2789 "y.tab.c"
+ break;
+
+! case 92: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */
+! #line 906 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2798 "y.tab.c"
+ break;
+
+! case 93: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
+! #line 911 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2807 "y.tab.c"
+ break;
+
+! case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
+! #line 916 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2816 "y.tab.c"
+ break;
+
+! case 95: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */
+! #line 921 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2825 "y.tab.c"
+ break;
+
+! case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
+! #line 926 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2834 "y.tab.c"
+ break;
+
+! case 97: /* case_command: CASE WORD newline_list IN newline_list ESAC */
+! #line 933 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2843 "y.tab.c"
+ break;
+
+! case 98: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */
+! #line 938 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2852 "y.tab.c"
+ break;
+
+! case 99: /* case_command: CASE WORD newline_list IN case_clause ESAC */
+! #line 943 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2861 "y.tab.c"
+ break;
+
+! case 100: /* function_def: WORD '(' ')' newline_list function_body */
+! #line 950 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2867 "y.tab.c"
+ break;
+
+! case 101: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */
+! #line 952 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2873 "y.tab.c"
+ break;
+
+! case 102: /* function_def: FUNCTION WORD function_body */
+! #line 954 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2879 "y.tab.c"
+ break;
+
+! case 103: /* function_def: FUNCTION WORD '\n' newline_list function_body */
+! #line 956 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2885 "y.tab.c"
+ break;
+
+! case 104: /* function_body: shell_command */
+! #line 960 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2891 "y.tab.c"
+ break;
+
+! case 105: /* function_body: shell_command redirection_list */
+! #line 962 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ COMMAND *tc;
+--- 2778,2915 ----
+ if (word_top > 0) word_top--;
+ }
+! #line 2781 "y.tab.c"
+ break;
+
+! case 90: /* select_command: SELECT WORD newline_list DO compound_list DONE */
+! #line 906 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2790 "y.tab.c"
+ break;
+
+! case 91: /* select_command: SELECT WORD newline_list '{' compound_list '}' */
+! #line 911 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2799 "y.tab.c"
+ break;
+
+! case 92: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */
+! #line 916 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2808 "y.tab.c"
+ break;
+
+! case 93: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */
+! #line 921 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2817 "y.tab.c"
+ break;
+
+! case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
+! #line 926 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2826 "y.tab.c"
+ break;
+
+! case 95: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
+! #line 931 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2835 "y.tab.c"
+ break;
+
+! case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */
+! #line 936 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2844 "y.tab.c"
+ break;
+
+! case 97: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
+! #line 941 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2853 "y.tab.c"
+ break;
+
+! case 98: /* case_command: CASE WORD newline_list IN newline_list ESAC */
+! #line 948 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2862 "y.tab.c"
+ break;
+
+! case 99: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */
+! #line 953 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2871 "y.tab.c"
+ break;
+
+! case 100: /* case_command: CASE WORD newline_list IN case_clause ESAC */
+! #line 958 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
+ if (word_top > 0) word_top--;
+ }
+! #line 2880 "y.tab.c"
+ break;
+
+! case 101: /* function_def: WORD '(' ')' newline_list function_body */
+! #line 965 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2886 "y.tab.c"
+ break;
+
+! case 102: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */
+! #line 967 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2892 "y.tab.c"
+ break;
+
+! case 103: /* function_def: FUNCTION WORD function_body */
+! #line 969 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2898 "y.tab.c"
+ break;
+
+! case 104: /* function_def: FUNCTION WORD '\n' newline_list function_body */
+! #line 971 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
+! #line 2904 "y.tab.c"
+ break;
+
+! case 105: /* function_body: shell_command */
+! #line 975 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 2910 "y.tab.c"
+ break;
+
+! case 106: /* function_body: shell_command redirection_list */
+! #line 977 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ COMMAND *tc;
+***************
+*** 2921,2963 ****
+ (yyval.command) = (yyvsp[-1].command);
+ }
+! #line 2924 "y.tab.c"
+ break;
+
+! case 106: /* subshell: '(' compound_list ')' */
+! #line 993 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_subshell_command ((yyvsp[-1].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL;
+ }
+! #line 2933 "y.tab.c"
+ break;
+
+! case 107: /* comsub: DOLPAREN compound_list ')' */
+! #line 1000 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[-1].command);
+ }
+! #line 2941 "y.tab.c"
+ break;
+
+! case 108: /* comsub: DOLPAREN newline_list ')' */
+! #line 1004 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (COMMAND *)NULL;
+ }
+! #line 2949 "y.tab.c"
+ break;
+
+! case 109: /* coproc: COPROC shell_command */
+! #line 1010 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 2958 "y.tab.c"
+ break;
+
+! case 110: /* coproc: COPROC shell_command redirection_list */
+! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ COMMAND *tc;
+--- 2940,2982 ----
+ (yyval.command) = (yyvsp[-1].command);
+ }
+! #line 2943 "y.tab.c"
+ break;
+
+! case 107: /* subshell: '(' compound_list ')' */
+! #line 1008 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_subshell_command ((yyvsp[-1].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL;
+ }
+! #line 2952 "y.tab.c"
+ break;
+
+! case 108: /* comsub: DOLPAREN compound_list ')' */
+! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[-1].command);
+ }
+! #line 2960 "y.tab.c"
+ break;
+
+! case 109: /* comsub: DOLPAREN newline_list ')' */
+! #line 1019 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (COMMAND *)NULL;
+ }
+! #line 2968 "y.tab.c"
+ break;
+
+! case 110: /* coproc: COPROC shell_command */
+! #line 1025 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 2977 "y.tab.c"
+ break;
+
+! case 111: /* coproc: COPROC shell_command redirection_list */
+! #line 1030 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ COMMAND *tc;
+***************
+*** 2976,2993 ****
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 2979 "y.tab.c"
+ break;
+
+! case 111: /* coproc: COPROC WORD shell_command */
+! #line 1032 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 2988 "y.tab.c"
+ break;
+
+! case 112: /* coproc: COPROC WORD shell_command redirection_list */
+! #line 1037 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ COMMAND *tc;
+--- 2995,3012 ----
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 2998 "y.tab.c"
+ break;
+
+! case 112: /* coproc: COPROC WORD shell_command */
+! #line 1047 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 3007 "y.tab.c"
+ break;
+
+! case 113: /* coproc: COPROC WORD shell_command redirection_list */
+! #line 1052 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ COMMAND *tc;
+***************
+*** 3006,3155 ****
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 3009 "y.tab.c"
+ break;
+
+! case 113: /* coproc: COPROC simple_command */
+! #line 1054 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 3018 "y.tab.c"
+ break;
+
+! case 114: /* if_command: IF compound_list THEN compound_list FI */
+! #line 1061 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
+! #line 3024 "y.tab.c"
+ break;
+
+! case 115: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */
+! #line 1063 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 3030 "y.tab.c"
+ break;
+
+! case 116: /* if_command: IF compound_list THEN compound_list elif_clause FI */
+! #line 1065 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
+! #line 3036 "y.tab.c"
+ break;
+
+! case 117: /* group_command: '{' compound_list '}' */
+! #line 1070 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
+! #line 3042 "y.tab.c"
+ break;
+
+! case 118: /* arith_command: ARITH_CMD */
+! #line 1074 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
+! #line 3048 "y.tab.c"
+ break;
+
+! case 119: /* cond_command: COND_START COND_CMD COND_END */
+! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[-1].command); }
+! #line 3054 "y.tab.c"
+ break;
+
+! case 120: /* elif_clause: ELIF compound_list THEN compound_list */
+! #line 1082 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
+! #line 3060 "y.tab.c"
+ break;
+
+! case 121: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */
+! #line 1084 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
+! #line 3066 "y.tab.c"
+ break;
+
+! case 122: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */
+! #line 1086 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
+! #line 3072 "y.tab.c"
+ break;
+
+! case 124: /* case_clause: case_clause_sequence pattern_list */
+! #line 1091 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
+! #line 3078 "y.tab.c"
+ break;
+
+! case 125: /* pattern_list: newline_list pattern ')' compound_list */
+! #line 1095 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+! #line 3084 "y.tab.c"
+ break;
+
+! case 126: /* pattern_list: newline_list pattern ')' newline_list */
+! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+! #line 3090 "y.tab.c"
+ break;
+
+! case 127: /* pattern_list: newline_list '(' pattern ')' compound_list */
+! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+! #line 3096 "y.tab.c"
+ break;
+
+! case 128: /* pattern_list: newline_list '(' pattern ')' newline_list */
+! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+! #line 3102 "y.tab.c"
+ break;
+
+! case 129: /* case_clause_sequence: pattern_list SEMI_SEMI */
+! #line 1105 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3108 "y.tab.c"
+ break;
+
+! case 130: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */
+! #line 1107 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3114 "y.tab.c"
+ break;
+
+! case 131: /* case_clause_sequence: pattern_list SEMI_AND */
+! #line 1109 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3120 "y.tab.c"
+ break;
+
+! case 132: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */
+! #line 1111 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3126 "y.tab.c"
+ break;
+
+! case 133: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */
+! #line 1113 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3132 "y.tab.c"
+ break;
+
+! case 134: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */
+! #line 1115 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3138 "y.tab.c"
+ break;
+
+! case 135: /* pattern: WORD */
+! #line 1119 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+! #line 3144 "y.tab.c"
+ break;
+
+! case 136: /* pattern: pattern '|' WORD */
+! #line 1121 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
+! #line 3150 "y.tab.c"
+ break;
+
+! case 137: /* compound_list: newline_list list0 */
+! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[0].command);
+--- 3025,3174 ----
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 3028 "y.tab.c"
+ break;
+
+! case 114: /* coproc: COPROC simple_command */
+! #line 1069 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
+ (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
+ }
+! #line 3037 "y.tab.c"
+ break;
+
+! case 115: /* if_command: IF compound_list THEN compound_list FI */
+! #line 1076 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
+! #line 3043 "y.tab.c"
+ break;
+
+! case 116: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */
+! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
+! #line 3049 "y.tab.c"
+ break;
+
+! case 117: /* if_command: IF compound_list THEN compound_list elif_clause FI */
+! #line 1080 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
+! #line 3055 "y.tab.c"
+ break;
+
+! case 118: /* group_command: '{' compound_list '}' */
+! #line 1085 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
+! #line 3061 "y.tab.c"
+ break;
+
+! case 119: /* arith_command: ARITH_CMD */
+! #line 1089 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
+! #line 3067 "y.tab.c"
+ break;
+
+! case 120: /* cond_command: COND_START COND_CMD COND_END */
+! #line 1093 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[-1].command); }
+! #line 3073 "y.tab.c"
+ break;
+
+! case 121: /* elif_clause: ELIF compound_list THEN compound_list */
+! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
+! #line 3079 "y.tab.c"
+ break;
+
+! case 122: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */
+! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
+! #line 3085 "y.tab.c"
+ break;
+
+! case 123: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */
+! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
+! #line 3091 "y.tab.c"
+ break;
+
+! case 125: /* case_clause: case_clause_sequence pattern_list */
+! #line 1106 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
+! #line 3097 "y.tab.c"
+ break;
+
+! case 126: /* pattern_list: newline_list pattern ')' compound_list */
+! #line 1110 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+! #line 3103 "y.tab.c"
+ break;
+
+! case 127: /* pattern_list: newline_list pattern ')' newline_list */
+! #line 1112 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+! #line 3109 "y.tab.c"
+ break;
+
+! case 128: /* pattern_list: newline_list '(' pattern ')' compound_list */
+! #line 1114 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+! #line 3115 "y.tab.c"
+ break;
+
+! case 129: /* pattern_list: newline_list '(' pattern ')' newline_list */
+! #line 1116 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+! #line 3121 "y.tab.c"
+ break;
+
+! case 130: /* case_clause_sequence: pattern_list SEMI_SEMI */
+! #line 1120 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3127 "y.tab.c"
+ break;
+
+! case 131: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */
+! #line 1122 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3133 "y.tab.c"
+ break;
+
+! case 132: /* case_clause_sequence: pattern_list SEMI_AND */
+! #line 1124 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3139 "y.tab.c"
+ break;
+
+! case 133: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */
+! #line 1126 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3145 "y.tab.c"
+ break;
+
+! case 134: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */
+! #line 1128 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3151 "y.tab.c"
+ break;
+
+! case 135: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */
+! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+! #line 3157 "y.tab.c"
+ break;
+
+! case 136: /* pattern: WORD */
+! #line 1134 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+! #line 3163 "y.tab.c"
+ break;
+
+! case 137: /* pattern: pattern '|' WORD */
+! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
+! #line 3169 "y.tab.c"
+ break;
+
+! case 138: /* compound_list: newline_list list0 */
+! #line 1145 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[0].command);
+***************
+*** 3157,3173 ****
+ gather_here_documents ();
+ }
+! #line 3160 "y.tab.c"
+ break;
+
+! case 138: /* compound_list: newline_list list1 */
+! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[0].command);
+ }
+! #line 3168 "y.tab.c"
+ break;
+
+! case 140: /* list0: list1 '&' newline_list */
+! #line 1143 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[-2].command)->type == cm_connection)
+--- 3176,3192 ----
+ gather_here_documents ();
+ }
+! #line 3179 "y.tab.c"
+ break;
+
+! case 139: /* compound_list: newline_list list1 */
+! #line 1151 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[0].command);
+ }
+! #line 3187 "y.tab.c"
+ break;
+
+! case 141: /* list0: list1 '&' newline_list */
+! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[-2].command)->type == cm_connection)
+***************
+*** 3176,3196 ****
+ (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
+ }
+! #line 3179 "y.tab.c"
+ break;
+
+! case 142: /* list1: list1 AND_AND newline_list list1 */
+! #line 1154 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+! #line 3185 "y.tab.c"
+ break;
+
+! case 143: /* list1: list1 OR_OR newline_list list1 */
+! #line 1156 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+! #line 3191 "y.tab.c"
+ break;
+
+! case 144: /* list1: list1 '&' newline_list list1 */
+! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[-3].command)->type == cm_connection)
+--- 3195,3215 ----
+ (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
+ }
+! #line 3198 "y.tab.c"
+ break;
+
+! case 143: /* list1: list1 AND_AND newline_list list1 */
+! #line 1169 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+! #line 3204 "y.tab.c"
+ break;
+
+! case 144: /* list1: list1 OR_OR newline_list list1 */
+! #line 1171 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+! #line 3210 "y.tab.c"
+ break;
+
+! case 145: /* list1: list1 '&' newline_list list1 */
+! #line 1173 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[-3].command)->type == cm_connection)
+***************
+*** 3199,3213 ****
+ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
+ }
+! #line 3202 "y.tab.c"
+ break;
+
+! case 145: /* list1: list1 ';' newline_list list1 */
+! #line 1165 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
+! #line 3208 "y.tab.c"
+ break;
+
+! case 146: /* list1: list1 '\n' newline_list list1 */
+! #line 1167 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if (parser_state & PST_CMDSUBST)
+--- 3218,3232 ----
+ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
+ }
+! #line 3221 "y.tab.c"
+ break;
+
+! case 146: /* list1: list1 ';' newline_list list1 */
+! #line 1180 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
+! #line 3227 "y.tab.c"
+ break;
+
+! case 147: /* list1: list1 '\n' newline_list list1 */
+! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if (parser_state & PST_CMDSUBST)
+***************
+*** 3216,3248 ****
+ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
+ }
+! #line 3219 "y.tab.c"
+ break;
+
+! case 147: /* list1: pipeline_command */
+! #line 1174 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 3225 "y.tab.c"
+ break;
+
+! case 150: /* list_terminator: '\n' */
+! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = '\n'; }
+! #line 3231 "y.tab.c"
+ break;
+
+! case 151: /* list_terminator: ';' */
+! #line 1184 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = ';'; }
+! #line 3237 "y.tab.c"
+ break;
+
+! case 152: /* list_terminator: yacc_EOF */
+! #line 1186 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = yacc_EOF; }
+! #line 3243 "y.tab.c"
+ break;
+
+! case 155: /* simple_list: simple_list1 */
+! #line 1200 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[0].command);
+--- 3235,3267 ----
+ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
+ }
+! #line 3238 "y.tab.c"
+ break;
+
+! case 148: /* list1: pipeline_command */
+! #line 1189 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 3244 "y.tab.c"
+ break;
+
+! case 151: /* list_terminator: '\n' */
+! #line 1197 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = '\n'; }
+! #line 3250 "y.tab.c"
+ break;
+
+! case 152: /* list_terminator: ';' */
+! #line 1199 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = ';'; }
+! #line 3256 "y.tab.c"
+ break;
+
+! case 153: /* list_terminator: yacc_EOF */
+! #line 1201 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = yacc_EOF; }
+! #line 3262 "y.tab.c"
+ break;
+
+! case 156: /* simple_list: simple_list1 */
+! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[0].command);
+***************
+*** 3259,3267 ****
+ }
+ }
+! #line 3262 "y.tab.c"
+ break;
+
+! case 156: /* simple_list: simple_list1 '&' */
+! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[-1].command)->type == cm_connection)
+--- 3278,3286 ----
+ }
+ }
+! #line 3281 "y.tab.c"
+ break;
+
+! case 157: /* simple_list: simple_list1 '&' */
+! #line 1230 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[-1].command)->type == cm_connection)
+***************
+*** 3281,3289 ****
+ }
+ }
+! #line 3284 "y.tab.c"
+ break;
+
+! case 157: /* simple_list: simple_list1 ';' */
+! #line 1233 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[-1].command);
+--- 3300,3308 ----
+ }
+ }
+! #line 3303 "y.tab.c"
+ break;
+
+! case 158: /* simple_list: simple_list1 ';' */
+! #line 1248 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[-1].command);
+***************
+*** 3300,3320 ****
+ }
+ }
+! #line 3303 "y.tab.c"
+ break;
+
+! case 158: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */
+! #line 1250 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+! #line 3309 "y.tab.c"
+ break;
+
+! case 159: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */
+! #line 1252 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+! #line 3315 "y.tab.c"
+ break;
+
+! case 160: /* simple_list1: simple_list1 '&' simple_list1 */
+! #line 1254 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[-2].command)->type == cm_connection)
+--- 3319,3339 ----
+ }
+ }
+! #line 3322 "y.tab.c"
+ break;
+
+! case 159: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */
+! #line 1265 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+! #line 3328 "y.tab.c"
+ break;
+
+! case 160: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */
+! #line 1267 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+! #line 3334 "y.tab.c"
+ break;
+
+! case 161: /* simple_list1: simple_list1 '&' simple_list1 */
+! #line 1269 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[-2].command)->type == cm_connection)
+***************
+*** 3323,3349 ****
+ (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
+ }
+! #line 3326 "y.tab.c"
+ break;
+
+! case 161: /* simple_list1: simple_list1 ';' simple_list1 */
+! #line 1261 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
+! #line 3332 "y.tab.c"
+ break;
+
+! case 162: /* simple_list1: pipeline_command */
+! #line 1264 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 3338 "y.tab.c"
+ break;
+
+! case 163: /* pipeline_command: pipeline */
+! #line 1268 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 3344 "y.tab.c"
+ break;
+
+! case 164: /* pipeline_command: BANG pipeline_command */
+! #line 1270 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[0].command))
+--- 3342,3368 ----
+ (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
+ }
+! #line 3345 "y.tab.c"
+ break;
+
+! case 162: /* simple_list1: simple_list1 ';' simple_list1 */
+! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
+! #line 3351 "y.tab.c"
+ break;
+
+! case 163: /* simple_list1: pipeline_command */
+! #line 1279 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 3357 "y.tab.c"
+ break;
+
+! case 164: /* pipeline_command: pipeline */
+! #line 1283 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 3363 "y.tab.c"
+ break;
+
+! case 165: /* pipeline_command: BANG pipeline_command */
+! #line 1285 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[0].command))
+***************
+*** 3351,3359 ****
+ (yyval.command) = (yyvsp[0].command);
+ }
+! #line 3354 "y.tab.c"
+ break;
+
+! case 165: /* pipeline_command: timespec pipeline_command */
+! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[0].command))
+--- 3370,3378 ----
+ (yyval.command) = (yyvsp[0].command);
+ }
+! #line 3373 "y.tab.c"
+ break;
+
+! case 166: /* pipeline_command: timespec pipeline_command */
+! #line 1291 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if ((yyvsp[0].command))
+***************
+*** 3361,3369 ****
+ (yyval.command) = (yyvsp[0].command);
+ }
+! #line 3364 "y.tab.c"
+ break;
+
+! case 166: /* pipeline_command: timespec list_terminator */
+! #line 1282 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ ELEMENT x;
+--- 3380,3388 ----
+ (yyval.command) = (yyvsp[0].command);
+ }
+! #line 3383 "y.tab.c"
+ break;
+
+! case 167: /* pipeline_command: timespec list_terminator */
+! #line 1297 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ ELEMENT x;
+***************
+*** 3385,3393 ****
+ parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
+ }
+! #line 3388 "y.tab.c"
+ break;
+
+! case 167: /* pipeline_command: BANG list_terminator */
+! #line 1302 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ ELEMENT x;
+--- 3404,3412 ----
+ parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
+ }
+! #line 3407 "y.tab.c"
+ break;
+
+! case 168: /* pipeline_command: BANG list_terminator */
+! #line 1317 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ ELEMENT x;
+***************
+*** 3410,3424 ****
+ parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
+ }
+! #line 3413 "y.tab.c"
+ break;
+
+! case 168: /* pipeline: pipeline '|' newline_list pipeline */
+! #line 1325 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
+! #line 3419 "y.tab.c"
+ break;
+
+! case 169: /* pipeline: pipeline BAR_AND newline_list pipeline */
+! #line 1327 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
+--- 3429,3443 ----
+ parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
+ }
+! #line 3432 "y.tab.c"
+ break;
+
+! case 169: /* pipeline: pipeline '|' newline_list pipeline */
+! #line 1340 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
+! #line 3438 "y.tab.c"
+ break;
+
+! case 170: /* pipeline: pipeline BAR_AND newline_list pipeline */
+! #line 1342 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
+***************
+*** 3443,3481 ****
+ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
+ }
+! #line 3446 "y.tab.c"
+ break;
+
+! case 170: /* pipeline: command */
+! #line 1350 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 3452 "y.tab.c"
+ break;
+
+! case 171: /* timespec: TIME */
+! #line 1354 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE; }
+! #line 3458 "y.tab.c"
+ break;
+
+! case 172: /* timespec: TIME TIMEOPT */
+! #line 1356 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3464 "y.tab.c"
+ break;
+
+! case 173: /* timespec: TIME TIMEIGN */
+! #line 1358 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3470 "y.tab.c"
+ break;
+
+! case 174: /* timespec: TIME TIMEOPT TIMEIGN */
+! #line 1360 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3476 "y.tab.c"
+ break;
+
+
+! #line 3480 "y.tab.c"
+
+ default: break;
+--- 3462,3500 ----
+ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
+ }
+! #line 3465 "y.tab.c"
+ break;
+
+! case 171: /* pipeline: command */
+! #line 1365 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+! #line 3471 "y.tab.c"
+ break;
+
+! case 172: /* timespec: TIME */
+! #line 1369 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE; }
+! #line 3477 "y.tab.c"
+ break;
+
+! case 173: /* timespec: TIME TIMEOPT */
+! #line 1371 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3483 "y.tab.c"
+ break;
+
+! case 174: /* timespec: TIME TIMEIGN */
+! #line 1373 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3489 "y.tab.c"
+ break;
+
+! case 175: /* timespec: TIME TIMEOPT TIMEIGN */
+! #line 1375 "/usr/local/src/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+! #line 3495 "y.tab.c"
+ break;
+
+
+! #line 3499 "y.tab.c"
+
+ default: break;
+***************
+*** 3670,3674 ****
+ }
+
+! #line 1362 "/usr/local/src/chet/src/bash/src/parse.y"
+
+
+--- 3689,3693 ----
+ }
+
+! #line 1377 "/usr/local/src/chet/src/bash/src/parse.y"
+
+
+***************
+*** 5209,5215 ****
+ if (current_token < 0)
+ #if defined (YYERRCODE) && !defined (YYUNDEF)
+! current_token = YYERRCODE;
+ #else
+! current_token = YYerror;
+ #endif
+
+--- 5228,5234 ----
+ if (current_token < 0)
+ #if defined (YYERRCODE) && !defined (YYUNDEF)
+! current_token = EOF_Reached ? YYEOF : YYERRCODE;
+ #else
+! current_token = EOF_Reached ? YYEOF : YYUNDEF;
+ #endif
+
+***************
+*** 6006,6009 ****
+--- 6026,6030 ----
+ parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
+ EOF_Reached = 1; /* XXX */
++ parser_state |= PST_NOERROR; /* avoid redundant error message */
+ return (&matched_pair_error);
+ }
+***************
+*** 6468,6471 ****
+--- 6487,6491 ----
+
+ /* yyparse() has already called yyerror() and reset_parser() */
++ parser_state |= PST_NOERROR;
+ return (&matched_pair_error);
+ }
+
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 17
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 18
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-5.2-patches/bash52-019 b/source/a/bash/bash-5.2-patches/bash52-019
new file mode 100644
index 000000000..165a55e62
--- /dev/null
+++ b/source/a/bash/bash-5.2-patches/bash52-019
@@ -0,0 +1,66 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.2
+Patch-ID: bash52-019
+
+Bug-Reported-by: Steffen Nurpmeso <steffen@sdaoden.eu>
+Bug-Reference-ID: <20230116233547.2jFxL%steffen@sdaoden.eu>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-01/msg00057.html
+
+Bug-Description:
+
+There are some cases where the shell reaped a background (asynchronous) job
+and would incorrectly try to set the terminal's process group back to the
+shell's. In these cases it never set the terminal process group to that
+jobs's process group initially, so resetting it is incorrect.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-5.2-patched/jobs.c 2022-12-13 12:09:02.000000000 -0500
+--- jobs.c 2023-10-26 12:12:10.000000000 -0400
+***************
+*** 3078,3084 ****
+ subshell. Make sure subst.c:command_substitute uses the same
+ conditions to determine whether or not it should undo this and
+! give the terminal to pipeline_pgrp. */
+!
+ if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 &&
+ (subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)
+ give_terminal_to (shell_pgrp, 0);
+--- 3036,3046 ----
+ subshell. Make sure subst.c:command_substitute uses the same
+ conditions to determine whether or not it should undo this and
+! give the terminal to pipeline_pgrp. We don't give the terminal
+! back to shell_pgrp if an async job in the background exits because
+! we never gave it to that job in the first place. An async job in
+! the foreground is one we started in the background and foregrounded
+! with `fg', and gave it the terminal. */
+ if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 &&
++ (job == NO_JOB || IS_ASYNC (job) == 0 || IS_FOREGROUND (job)) &&
+ (subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)
+ give_terminal_to (shell_pgrp, 0);
+***************
+*** 3624,3627 ****
+--- 3599,3603 ----
+ get_tty_state ();
+ save_stty = shell_tty_info;
++ jobs[job]->flags &= ~J_ASYNC; /* no longer async */
+ /* Give the terminal to this job. */
+ if (IS_JOBCONTROL (job))
+
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 18
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 19
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-5.2-patches/bash52-020 b/source/a/bash/bash-5.2-patches/bash52-020
new file mode 100644
index 000000000..0e76741e9
--- /dev/null
+++ b/source/a/bash/bash-5.2-patches/bash52-020
@@ -0,0 +1,53 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.2
+Patch-ID: bash52-020
+
+Bug-Reported-by: Dima Korobskiy <dkroot2@gmail.com>
+Bug-Reference-ID: <16664c2d-40ec-df33-b932-83db06e39a82@gmail.com>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-08/msg00125.html
+
+Bug-Description:
+
+The parser did not allow `time' to appear as the first reserved word in a
+command substitution.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-5.2-patched/parse.y Tue Dec 13 12:53:21 2022
+--- parse.y Fri Sep 1 10:36:28 2023
+***************
+*** 3151,3154 ****
+--- 3151,3155 ----
+ case TIMEOPT: /* time -p time pipeline */
+ case TIMEIGN: /* time -p -- ... */
++ case DOLPAREN:
+ return 1;
+ default:
+*** ../bash-5.2-patched/y.tab.c Tue Dec 13 12:53:21 2022
+--- y.tab.c Fri Sep 1 10:36:44 2023
+***************
+*** 5466,5469 ****
+--- 5466,5470 ----
+ case TIMEOPT: /* time -p time pipeline */
+ case TIMEIGN: /* time -p -- ... */
++ case DOLPAREN:
+ return 1;
+ default:
+
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 19
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 20
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/bash-5.2-patches/bash52-021 b/source/a/bash/bash-5.2-patches/bash52-021
new file mode 100644
index 000000000..ade1fac01
--- /dev/null
+++ b/source/a/bash/bash-5.2-patches/bash52-021
@@ -0,0 +1,61 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.2
+Patch-ID: bash52-021
+
+Bug-Reported-by: Norbert Lange <nolange79@gmail.com>
+Bug-Reference-ID: <CADYdroPZFdVZSL6KkhqkAPgKKopbsLQVSm7_TvLCwadL2=UAWw@mail.gmail.com>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-12/msg00046.html
+
+Bug-Description:
+
+There is an off-by-one error that causes command substitutions to fail when
+they appear in a word expansion inside a here-document.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-5.2-patched/subst.c 2022-12-13 12:08:58.000000000 -0500
+--- subst.c 2022-12-14 09:09:53.000000000 -0500
+***************
+*** 1694,1698 ****
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+! tlen = si - i - 1;
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
+ result[result_index++] = c;
+--- 1699,1703 ----
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+! tlen = si - i - 2;
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
+ result[result_index++] = c;
+***************
+*** 1714,1718 ****
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+! tlen = si - i - 1;
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
+ result[result_index++] = c;
+--- 1719,1723 ----
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+! tlen = si - i - 2;
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
+ result[result_index++] = c;
+
+*** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 20
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 21
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/kbd/vlock.pamd b/source/a/kbd/vlock.pamd
deleted file mode 100644
index d2d47e5b2..000000000
--- a/source/a/kbd/vlock.pamd
+++ /dev/null
@@ -1,3 +0,0 @@
-#%PAM-1.0
-auth include system-auth
-account required pam_permit.so
diff --git a/source/ap/rdfind/rdfind.SlackBuild b/source/ap/rdfind/rdfind.SlackBuild
new file mode 100755
index 000000000..9cf8c5d09
--- /dev/null
+++ b/source/ap/rdfind/rdfind.SlackBuild
@@ -0,0 +1,144 @@
+#!/bin/bash
+
+# Copyright 2023 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PKGNAM=rdfind
+SRCNAM=rdfind-releases
+VERSION=${VERSION:-$(echo $SRCNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$(uname -m)" in
+ i?86) ARCH=i586 ;;
+ arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) ARCH=$(uname -m) ;;
+ esac
+ export ARCH
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
+NUMJOBS=${NUMJOBS:-" -j $(expr $(nproc) + 1) "}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "armv7hl" ]; then
+ SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16"
+ LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.?z || exit 1
+cd $SRCNAM-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \+
+
+# EXAMPLE FOR AUTOTOOLS:
+# Configure, build, and install:
+if [ ! -r configure ]; then
+ if [ -x ./bootstrap.sh ]; then
+ ./bootstrap.sh
+ else
+ autoreconf -vif
+ fi
+fi
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --disable-static \
+ --build=$ARCH-slackware-linux || exit 1
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress manual pages:
+find $PKG/usr/man -type f -exec gzip -9 {} \+
+for i in $( find $PKG/usr/man -type l ) ; do
+ ln -s $( readlink $i ).gz $i.gz
+ rm $i
+done
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS* ChangeLog COPYING* INSTALL* LICENSE* NEWS* README* \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/ap/rdfind/rdfind.url b/source/ap/rdfind/rdfind.url
new file mode 100644
index 000000000..8df5c8396
--- /dev/null
+++ b/source/ap/rdfind/rdfind.url
@@ -0,0 +1 @@
+https://github.com/pauldreik/rdfind
diff --git a/source/ap/rdfind/slack-desc b/source/ap/rdfind/slack-desc
new file mode 100644
index 000000000..97634087d
--- /dev/null
+++ b/source/ap/rdfind/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+rdfind: rdfind (redundant data finder)
+rdfind:
+rdfind: Rdfind is a command line tool that finds duplicate files. It is useful
+rdfind: for compressing backup directories or just finding duplicate files. It
+rdfind: compares files based on their content, NOT on their file names.
+rdfind:
+rdfind: Homepage: https://github.com/pauldreik/rdfind
+rdfind:
+rdfind:
+rdfind:
+rdfind:
diff --git a/source/l/ffmpeg/effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch b/source/l/ffmpeg/effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch
deleted file mode 100644
index 984c2a820..000000000
--- a/source/l/ffmpeg/effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From effadce6c756247ea8bae32dc13bb3e6f464f0eb Mon Sep 17 00:00:00 2001
-From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
-Date: Sun, 16 Jul 2023 18:18:02 +0300
-Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
- instructions within inline assembly
-
-Fixes assembling with binutil as >= 2.41
-
-Signed-off-by: James Almer <jamrial@gmail.com>
----
- libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++---
- 1 file changed, 23 insertions(+), 3 deletions(-)
-
-diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h
-index 6298f5ed19..ca7e2dffc1 100644
---- a/libavcodec/x86/mathops.h
-+++ b/libavcodec/x86/mathops.h
-@@ -35,12 +35,20 @@
- static av_always_inline av_const int MULL(int a, int b, unsigned shift)
- {
- int rt, dummy;
-+ if (__builtin_constant_p(shift))
- __asm__ (
- "imull %3 \n\t"
- "shrdl %4, %%edx, %%eax \n\t"
- :"=a"(rt), "=d"(dummy)
-- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
-+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
- );
-+ else
-+ __asm__ (
-+ "imull %3 \n\t"
-+ "shrdl %4, %%edx, %%eax \n\t"
-+ :"=a"(rt), "=d"(dummy)
-+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
-+ );
- return rt;
- }
-
-@@ -113,19 +121,31 @@ __asm__ volatile(\
- // avoid +32 for shift optimization (gcc should do that ...)
- #define NEG_SSR32 NEG_SSR32
- static inline int32_t NEG_SSR32( int32_t a, int8_t s){
-+ if (__builtin_constant_p(s))
- __asm__ ("sarl %1, %0\n\t"
- : "+r" (a)
-- : "ic" ((uint8_t)(-s))
-+ : "i" (-s & 0x1F)
- );
-+ else
-+ __asm__ ("sarl %1, %0\n\t"
-+ : "+r" (a)
-+ : "c" ((uint8_t)(-s))
-+ );
- return a;
- }
-
- #define NEG_USR32 NEG_USR32
- static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
-+ if (__builtin_constant_p(s))
- __asm__ ("shrl %1, %0\n\t"
- : "+r" (a)
-- : "ic" ((uint8_t)(-s))
-+ : "i" (-s & 0x1F)
- );
-+ else
-+ __asm__ ("shrl %1, %0\n\t"
-+ : "+r" (a)
-+ : "c" ((uint8_t)(-s))
-+ );
- return a;
- }
-
---
-2.30.2
-
-
diff --git a/source/l/ffmpeg/ffmpeg.SlackBuild b/source/l/ffmpeg/ffmpeg.SlackBuild
index 5eb122cb2..2874f9082 100755
--- a/source/l/ffmpeg/ffmpeg.SlackBuild
+++ b/source/l/ffmpeg/ffmpeg.SlackBuild
@@ -30,7 +30,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=ffmpeg
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -175,9 +175,6 @@ rm -rf $PKGNAM-$VERSION
tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
cd $PKGNAM-$VERSION || exit 1
-# Fix texinfo-7.1 regression:
-zcat $CWD/texinfo.patch.gz | patch -p1 --verbose || exit 1
-
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -188,9 +185,6 @@ find -L . \
# Restore missing function needed by Chromium and qt-webengine:
zcat $CWD/add-av_stream_get_first_dts-for-chromium.patch.gz | patch -p1 --verbose || exit 1
-# Upstream patch to build with binutils-2.41:
-zcat $CWD/effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch.gz | patch -p1 --verbose || exit 1
-
# Build against recent Vulkan:
zcat $CWD/ffmpeg.vulkan.diff.gz | patch -p1 --verbose || exit 1
diff --git a/source/l/ffmpeg/texinfo.patch b/source/l/ffmpeg/texinfo.patch
deleted file mode 100644
index 2de58c150..000000000
--- a/source/l/ffmpeg/texinfo.patch
+++ /dev/null
@@ -1,283 +0,0 @@
---- ffmpeg-6.0/doc/t2h.pm 2022-11-04 22:16:28.000000000 +0200
-+++ t2h.pm.BAK 2023-10-26 00:47:01.128352085 +0300
-@@ -19,9 +19,11 @@
- # You should have received a copy of the GNU General Public
- # License along with FFmpeg; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+use lib '/usr/share/texinfo/Texinfo/Convert';
-+use Texinfo::Convert::Converter;
-
- # no navigation elements
--set_from_init_file('HEADERS', 0);
-+texinfo_set_from_init_file('HEADERS', 0);
-
- sub ffmpeg_heading_command($$$$$)
- {
-@@ -60,66 +62,68 @@
- }
-
- my $heading_level;
-- # node is used as heading if there is nothing else.
-- if ($cmdname eq 'node') {
-- if (!$element or (!$element->{'extra'}->{'section'}
-- and $element->{'extra'}->{'node'}
-- and $element->{'extra'}->{'node'} eq $command
-- # bogus node may not have been normalized
-- and defined($command->{'extra'}->{'normalized'}))) {
-- if ($command->{'extra'}->{'normalized'} eq 'Top') {
-- $heading_level = 0;
-- } else {
-- $heading_level = 3;
-- }
-- }
-+
-+if ($cmdname eq 'node') {
-+ if (!$element or (
-+ $element->{'extra'}->{'section'} and
-+ $element->{'extra'}->{'node'} and
-+ $element->{'extra'}->{'node'} eq $command and
-+ defined($command->{'extra'}->{'normalized'})
-+ )) {
-+ $heading_level = 0; # Set heading level to 0
- } else {
-- $heading_level = $command->{'level'};
-+ $heading_level = 3;
- }
-+} else {
-+ $heading_level = $command->{'level'};
-+}
-
-- my $heading = $self->command_text($command);
-- # $heading not defined may happen if the command is a @node, for example
-- # if there is an error in the node.
-- if (defined($heading) and $heading ne '' and defined($heading_level)) {
--
-- if ($Texinfo::Common::root_commands{$cmdname}
-- and $Texinfo::Common::sectioning_commands{$cmdname}) {
-- my $content_href = $self->command_contents_href($command, 'contents',
-- $self->{'current_filename'});
-- if ($content_href) {
-- my $this_href = $content_href =~ s/^\#toc-/\#/r;
-- $heading .= '<span class="pull-right">'.
-- '<a class="anchor hidden-xs" '.
-- "href=\"$this_href\" aria-hidden=\"true\">".
-- ($ENV{"FA_ICONS"} ? '<i class="fa fa-link"></i>'
-- : '#').
-- '</a> '.
-- '<a class="anchor hidden-xs"'.
-- "href=\"$content_href\" aria-hidden=\"true\">".
-- ($ENV{"FA_ICONS"} ? '<i class="fa fa-navicon"></i>'
-- : 'TOC').
-- '</a>'.
-- '</span>';
-- }
-+my $heading = $self->command_text($command);
-+
-+if (defined($heading) and $heading ne '' and defined($heading_level)) {
-+ if ($Texinfo::Common::root_commands{$cmdname}
-+ and $Texinfo::Common::sectioning_commands{$cmdname}) {
-+ my $content_href = $self->command_contents_href($command, 'contents', $self->{'current_filename'});
-+ if ($content_href) {
-+ my $this_href = $content_href =~ s/^\#toc-/\#/r;
-+ $heading .= '<span class="pull-right">'.
-+ '<a class="anchor hidden-xs" '.
-+ "href=\"$this_href\" aria-hidden=\"true\">".
-+ ($ENV{"FA_ICONS"} ? '<i class="fa fa-link"></i>'
-+ : '#').
-+ '</a> ' .
-+ '<a class="anchor hidden-xs"'.
-+ "href=\"$content_href\" aria-hidden=\"true\">".
-+ ($ENV{"FA_ICONS"} ? '<i class="fa fa-navicon"></i>'
-+ : 'TOC').
-+ '</a>'.
-+ '</span>';
- }
-+ }
-
-- if ($self->in_preformatted()) {
-- $result .= $heading."\n";
-- } else {
-- # if the level was changed, set the command name right
-- if ($cmdname ne 'node'
-- and $heading_level ne $Texinfo::Common::command_structuring_level{$cmdname}) {
-- $cmdname
-- = $Texinfo::Common::level_to_structuring_command{$cmdname}->[$heading_level];
-- }
-- $result .= &{$self->{'format_heading_text'}}(
-- $self, $cmdname, $heading,
-- $heading_level +
-- $self->get_conf('CHAPTER_HEADER_LEVEL') - 1, $command);
-+ if ($self->in_preformatted()) {
-+ $result .= $heading."\n";
-+ } else {
-+ if ($cmdname ne 'node'
-+ and $heading_level ne $Texinfo::Common::command_structuring_level{$cmdname}) {
-+ $cmdname
-+ = $Texinfo::Common::level_to_structuring_command{$cmdname}->[$heading_level];
- }
-+ if ($cmdname ne 'node') {
-+ # Only add class if the command is not "node"
-+ $result .= &{$self->formatting_function('format_heading_text')}(
-+ $self, $cmdname, $heading,
-+ $heading_level +
-+ $self->get_conf('CHAPTER_HEADER_LEVEL') - 1, $command);
-+} else {
-+ # Handle "Top" differently, without adding class
-+ $result .= $heading . "\n";
-+}
- }
-- $result .= $content if (defined($content));
-- return $result;
-+}
-+$result .= $content if (defined($content));
-+
-+return $result;
- }
-
- foreach my $command (keys(%Texinfo::Common::sectioning_commands), 'node') {
-@@ -127,22 +131,22 @@
- }
-
- # determine if texinfo is at least version 6.8
--my $program_version_num = version->declare(get_conf('PACKAGE_VERSION'))->numify;
-+my $program_version_num = version->declare(texinfo_get_conf('PACKAGE_VERSION'))->numify;
- my $program_version_6_8 = $program_version_num >= 6.008000;
-
- # print the TOC where @contents is used
- if ($program_version_6_8) {
-- set_from_init_file('CONTENTS_OUTPUT_LOCATION', 'inline');
-+ texinfo_set_from_init_file('CONTENTS_OUTPUT_LOCATION', 'inline');
- } else {
-- set_from_init_file('INLINE_CONTENTS', 1);
-+ texinfo_set_from_init_file('INLINE_CONTENTS', 1);
- }
-
- # make chapters <h2>
--set_from_init_file('CHAPTER_HEADER_LEVEL', 2);
-+texinfo_set_from_init_file('CHAPTER_HEADER_LEVEL', 2);
-
- # Do not add <hr>
--set_from_init_file('DEFAULT_RULE', '');
--set_from_init_file('BIG_RULE', '');
-+texinfo_set_from_init_file('DEFAULT_RULE', '');
-+texinfo_set_from_init_file('BIG_RULE', '');
-
- # Customized file beginning
- sub ffmpeg_begin_file($$$)
-@@ -156,10 +160,10 @@
- $command = $self->element_command($element);
- }
-
-- my ($title, $description, $encoding, $date, $css_lines,
-+my ($title, $description, $encoding, $date, $css_lines,
- $doctype, $bodytext, $copying_comment, $after_body_open,
- $extra_head, $program_and_version, $program_homepage,
-- $program, $generator) = $self->_file_header_informations($command);
-+ $program, $generator) = $self->_file_header_information($command);
-
- my $links = $self->_get_links ($filename, $element);
-
-@@ -201,13 +205,13 @@
- sub ffmpeg_program_string($)
- {
- my $self = shift;
-- if (defined($self->get_conf('PROGRAM'))
-- and $self->get_conf('PROGRAM') ne ''
-- and defined($self->get_conf('PACKAGE_URL'))) {
-+ if (defined($self->texinfo_get_conf('PROGRAM'))
-+ and $self->texinfo_get_conf('PROGRAM') ne ''
-+ and defined($self->texinfo_get_conf('PACKAGE_URL'))) {
- return $self->convert_tree(
- $self->gdt('This document was generated using @uref{{program_homepage}, @emph{{program}}}.',
-- { 'program_homepage' => $self->get_conf('PACKAGE_URL'),
-- 'program' => $self->get_conf('PROGRAM') }));
-+ { 'program_homepage' => $self->texinfo_get_conf('PACKAGE_URL'),
-+ 'program' => $self->texinfo_get_conf('PROGRAM') }));
- } else {
- return $self->convert_tree(
- $self->gdt('This document was generated automatically.'));
-@@ -223,7 +227,7 @@
- sub ffmpeg_end_file($)
- {
- my $self = shift;
-- my $program_string = &{$self->{'format_program_string'}}($self);
-+ my $program_string = "This document was generated using TexinfoConverter.";
- my $program_text = <<EOT;
- <p style="font-size: small;">
- $program_string
-@@ -244,7 +248,7 @@
-
- # Dummy title command
- # Ignore title. Title is handled through ffmpeg_begin_file().
--set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1);
-+texinfo_set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1);
- sub ffmpeg_title($$$$)
- {
- return '';
-@@ -253,6 +257,8 @@
- texinfo_register_command_formatting('titlefont',
- \&ffmpeg_title);
-
-+use lib '/usr/share/texinfo/Texinfo/Convert';
-+
- # Customized float command. Part of code borrowed from GNU Texinfo.
- sub ffmpeg_float($$$$$)
- {
-@@ -262,8 +268,9 @@
- my $args = shift;
- my $content = shift;
-
-- my ($caption, $prepended) = Texinfo::Common::float_name_caption($self,
-+my ($caption, $prepended) = Texinfo::Convert::Converter::float_name_caption($self,
- $command);
-+
- my $caption_text = '';
- my $prepended_text;
- my $prepended_save = '';
-@@ -335,24 +342,31 @@
- $caption->{'args'}->[0], 'float caption');
- }
- if ($prepended_text.$caption_text ne '') {
-- $prepended_text = $self->_attribute_class('div','float-caption'). '>'
-- . $prepended_text;
-+ $prepended_text = '<div class="float-caption">' . $prepended_text;
- $caption_text .= '</div>';
-+
- }
-- my $html_class = '';
-- if ($prepended_save =~ /NOTE/) {
-- $html_class = 'info';
-- $prepended_text = '';
-- $caption_text = '';
-- } elsif ($prepended_save =~ /IMPORTANT/) {
-- $html_class = 'warning';
-- $prepended_text = '';
-- $caption_text = '';
-- }
-- return $self->_attribute_class('div', $html_class). '>' . "\n" .
-- $prepended_text . $caption_text . $content . '</div>';
--}
-+ my $html_class = [];
-
-+if ($prepended_save =~ /NOTE/) {
-+ $html_class = ['info'];
-+ $prepended_text = '';
-+ $caption_text = '';
-+} elsif ($prepended_save =~ /IMPORTANT/) {
-+ $html_class = ['warning'];
-+ $prepended_text = '';
-+ $caption_text = '';
-+} elsif ($prepended_save =~ /Top/) {
-+ $html_class = [grep { $_ ne 'Top' } @$html_class]; # Remove "Top" class
-+ $prepended_text = '';
-+ $caption_text = '';
-+}
-+
-+# Set the class attribute directly in the HTML
-+return $self->html_attribute_class('div', $html_class) . '>' . "\n" .
-+ $prepended_text . $caption_text . $content . '</div>';
-+
-+}
- texinfo_register_command_formatting('float',
- \&ffmpeg_float);
-