Fri Aug 30 18:50:32 UTC 2019

a/bash-5.0.011-x86_64-1.txz:  Upgraded.
a/findutils-4.7.0-x86_64-1.txz:  Upgraded.
ap/squashfs-tools-4.4-x86_64-1.txz:  Upgraded.
n/irssi-1.2.2-x86_64-1.txz:  Upgraded.
  This update fixes a security issue:
  Use after free when receiving duplicate CAP found by Joseph Bisch.
  For more information, see:
    https://irssi.org/security/html/irssi_sa_2019_08
    https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-15717
  (* Security fix *)
x/libvdpau-1.3-x86_64-1.txz:  Upgraded.
This commit is contained in:
Patrick J Volkerding 2019-08-30 18:50:32 +00:00 committed by Eric Hameleers
parent 0b228c9576
commit bfb7494122
21 changed files with 452 additions and 2345 deletions

View file

@ -11,9 +11,30 @@
<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, 29 Aug 2019 22:21:17 GMT</pubDate>
<lastBuildDate>Fri, 30 Aug 2019 06:59:43 GMT</lastBuildDate>
<pubDate>Fri, 30 Aug 2019 18:50:32 GMT</pubDate>
<lastBuildDate>Sat, 31 Aug 2019 06:59:42 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.11</generator>
<item>
<title>Fri, 30 Aug 2019 18:50:32 GMT</title>
<pubDate>Fri, 30 Aug 2019 18:50:32 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20190830185032</link>
<guid isPermaLink="false">20190830185032</guid>
<description>
<![CDATA[<pre>
a/bash-5.0.011-x86_64-1.txz: Upgraded.
a/findutils-4.7.0-x86_64-1.txz: Upgraded.
ap/squashfs-tools-4.4-x86_64-1.txz: Upgraded.
n/irssi-1.2.2-x86_64-1.txz: Upgraded.
This update fixes a security issue:
Use after free when receiving duplicate CAP found by Joseph Bisch.
For more information, see:
https://irssi.org/security/html/irssi_sa_2019_08
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-15717
(* Security fix *)
x/libvdpau-1.3-x86_64-1.txz: Upgraded.
</pre>]]>
</description>
</item>
<item>
<title>Thu, 29 Aug 2019 22:21:17 GMT</title>
<pubDate>Thu, 29 Aug 2019 22:21:17 GMT</pubDate>

View file

@ -1,3 +1,16 @@
Fri Aug 30 18:50:32 UTC 2019
a/bash-5.0.011-x86_64-1.txz: Upgraded.
a/findutils-4.7.0-x86_64-1.txz: Upgraded.
ap/squashfs-tools-4.4-x86_64-1.txz: Upgraded.
n/irssi-1.2.2-x86_64-1.txz: Upgraded.
This update fixes a security issue:
Use after free when receiving duplicate CAP found by Joseph Bisch.
For more information, see:
https://irssi.org/security/html/irssi_sa_2019_08
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-15717
(* Security fix *)
x/libvdpau-1.3-x86_64-1.txz: Upgraded.
+--------------------------+
Thu Aug 29 22:21:17 UTC 2019
a/kernel-firmware-20190827_7307a29-noarch-1.txz: Upgraded.
a/kernel-generic-4.19.69-x86_64-1.txz: Upgraded.

View file

@ -1,20 +1,20 @@
Thu Aug 29 22:43:10 UTC 2019
Fri Aug 30 19:01:47 UTC 2019
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 2019-08-29 22:21 .
drwxr-xr-x 12 root root 4096 2019-08-30 18:50 .
-rw-r--r-- 1 root root 10064 2016-06-30 18:39 ./ANNOUNCE.14_2
-rw-r--r-- 1 root root 14375 2019-08-09 05:36 ./CHANGES_AND_HINTS.TXT
-rw-r--r-- 1 root root 922877 2019-08-28 21:44 ./CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2019-08-28 21:44 ./CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 925350 2019-08-29 22:43 ./CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2019-08-29 22:43 ./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 682855 2019-08-29 22:21 ./ChangeLog.txt
-rw-r--r-- 1 root root 683398 2019-08-30 18:50 ./ChangeLog.txt
drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI
drwxr-xr-x 2 root root 4096 2019-08-29 22:18 ./EFI/BOOT
-rw-r--r-- 1 root root 1417216 2019-07-05 18:54 ./EFI/BOOT/bootx64.efi
@ -25,9 +25,9 @@ drwxr-xr-x 2 root root 4096 2019-08-29 22:18 ./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 1213046 2019-08-28 21:44 ./FILELIST.TXT
-rw-r--r-- 1 root root 1216842 2019-08-29 22:43 ./FILELIST.TXT
-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY
-rw-r--r-- 1 root root 733444 2019-08-29 22:41 ./PACKAGES.TXT
-rw-r--r-- 1 root root 733431 2019-08-30 18:59 ./PACKAGES.TXT
-rw-r--r-- 1 root root 8564 2016-06-28 21:33 ./README.TXT
-rw-r--r-- 1 root root 3635 2019-08-29 21:50 ./README.initrd
-rw-r--r-- 1 root root 34412 2017-12-01 17:44 ./README_CRYPT.TXT
@ -786,13 +786,13 @@ drwxr-xr-x 2 root root 4096 2012-09-20 18:06 ./patches
-rw-r--r-- 1 root root 575 2012-09-20 18:06 ./patches/FILE_LIST
-rw-r--r-- 1 root root 14 2012-09-20 18:06 ./patches/MANIFEST.bz2
-rw-r--r-- 1 root root 224 2012-09-20 18:06 ./patches/PACKAGES.TXT
drwxr-xr-x 18 root root 4096 2019-08-29 22:41 ./slackware64
-rw-r--r-- 1 root root 290994 2019-08-29 22:41 ./slackware64/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2019-08-29 22:41 ./slackware64/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 362459 2019-08-29 22:38 ./slackware64/FILE_LIST
-rw-r--r-- 1 root root 3704633 2019-08-29 22:39 ./slackware64/MANIFEST.bz2
drwxr-xr-x 18 root root 4096 2019-08-30 18:59 ./slackware64
-rw-r--r-- 1 root root 290955 2019-08-30 18:59 ./slackware64/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2019-08-30 18:59 ./slackware64/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 362422 2019-08-30 18:57 ./slackware64/FILE_LIST
-rw-r--r-- 1 root root 3693638 2019-08-30 18:58 ./slackware64/MANIFEST.bz2
lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT
drwxr-xr-x 2 root root 28672 2019-08-29 22:38 ./slackware64/a
drwxr-xr-x 2 root root 28672 2019-08-30 18:57 ./slackware64/a
-rw-r--r-- 1 root root 327 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txt
-rw-r--r-- 1 root root 10820 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txz
-rw-r--r-- 1 root root 163 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txz.asc
@ -811,9 +811,9 @@ drwxr-xr-x 2 root root 28672 2019-08-29 22:38 ./slackware64/a
-rw-r--r-- 1 root root 606 2018-06-19 20:02 ./slackware64/a/attr-2.4.48-x86_64-1.txt
-rw-r--r-- 1 root root 63636 2018-06-19 20:02 ./slackware64/a/attr-2.4.48-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-19 20:02 ./slackware64/a/attr-2.4.48-x86_64-1.txz.asc
-rw-r--r-- 1 root root 507 2019-08-15 18:06 ./slackware64/a/bash-5.0.009-x86_64-1.txt
-rw-r--r-- 1 root root 1637708 2019-08-15 18:06 ./slackware64/a/bash-5.0.009-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-08-15 18:06 ./slackware64/a/bash-5.0.009-x86_64-1.txz.asc
-rw-r--r-- 1 root root 507 2019-08-30 18:29 ./slackware64/a/bash-5.0.011-x86_64-1.txt
-rw-r--r-- 1 root root 1638164 2019-08-30 18:29 ./slackware64/a/bash-5.0.011-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-08-30 18:29 ./slackware64/a/bash-5.0.011-x86_64-1.txz.asc
-rw-r--r-- 1 root root 226 2018-10-17 03:06 ./slackware64/a/bin-11.1-x86_64-3.txt
-rw-r--r-- 1 root root 39576 2018-10-17 03:06 ./slackware64/a/bin-11.1-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-10-17 03:06 ./slackware64/a/bin-11.1-x86_64-3.txz.asc
@ -880,9 +880,9 @@ drwxr-xr-x 2 root root 28672 2019-08-29 22:38 ./slackware64/a
-rw-r--r-- 1 root root 271 2019-05-17 18:12 ./slackware64/a/file-5.37-x86_64-1.txt
-rw-r--r-- 1 root root 361356 2019-05-17 18:12 ./slackware64/a/file-5.37-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-05-17 18:12 ./slackware64/a/file-5.37-x86_64-1.txz.asc
-rw-r--r-- 1 root root 366 2018-08-22 23:20 ./slackware64/a/findutils-4.6.0-x86_64-1.txt
-rw-r--r-- 1 root root 467152 2018-08-22 23:20 ./slackware64/a/findutils-4.6.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-08-22 23:20 ./slackware64/a/findutils-4.6.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 366 2019-08-30 18:24 ./slackware64/a/findutils-4.7.0-x86_64-1.txt
-rw-r--r-- 1 root root 499860 2019-08-30 18:24 ./slackware64/a/findutils-4.7.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-08-30 18:24 ./slackware64/a/findutils-4.7.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 257 2018-04-13 13:04 ./slackware64/a/floppy-5.5-x86_64-2.txt
-rw-r--r-- 1 root root 362172 2018-04-13 13:04 ./slackware64/a/floppy-5.5-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:04 ./slackware64/a/floppy-5.5-x86_64-2.txz.asc
@ -1143,7 +1143,7 @@ drwxr-xr-x 2 root root 28672 2019-08-29 22:38 ./slackware64/a
-rw-r--r-- 1 root root 540 2018-04-13 13:15 ./slackware64/a/zoo-2.10_22-x86_64-2.txt
-rw-r--r-- 1 root root 56156 2018-04-13 13:15 ./slackware64/a/zoo-2.10_22-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:15 ./slackware64/a/zoo-2.10_22-x86_64-2.txz.asc
drwxr-xr-x 2 root root 20480 2019-08-29 22:38 ./slackware64/ap
drwxr-xr-x 2 root root 20480 2019-08-30 18:57 ./slackware64/ap
-rw-r--r-- 1 root root 291 2018-04-13 13:17 ./slackware64/ap/a2ps-4.14-x86_64-7.txt
-rw-r--r-- 1 root root 694880 2018-04-13 13:17 ./slackware64/ap/a2ps-4.14-x86_64-7.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:17 ./slackware64/ap/a2ps-4.14-x86_64-7.txz.asc
@ -1349,9 +1349,9 @@ drwxr-xr-x 2 root root 20480 2019-08-29 22:38 ./slackware64/ap
-rw-r--r-- 1 root root 483 2019-07-11 03:49 ./slackware64/ap/sqlite-3.29.0-x86_64-1.txt
-rw-r--r-- 1 root root 896608 2019-07-11 03:49 ./slackware64/ap/sqlite-3.29.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-07-11 03:49 ./slackware64/ap/sqlite-3.29.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 584 2019-07-22 18:36 ./slackware64/ap/squashfs-tools-20190721_95230e2-x86_64-1.txt
-rw-r--r-- 1 root root 137164 2019-07-22 18:36 ./slackware64/ap/squashfs-tools-20190721_95230e2-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-07-22 18:36 ./slackware64/ap/squashfs-tools-20190721_95230e2-x86_64-1.txz.asc
-rw-r--r-- 1 root root 584 2019-08-30 04:20 ./slackware64/ap/squashfs-tools-4.4-x86_64-1.txt
-rw-r--r-- 1 root root 135992 2019-08-30 04:20 ./slackware64/ap/squashfs-tools-4.4-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-08-30 04:20 ./slackware64/ap/squashfs-tools-4.4-x86_64-1.txz.asc
-rw-r--r-- 1 root root 442 2019-01-13 19:53 ./slackware64/ap/sudo-1.8.27-x86_64-1.txt
-rw-r--r-- 1 root root 744616 2019-01-13 19:53 ./slackware64/ap/sudo-1.8.27-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-01-13 19:53 ./slackware64/ap/sudo-1.8.27-x86_64-1.txz.asc
@ -2727,7 +2727,7 @@ drwxr-xr-x 2 root root 69632 2019-08-26 20:08 ./slackware64/l
-rw-r--r-- 1 root root 163 2019-08-21 04:34 ./slackware64/l/gsl-2.6-x86_64-1.txz.asc
-rw-r--r-- 1 root root 607 2019-04-19 18:39 ./slackware64/l/gst-plugins-base-1.16.0-x86_64-1.txt
-rw-r--r-- 1 root root 2566516 2019-04-19 18:39 ./slackware64/l/gst-plugins-base-1.16.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-04-19 18:39 ./slackware64/l/gst-plugins-base-1.16.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 163 2019-04-19 18:39 ./slackware64/l/gst-plugins-base-1.16.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 622 2018-04-14 22:32 ./slackware64/l/gst-plugins-base0-0.10.36-x86_64-3.txt
-rw-r--r-- 1 root root 1357928 2018-04-14 22:32 ./slackware64/l/gst-plugins-base0-0.10.36-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-04-14 22:32 ./slackware64/l/gst-plugins-base0-0.10.36-x86_64-3.txz.asc
@ -3423,7 +3423,7 @@ drwxr-xr-x 2 root root 69632 2019-08-26 20:08 ./slackware64/l
-rw-r--r-- 1 root root 463 2019-08-21 04:36 ./slackware64/l/zstd-1.4.3-x86_64-1.txt
-rw-r--r-- 1 root root 400628 2019-08-21 04:36 ./slackware64/l/zstd-1.4.3-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-08-21 04:36 ./slackware64/l/zstd-1.4.3-x86_64-1.txz.asc
drwxr-xr-x 2 root root 36864 2019-08-29 22:38 ./slackware64/n
drwxr-xr-x 2 root root 36864 2019-08-30 18:57 ./slackware64/n
-rw-r--r-- 1 root root 357 2019-07-05 18:51 ./slackware64/n/ModemManager-1.10.4-x86_64-1.txt
-rw-r--r-- 1 root root 1697584 2019-07-05 18:51 ./slackware64/n/ModemManager-1.10.4-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-07-05 18:51 ./slackware64/n/ModemManager-1.10.4-x86_64-1.txz.asc
@ -3558,9 +3558,9 @@ drwxr-xr-x 2 root root 36864 2019-08-29 22:38 ./slackware64/n
-rw-r--r-- 1 root root 532 2010-05-03 03:32 ./slackware64/n/ipw2200-fw-3.1-fw-1.txt
-rw-r--r-- 1 root root 118824 2010-05-03 03:32 ./slackware64/n/ipw2200-fw-3.1-fw-1.txz
-rw-r--r-- 1 root root 198 2010-05-03 03:32 ./slackware64/n/ipw2200-fw-3.1-fw-1.txz.asc
-rw-r--r-- 1 root root 331 2019-06-29 17:56 ./slackware64/n/irssi-1.2.1-x86_64-1.txt
-rw-r--r-- 1 root root 651960 2019-06-29 17:56 ./slackware64/n/irssi-1.2.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-06-29 17:56 ./slackware64/n/irssi-1.2.1-x86_64-1.txz.asc
-rw-r--r-- 1 root root 331 2019-08-30 18:30 ./slackware64/n/irssi-1.2.2-x86_64-1.txt
-rw-r--r-- 1 root root 652428 2019-08-30 18:30 ./slackware64/n/irssi-1.2.2-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-08-30 18:30 ./slackware64/n/irssi-1.2.2-x86_64-1.txz.asc
-rw-r--r-- 1 root root 422 2019-08-06 02:42 ./slackware64/n/iw-5.3-x86_64-1.txt
-rw-r--r-- 1 root root 80980 2019-08-06 02:42 ./slackware64/n/iw-5.3-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-08-06 02:42 ./slackware64/n/iw-5.3-x86_64-1.txz.asc
@ -3903,7 +3903,7 @@ drwxr-xr-x 2 root root 4096 2019-07-12 18:59 ./slackware64/tcl
-rw-r--r-- 1 root root 227 2018-11-24 19:32 ./slackware64/tcl/tk-8.6.9.1-x86_64-1.txt
-rw-r--r-- 1 root root 1771556 2018-11-24 19:32 ./slackware64/tcl/tk-8.6.9.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-11-24 19:32 ./slackware64/tcl/tk-8.6.9.1-x86_64-1.txz.asc
drwxr-xr-x 2 root root 65536 2019-08-26 20:09 ./slackware64/x
drwxr-xr-x 2 root root 65536 2019-08-30 18:57 ./slackware64/x
-rw-r--r-- 1 root root 257 2018-04-13 16:03 ./slackware64/x/anthy-9100h-x86_64-2.txt
-rw-r--r-- 1 root root 5074404 2018-04-13 16:03 ./slackware64/x/anthy-9100h-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 16:03 ./slackware64/x/anthy-9100h-x86_64-2.txz.asc
@ -4233,9 +4233,9 @@ drwxr-xr-x 2 root root 65536 2019-08-26 20:09 ./slackware64/x
-rw-r--r-- 1 root root 294 2019-07-08 20:13 ./slackware64/x/libva-utils-2.5.0-x86_64-1.txt
-rw-r--r-- 1 root root 427956 2019-07-08 20:13 ./slackware64/x/libva-utils-2.5.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-07-08 20:13 ./slackware64/x/libva-utils-2.5.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 500 2019-03-01 19:17 ./slackware64/x/libvdpau-1.2-x86_64-1.txt
-rw-r--r-- 1 root root 56068 2019-03-01 19:17 ./slackware64/x/libvdpau-1.2-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-03-01 19:17 ./slackware64/x/libvdpau-1.2-x86_64-1.txz.asc
-rw-r--r-- 1 root root 500 2019-08-30 18:36 ./slackware64/x/libvdpau-1.3-x86_64-1.txt
-rw-r--r-- 1 root root 55728 2019-08-30 18:36 ./slackware64/x/libvdpau-1.3-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-08-30 18:36 ./slackware64/x/libvdpau-1.3-x86_64-1.txz.asc
-rw-r--r-- 1 root root 390 2019-04-12 21:00 ./slackware64/x/libwacom-0.33-x86_64-1.txt
-rw-r--r-- 1 root root 53104 2019-04-12 21:00 ./slackware64/x/libwacom-0.33-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-04-12 21:00 ./slackware64/x/libwacom-0.33-x86_64-1.txz.asc
@ -5007,11 +5007,11 @@ drwxr-xr-x 2 root root 4096 2019-02-17 23:51 ./slackware64/y
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag.ez
-rw-r--r-- 1 root root 14 2018-03-01 07:55 ./slackware64/y/tagfile
drwxr-xr-x 19 root root 4096 2019-08-29 22:42 ./source
-rw-r--r-- 1 root root 470324 2019-08-29 22:42 ./source/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2019-08-29 22:42 ./source/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 663412 2019-08-29 22:42 ./source/FILE_LIST
-rw-r--r-- 1 root root 16083254 2019-08-29 22:42 ./source/MANIFEST.bz2
drwxr-xr-x 19 root root 4096 2019-08-30 19:01 ./source
-rw-r--r-- 1 root root 469496 2019-08-30 19:01 ./source/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2019-08-30 19:01 ./source/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 662366 2019-08-30 19:00 ./source/FILE_LIST
-rw-r--r-- 1 root root 16088424 2019-08-30 19:00 ./source/MANIFEST.bz2
-rw-r--r-- 1 root root 1314 2006-10-02 04:40 ./source/README.TXT
drwxr-xr-x 111 root root 4096 2019-08-17 19:53 ./source/a
-rw-r--r-- 1 root root 1034 2019-05-04 17:56 ./source/a/FTBFSlog
@ -5052,7 +5052,7 @@ drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./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 2019-03-08 17:32 ./source/a/bash
drwxr-xr-x 2 root root 4096 2019-08-15 18:05 ./source/a/bash/bash-5.0-patches
drwxr-xr-x 2 root root 4096 2019-08-30 18:28 ./source/a/bash/bash-5.0-patches
-rw-r--r-- 1 root root 4133 2019-01-18 20:02 ./source/a/bash/bash-5.0-patches/bash50-001
-rw-r--r-- 1 root root 95 2019-01-18 20:02 ./source/a/bash/bash-5.0-patches/bash50-001.sig
-rw-r--r-- 1 root root 4380 2019-01-18 20:03 ./source/a/bash/bash-5.0-patches/bash50-002
@ -5071,6 +5071,10 @@ drwxr-xr-x 2 root root 4096 2019-08-15 18:05 ./source/a/bash/bash-5.0-patc
-rw-r--r-- 1 root root 95 2019-08-14 18:49 ./source/a/bash/bash-5.0-patches/bash50-008.sig
-rw-r--r-- 1 root root 1095 2019-08-14 18:49 ./source/a/bash/bash-5.0-patches/bash50-009
-rw-r--r-- 1 root root 95 2019-08-14 18:49 ./source/a/bash/bash-5.0-patches/bash50-009.sig
-rw-r--r-- 1 root root 6407 2019-08-29 15:10 ./source/a/bash/bash-5.0-patches/bash50-010
-rw-r--r-- 1 root root 95 2019-08-29 15:10 ./source/a/bash/bash-5.0-patches/bash50-010.sig
-rw-r--r-- 1 root root 1870 2019-08-29 15:10 ./source/a/bash/bash-5.0-patches/bash50-011
-rw-r--r-- 1 root root 95 2019-08-29 15:10 ./source/a/bash/bash-5.0-patches/bash50-011.sig
-rw-r--r-- 1 root root 5988202 2019-01-07 14:13 ./source/a/bash/bash-5.0.tar.lz
-rwxr-xr-x 1 root root 6188 2019-03-19 19:22 ./source/a/bash/bash.SlackBuild
-rw-r--r-- 1 root root 631 2018-03-29 01:12 ./source/a/bash/bash_manpages.patch.gz
@ -5268,24 +5272,11 @@ drwxr-xr-x 2 root root 4096 2019-05-17 18:11 ./source/a/file
-rw-r--r-- 1 root root 214 2005-09-07 03:59 ./source/a/file/file.zisofs.magic.gz
-rw-r--r-- 1 root root 233 2015-04-14 20:30 ./source/a/file/recompile_magic.mgc.sh.gz
-rw-r--r-- 1 root root 723 2018-02-27 06:13 ./source/a/file/slack-desc
drwxr-xr-x 3 root root 4096 2018-09-18 22:04 ./source/a/findutils
-rw-r--r-- 1 root root 1792415 2015-12-28 21:53 ./source/a/findutils/findutils-4.6.0.tar.lz
-rwxr-xr-x 1 root root 5329 2018-09-18 22:04 ./source/a/findutils/findutils.SlackBuild
drwxr-xr-x 2 root root 4096 2019-08-30 18:23 ./source/a/findutils
-rw-r--r-- 1 root root 1887433 2019-08-29 20:06 ./source/a/findutils/findutils-4.7.0.tar.lz
-rwxr-xr-x 1 root root 4379 2019-08-30 18:14 ./source/a/findutils/findutils.SlackBuild
-rw-r--r-- 1 root root 186 2009-02-21 21:50 ./source/a/findutils/findutils.no.default.options.warnings.diff.gz
-rw-r--r-- 1 root root 339 2018-08-16 20:04 ./source/a/findutils/findutils.nolocate.diff.gz
drwxr-xr-x 2 root root 4096 2018-08-19 19:28 ./source/a/findutils/patches
-rw-r--r-- 1 root root 2026 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.4.2-xautofs.patch.gz
-rw-r--r-- 1 root root 844 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.5.13-warnings.patch.gz
-rw-r--r-- 1 root root 2431 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.5.15-no-locate.patch.gz
-rw-r--r-- 1 root root 3211 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.6.0-exec-args.patch.gz
-rw-r--r-- 1 root root 9633 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.6.0-fts-update.patch.gz
-rw-r--r-- 1 root root 1970 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.6.0-gnulib-fflush.patch.gz
-rw-r--r-- 1 root root 1481 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.6.0-gnulib-makedev.patch.gz
-rw-r--r-- 1 root root 2999 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.6.0-internal-noop.patch.gz
-rw-r--r-- 1 root root 1351 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.6.0-leaf-opt.patch.gz
-rw-r--r-- 1 root root 813 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.6.0-man-exec.patch.gz
-rw-r--r-- 1 root root 721 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.6.0-mbrtowc-tests.patch.gz
-rw-r--r-- 1 root root 557 2018-07-13 04:43 ./source/a/findutils/patches/findutils-4.6.0-test-lock.patch.gz
-rw-r--r-- 1 root root 1045 2019-08-30 18:23 ./source/a/findutils/findutils.nolocate.diff.gz
-rw-r--r-- 1 root root 823 2018-02-27 06:13 ./source/a/findutils/slack-desc
drwxr-xr-x 2 root root 4096 2018-09-18 23:48 ./source/a/floppy
-rw-r--r-- 1 root root 8893 2008-10-27 19:57 ./source/a/floppy/fdutils-5.5-20081027.diff.gz
@ -5648,24 +5639,24 @@ drwxr-xr-x 2 root root 4096 2008-09-12 04:35 ./source/a/pcmciautils/config
-rw-r--r-- 1 root root 926 2007-03-16 20:00 ./source/a/pcmciautils/config/60-pcmcia.rules
-rw-r--r-- 1 root root 2577 2008-03-05 03:14 ./source/a/pcmciautils/config/config.opts
-rwxr-xr-x 1 root root 1722 2007-03-16 21:09 ./source/a/pcmciautils/config/rc.pcmcia
-rw-r--r-- 1 root root 277 2009-04-14 04:38 ./source/a/pcmciautils/doinst.sh.gz
-rw-r--r-- 1 root root 819 2015-06-07 13:23 ./source/a/pcmciautils/pcmciautils-018.tar.sign
-rw-r--r-- 1 root root 42484 2015-06-07 13:23 ./source/a/pcmciautils/pcmciautils-018.tar.xz
-rwxr-xr-x 1 root root 4494 2018-09-18 20:57 ./source/a/pcmciautils/pcmciautils.SlackBuild
-rw-r--r-- 1 root root 910 2018-02-27 06:13 ./source/a/pcmciautils/slack-desc
drwxr-xr-x 4 root root 4096 2018-06-19 21:12 ./source/a/pkgtools
-rw-r--r-- 1 root root 984 2018-06-19 19:28 ./source/a/pkgtools/doinst.sh.gz
drwxr-xr-x 2 root root 4096 2018-07-09 19:21 ./source/a/pkgtools/manpages
-rw-r--r-- 1 root root 76636 2016-06-15 01:08 ./source/a/pkgtools/manpages-l10n.tar.xz
-rw-r--r-- 1 root root 1265 2018-06-19 19:28 ./source/a/pkgtools/manpages/explodepkg.8
-rw-r--r-- 1 root root 3554 2018-06-19 19:28 ./source/a/pkgtools/manpages/installpkg.8
-rw-r--r-- 1 root root 5702 2018-07-09 19:21 ./source/a/pkgtools/manpages/makepkg.8
-rw-r--r-- 1 root root 1401 2018-04-11 19:48 ./source/a/pkgtools/manpages/pkgdiff.8
-rw-r--r-- 1 root root 2518 2009-04-11 21:11 ./source/a/pkgtools/manpages/pkgtool.8
-rw-r--r-- 1 root root 3251 2018-06-19 19:28 ./source/a/pkgtools/manpages/removepkg.8
-rw-r--r-- 1 root root 2962 2018-06-08 19:56 ./source/a/pkgtools/manpages/upgradepkg.8
-rwxr-xr-x 1 root root 3742 2018-09-06 22:16 ./source/a/pkgtools/pkgtools.SlackBuild
drwxr-xr-x 2 root root 4096 2018-09-06 22:16 ./source/a/pkgtools/scripts
-rw-r--r-- 1 root root 277 2009-04-14 04:38 ./source/a/pcmciautils/doinst.sh.gz
-rw-r--r-- 1 root root 819 2015-06-07 13:23 ./source/a/pcmciautils/pcmciautils-018.tar.sign
-rw-r--r-- 1 root root 42484 2015-06-07 13:23 ./source/a/pcmciautils/pcmciautils-018.tar.xz
-rwxr-xr-x 1 root root 4494 2018-09-18 20:57 ./source/a/pcmciautils/pcmciautils.SlackBuild
-rw-r--r-- 1 root root 910 2018-02-27 06:13 ./source/a/pcmciautils/slack-desc
drwxr-xr-x 4 root root 4096 2018-06-19 21:12 ./source/a/pkgtools
-rw-r--r-- 1 root root 984 2018-06-19 19:28 ./source/a/pkgtools/doinst.sh.gz
drwxr-xr-x 2 root root 4096 2018-07-09 19:21 ./source/a/pkgtools/manpages
-rw-r--r-- 1 root root 76636 2016-06-15 01:08 ./source/a/pkgtools/manpages-l10n.tar.xz
-rw-r--r-- 1 root root 1265 2018-06-19 19:28 ./source/a/pkgtools/manpages/explodepkg.8
-rw-r--r-- 1 root root 3554 2018-06-19 19:28 ./source/a/pkgtools/manpages/installpkg.8
-rw-r--r-- 1 root root 5702 2018-07-09 19:21 ./source/a/pkgtools/manpages/makepkg.8
-rw-r--r-- 1 root root 1401 2018-04-11 19:48 ./source/a/pkgtools/manpages/pkgdiff.8
-rw-r--r-- 1 root root 2518 2009-04-11 21:11 ./source/a/pkgtools/manpages/pkgtool.8
-rw-r--r-- 1 root root 3251 2018-06-19 19:28 ./source/a/pkgtools/manpages/removepkg.8
-rw-r--r-- 1 root root 2962 2018-06-08 19:56 ./source/a/pkgtools/manpages/upgradepkg.8
-rwxr-xr-x 1 root root 3742 2018-09-06 22:16 ./source/a/pkgtools/pkgtools.SlackBuild
drwxr-xr-x 2 root root 4096 2018-09-06 22:16 ./source/a/pkgtools/scripts
-rw-r--r-- 1 root root 3608 2018-06-19 19:28 ./source/a/pkgtools/scripts/explodepkg
-rw-r--r-- 1 root root 26417 2018-09-06 22:14 ./source/a/pkgtools/scripts/installpkg
-rw-r--r-- 1 root root 13672 2018-06-19 19:28 ./source/a/pkgtools/scripts/makebootdisk
@ -6415,10 +6406,10 @@ drwxr-xr-x 2 root root 4096 2019-07-11 03:48 ./source/ap/sqlite
-rw-r--r-- 1 root root 937 2018-11-29 19:15 ./source/ap/sqlite/slack-desc
-rw-r--r-- 1 root root 6771951 2019-07-10 20:14 ./source/ap/sqlite/sqlite-src-3290000.tar.lz
-rwxr-xr-x 1 root root 6251 2019-04-17 19:25 ./source/ap/sqlite/sqlite.SlackBuild
drwxr-xr-x 2 root root 4096 2019-07-22 18:35 ./source/ap/squashfs-tools
drwxr-xr-x 2 root root 4096 2019-08-30 04:19 ./source/ap/squashfs-tools
-rwxr-xr-x 1 root root 1939 2018-09-13 21:02 ./source/ap/squashfs-tools/get-squashfs-tools.sh
-rw-r--r-- 1 root root 1078 2018-09-13 21:00 ./source/ap/squashfs-tools/slack-desc
-rw-r--r-- 1 root root 165665 2019-07-22 18:34 ./source/ap/squashfs-tools/squashfs-tools-20190721_95230e2.tar.lz
-rw-r--r-- 1 root root 169349 2019-08-30 04:19 ./source/ap/squashfs-tools/squashfs-tools-4.4.tar.lz
-rwxr-xr-- 1 root root 3850 2018-09-19 00:04 ./source/ap/squashfs-tools/squashfs-tools.SlackBuild
-rw-r--r-- 1 root root 237 2018-09-19 00:03 ./source/ap/squashfs-tools/squashfs-tools.glibc228.diff.gz
drwxr-xr-x 2 root root 4096 2019-01-13 19:52 ./source/ap/sudo
@ -10190,10 +10181,10 @@ drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/n/ipw2100-fw
drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/n/ipw2200-fw
-rw-r--r-- 1 root root 118152 2010-05-03 02:47 ./source/n/ipw2200-fw/ipw2200-fw-3.1.tar.xz
-rwxr-xr-x 1 root root 3122 2018-04-23 17:20 ./source/n/ipw2200-fw/ipw2200-fw.SlackBuild
drwxr-xr-x 2 root root 4096 2019-06-29 17:55 ./source/n/irssi
drwxr-xr-x 2 root root 4096 2019-08-30 18:29 ./source/n/irssi
-rw-r--r-- 1 root root 264 2009-07-29 00:34 ./source/n/irssi/doinst.sh.gz
-rw-r--r-- 1 root root 1140380 2019-06-28 19:53 ./source/n/irssi/irssi-1.2.1.tar.xz
-rw-r--r-- 1 root root 195 2019-06-28 19:53 ./source/n/irssi/irssi-1.2.1.tar.xz.asc
-rw-r--r-- 1 root root 1140844 2019-08-29 15:38 ./source/n/irssi/irssi-1.2.2.tar.xz
-rw-r--r-- 1 root root 195 2019-08-29 15:38 ./source/n/irssi/irssi-1.2.2.tar.xz.asc
-rwxr-xr-x 1 root root 4790 2019-06-29 17:55 ./source/n/irssi/irssi.SlackBuild
-rw-r--r-- 1 root root 784 2018-02-27 06:13 ./source/n/irssi/slack-desc
drwxr-xr-x 2 root root 4096 2019-08-06 02:41 ./source/n/iw
@ -11063,10 +11054,10 @@ drwxr-xr-x 2 root root 4096 2019-07-08 20:13 ./source/x/libva-utils
-rwxr-xr-x 1 root root 3477 2018-09-18 22:04 ./source/x/libva/libva.SlackBuild
-rw-r--r-- 1 root root 31 2018-11-08 00:15 ./source/x/libva/libva.url
-rw-r--r-- 1 root root 908 2018-02-27 06:13 ./source/x/libva/slack-desc
drwxr-xr-x 3 root root 4096 2019-03-01 19:17 ./source/x/libvdpau
drwxr-xr-x 3 root root 4096 2019-08-30 18:35 ./source/x/libvdpau
-rw-r--r-- 1 root root 290 2014-05-30 17:35 ./source/x/libvdpau/doinst.sh.gz
-rw-r--r-- 1 root root 374642 2019-02-28 18:50 ./source/x/libvdpau/libvdpau-1.2.tar.lz
-rwxr--r-- 1 root root 3836 2019-03-01 19:17 ./source/x/libvdpau/libvdpau.SlackBuild
-rw-r--r-- 1 root root 131807 2019-08-30 18:34 ./source/x/libvdpau/libvdpau-1.3.tar.lz
-rwxr--r-- 1 root root 3985 2019-08-30 18:36 ./source/x/libvdpau/libvdpau.SlackBuild
-rw-r--r-- 1 root root 51 2019-03-01 19:16 ./source/x/libvdpau/libvdpau.url
drwxr-xr-x 2 root root 4096 2015-03-14 21:20 ./source/x/libvdpau/profile.d
-rwxr--r-- 1 root root 526 2015-03-14 21:20 ./source/x/libvdpau/profile.d/vdpau.csh
@ -12422,24 +12413,24 @@ drwxr-xr-x 2 root root 4096 2019-07-26 04:33 ./source/xap/gkrellm
drwxr-xr-x 2 root root 4096 2019-04-03 20:41 ./source/xap/gnuchess
-rw-r--r-- 1 root root 142963 2004-01-19 11:50 ./source/xap/gnuchess/Sjeng-Free-11.2.tar.bz2
-rw-r--r-- 1 root root 652 2004-10-27 05:47 ./source/xap/gnuchess/chess.png
-rw-r--r-- 1 root root 271 2013-03-20 02:41 ./source/xap/gnuchess/doinst.sh.gz
-rw-r--r-- 1 root root 462386 2008-02-22 15:57 ./source/xap/gnuchess/eboard-1.1.1.tar.bz2
-rw-r--r-- 1 root root 458 2010-02-20 03:54 ./source/xap/gnuchess/eboard.assert.diff.gz
-rw-r--r-- 1 root root 224 2004-10-27 06:07 ./source/xap/gnuchess/eboard.desktop
-rw-r--r-- 1 root root 221 2013-03-20 01:49 ./source/xap/gnuchess/eboard.ldl.diff.gz
-rw-r--r-- 1 root root 336 2015-03-23 16:11 ./source/xap/gnuchess/eboard.png16.diff.gz
-rw-r--r-- 1 root root 518760 2017-07-24 23:16 ./source/xap/gnuchess/gnuchess-6.2.5.tar.xz
-rwxr-xr-x 1 root root 6366 2019-04-03 20:41 ./source/xap/gnuchess/gnuchess.SlackBuild
-rw-r--r-- 1 root root 792 2018-02-27 06:13 ./source/xap/gnuchess/slack-desc
-rw-r--r-- 1 root root 2731760 2016-08-01 03:55 ./source/xap/gnuchess/xboard-4.9.1.tar.xz
-rw-r--r-- 1 root root 269 2015-03-20 18:35 ./source/xap/gnuchess/xboard.conf.diff.gz
drwxr-xr-x 2 root root 4096 2019-05-29 18:28 ./source/xap/gnuplot
-rw-r--r-- 1 root root 4247684 2019-05-29 04:21 ./source/xap/gnuplot/gnuplot-5.2.7.tar.lz
-rwxr-xr-x 1 root root 5230 2018-10-30 21:08 ./source/xap/gnuplot/gnuplot.SlackBuild
-rw-r--r-- 1 root root 232 2017-09-30 18:21 ./source/xap/gnuplot/gnuplot.fix.info.generation.diff.gz
-rw-r--r-- 1 root root 24 2018-06-05 04:25 ./source/xap/gnuplot/gnuplot.url
-rw-r--r-- 1 root root 1099 2018-02-27 06:13 ./source/xap/gnuplot/slack-desc
drwxr-xr-x 2 root root 4096 2019-05-30 18:46 ./source/xap/gparted
-rw-r--r-- 1 root root 271 2013-03-20 02:41 ./source/xap/gnuchess/doinst.sh.gz
-rw-r--r-- 1 root root 462386 2008-02-22 15:57 ./source/xap/gnuchess/eboard-1.1.1.tar.bz2
-rw-r--r-- 1 root root 458 2010-02-20 03:54 ./source/xap/gnuchess/eboard.assert.diff.gz
-rw-r--r-- 1 root root 224 2004-10-27 06:07 ./source/xap/gnuchess/eboard.desktop
-rw-r--r-- 1 root root 221 2013-03-20 01:49 ./source/xap/gnuchess/eboard.ldl.diff.gz
-rw-r--r-- 1 root root 336 2015-03-23 16:11 ./source/xap/gnuchess/eboard.png16.diff.gz
-rw-r--r-- 1 root root 518760 2017-07-24 23:16 ./source/xap/gnuchess/gnuchess-6.2.5.tar.xz
-rwxr-xr-x 1 root root 6366 2019-04-03 20:41 ./source/xap/gnuchess/gnuchess.SlackBuild
-rw-r--r-- 1 root root 792 2018-02-27 06:13 ./source/xap/gnuchess/slack-desc
-rw-r--r-- 1 root root 2731760 2016-08-01 03:55 ./source/xap/gnuchess/xboard-4.9.1.tar.xz
-rw-r--r-- 1 root root 269 2015-03-20 18:35 ./source/xap/gnuchess/xboard.conf.diff.gz
drwxr-xr-x 2 root root 4096 2019-05-29 18:28 ./source/xap/gnuplot
-rw-r--r-- 1 root root 4247684 2019-05-29 04:21 ./source/xap/gnuplot/gnuplot-5.2.7.tar.lz
-rwxr-xr-x 1 root root 5230 2018-10-30 21:08 ./source/xap/gnuplot/gnuplot.SlackBuild
-rw-r--r-- 1 root root 232 2017-09-30 18:21 ./source/xap/gnuplot/gnuplot.fix.info.generation.diff.gz
-rw-r--r-- 1 root root 24 2018-06-05 04:25 ./source/xap/gnuplot/gnuplot.url
-rw-r--r-- 1 root root 1099 2018-02-27 06:13 ./source/xap/gnuplot/slack-desc
drwxr-xr-x 2 root root 4096 2019-05-30 18:46 ./source/xap/gparted
-rw-r--r-- 1 root root 121 2016-02-03 19:48 ./source/xap/gparted/doinst.sh.gz
-rw-r--r-- 1 root root 2283660 2019-05-29 16:18 ./source/xap/gparted/gparted-1.0.0.tar.lz
-rwxr-xr-x 1 root root 4124 2018-09-18 22:04 ./source/xap/gparted/gparted.SlackBuild

View file

@ -263,18 +263,6 @@ gzip ./source/a/dcron/doinst.sh
gzip ./source/a/dcron/run-parts
gzip ./source/a/patch/0001-Refuse-to-apply-ed-scripts-by-default.patch
gzip ./source/a/pcmciautils/doinst.sh
gzip ./source/a/findutils/patches/findutils-4.6.0-fts-update.patch
gzip ./source/a/findutils/patches/findutils-4.6.0-gnulib-makedev.patch
gzip ./source/a/findutils/patches/findutils-4.6.0-leaf-opt.patch
gzip ./source/a/findutils/patches/findutils-4.6.0-man-exec.patch
gzip ./source/a/findutils/patches/findutils-4.6.0-exec-args.patch
gzip ./source/a/findutils/patches/findutils-4.5.13-warnings.patch
gzip ./source/a/findutils/patches/findutils-4.6.0-gnulib-fflush.patch
gzip ./source/a/findutils/patches/findutils-4.5.15-no-locate.patch
gzip ./source/a/findutils/patches/findutils-4.6.0-mbrtowc-tests.patch
gzip ./source/a/findutils/patches/findutils-4.4.2-xautofs.patch
gzip ./source/a/findutils/patches/findutils-4.6.0-test-lock.patch
gzip ./source/a/findutils/patches/findutils-4.6.0-internal-noop.patch
gzip ./source/a/findutils/findutils.no.default.options.warnings.diff
gzip ./source/a/findutils/findutils.nolocate.diff
gzip ./source/a/kbd/sources/kbd-1.15-unicode_start.patch

View file

@ -0,0 +1,172 @@
BASH PATCH REPORT
=================
Bash-Release: 5.0
Patch-ID: bash50-010
Bug-Reported-by: Thorsten Glaser <tg@mirbsd.de>
Bug-Reference-ID: <156622962831.19438.16374961114836556294.reportbug@tglase.lan.tarent.de>
Bug-Reference-URL: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=935115
Bug-Description:
Bash-5.0 changed the way assignment statements preceding special builtins
and shell functions were handled in posix mode. They automatically created
or modified global variables instead of modifying existing local variables
as in bash-4.4.
The bash-4.4 posix-mode semantics were buggy, and resulted in creating
local variables where they were not intended and modifying global variables
and local variables simultaneously.
The bash-5.0 changes were intended to fix this issue, but did not preserve
enough backwards compatibility. The posix standard also changed what it
required in these cases, so bash-5.0 is not bound by the strict conformance
requirements that existed in previous issues of the standard.
This patch modifies the bash-5.0 posix mode behavior in an effort to restore
some backwards compatibility and rationalize the behavior in the presence of
local variables. It
1. Changes the assignment semantics to be more similar to standalone assignment
statements: assignments preceding a function call or special builtin while
executing in a shell function will modify the value of a local variable
with the same name for the duration of the function's execution;
2. Changes assignments preceding shell function calls or special builtins
from within a shell function to no longer create or modify global variables
in the presence of a local variable with the same name;
3. Assignment statements preceding a shell function call or special builtin
at the global scope continue to modify the (global) calling environment,
but are unaffected by assignments preceding function calls or special
builtins within a function, as described in item 2. This is also similar
to the behavior of a standalone assignment statement.
Patch (apply with `patch -p0'):
*** ../bash-5.0-patched/variables.c 2018-12-18 11:07:21.000000000 -0500
--- variables.c 2019-08-22 10:53:44.000000000 -0400
***************
*** 4461,4467 ****
/* Take a variable from an assignment statement preceding a posix special
! builtin (including `return') and create a global variable from it. This
! is called from merge_temporary_env, which is only called when in posix
! mode. */
static void
push_posix_temp_var (data)
--- 4461,4467 ----
/* Take a variable from an assignment statement preceding a posix special
! builtin (including `return') and create a variable from it as if a
! standalone assignment statement had been performed. This is called from
! merge_temporary_env, which is only called when in posix mode. */
static void
push_posix_temp_var (data)
***************
*** 4473,4486 ****
var = (SHELL_VAR *)data;
! binding_table = global_variables->table;
! if (binding_table == 0)
! binding_table = global_variables->table = hash_create (VARIABLES_HASH_BUCKETS);
!
! v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP);
/* global variables are no longer temporary and don't need propagating. */
! var->attributes &= ~(att_tempvar|att_propagate);
if (v)
! v->attributes |= var->attributes;
if (find_special_var (var->name) >= 0)
--- 4473,4497 ----
var = (SHELL_VAR *)data;
! /* Just like do_assignment_internal(). This makes assignments preceding
! special builtins act like standalone assignment statements when in
! posix mode, satisfying the posix requirement that this affect the
! "current execution environment." */
! v = bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONGJMP);
!
! /* If this modifies an existing local variable, v->context will be non-zero.
! If it comes back with v->context == 0, we bound at the global context.
! Set binding_table appropriately. It doesn't matter whether it's correct
! if the variable is local, only that it's not global_variables->table */
! binding_table = v->context ? shell_variables->table : global_variables->table;
/* global variables are no longer temporary and don't need propagating. */
! if (binding_table == global_variables->table)
! var->attributes &= ~(att_tempvar|att_propagate);
!
if (v)
! {
! v->attributes |= var->attributes;
! v->attributes &= ~att_tempvar; /* not a temp var now */
! }
if (find_special_var (var->name) >= 0)
***************
*** 4576,4587 ****
{
int i;
tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
tempvar_list[tvlist_ind = 0] = 0;
!
! hash_flush (temporary_env, pushf);
! hash_dispose (temporary_env);
temporary_env = (HASH_TABLE *)NULL;
tempvar_list[tvlist_ind] = 0;
--- 4587,4601 ----
{
int i;
+ HASH_TABLE *disposer;
tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
tempvar_list[tvlist_ind = 0] = 0;
!
! disposer = temporary_env;
temporary_env = (HASH_TABLE *)NULL;
+ hash_flush (disposer, pushf);
+ hash_dispose (disposer);
+
tempvar_list[tvlist_ind] = 0;
*** ../bash-5.0-patched/tests/varenv.right 2018-12-17 15:39:48.000000000 -0500
--- tests/varenv.right 2019-08-22 16:05:25.000000000 -0400
***************
*** 147,153 ****
outside: declare -- var="one"
inside: declare -x var="value"
! outside: declare -x var="value"
! inside: declare -- var="local"
! outside: declare -x var="global"
foo=<unset> environment foo=
foo=foo environment foo=foo
--- 147,153 ----
outside: declare -- var="one"
inside: declare -x var="value"
! outside: declare -- var="outside"
! inside: declare -x var="global"
! outside: declare -- var="outside"
foo=<unset> environment foo=
foo=foo environment foo=foo
*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 9
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 10
#endif /* _PATCHLEVEL_H_ */

View file

@ -0,0 +1,59 @@
BASH PATCH REPORT
=================
Bash-Release: 5.0
Patch-ID: bash50-011
Bug-Reported-by: Matt Whitlock
Bug-Reference-ID:
Bug-Reference-URL: https://savannah.gnu.org/support/?109671
Bug-Description:
The conditional command did not perform appropriate quoted null character
removal on its arguments, causing syntax errors and attempts to stat
invalid pathnames.
Patch (apply with `patch -p0'):
*** ../bash-5.0-patched/subst.c 2018-12-22 17:43:37.000000000 -0500
--- subst.c 2019-04-14 13:25:41.000000000 -0400
***************
*** 3626,3630 ****
SPECIAL is 2, this is an rhs argument for the =~ operator, and should
be quoted appropriately for regcomp/regexec. The caller is responsible
! for removing the backslashes if the unquoted word is needed later. */
char *
cond_expand_word (w, special)
--- 3642,3648 ----
SPECIAL is 2, this is an rhs argument for the =~ operator, and should
be quoted appropriately for regcomp/regexec. The caller is responsible
! for removing the backslashes if the unquoted word is needed later. In
! any case, since we don't perform word splitting, we need to do quoted
! null character removal. */
char *
cond_expand_word (w, special)
***************
*** 3647,3650 ****
--- 3665,3670 ----
if (special == 0) /* LHS */
{
+ if (l->word)
+ word_list_remove_quoted_nulls (l);
dequote_list (l);
r = string_list (l);
*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 10
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 11
#endif /* _PATCHLEVEL_H_ */

View file

@ -79,19 +79,8 @@ find . \
# like to be yelled at.
zcat $CWD/findutils.no.default.options.warnings.diff.gz | patch -p1 --verbose || exit 1
# Add patches from Fedora to finally make findutils-4.6.0 usable:
zcat $CWD/patches/findutils-4.4.2-xautofs.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.5.13-warnings.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.5.15-no-locate.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.6.0-exec-args.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.6.0-fts-update.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.6.0-gnulib-fflush.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.6.0-gnulib-makedev.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.6.0-internal-noop.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.6.0-leaf-opt.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.6.0-man-exec.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.6.0-mbrtowc-tests.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/patches/findutils-4.6.0-test-lock.patch.gz | patch -p1 --verbose || exit 1
# Don't include updatedb, locate, frcode:
zcat $CWD/findutils.nolocate.diff.gz | patch -p1 --verbose || exit 1
autoreconf -vif
@ -104,6 +93,7 @@ CFLAGS="$SLKCFLAGS" \
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
make install-man DESTDIR=$PKG || exit 1
# Now there is only FTS find, but make the old symlink in case any scripts
# out there are using it:

View file

@ -1,22 +1,82 @@
--- ./Makefile.in.orig 2015-12-28 15:31:15.000000000 -0600
+++ ./Makefile.in 2018-08-16 15:04:37.525329502 -0500
@@ -1639,7 +1639,7 @@
--- ./configure.ac.orig 2019-06-23 04:00:40.000000000 -0500
+++ ./configure.ac 2019-08-30 13:22:48.133114947 -0500
@@ -94,7 +94,6 @@
dnl for gnulib
gl_EARLY
-AC_PROG_LN_S
AC_PROG_INSTALL
AC_CHECK_TOOLS([AR], [ar])
AC_CHECK_TOOLS([RANLIB], [ranlib], [:])
@@ -309,8 +308,6 @@
gl/Makefile
gl/lib/Makefile
lib/Makefile
-locate/Makefile
-locate/testsuite/Makefile
m4/Makefile
po/Makefile.in
po/Makefile
--- ./doc/find.texi.orig 2019-08-30 13:21:12.626110869 -0500
+++ ./doc/find.texi 2019-08-30 13:22:56.395115300 -0500
@@ -7,7 +7,6 @@
@c %**end of header
@include version.texi
-@include dblocation.texi
@iftex
@finalout
--- ./doc/Makefile.am.orig 2019-06-23 04:00:40.000000000 -0500
+++ ./doc/Makefile.am 2019-08-30 13:21:04.629110527 -0500
@@ -16,11 +16,9 @@
info_TEXINFOS = find.texi find-maint.texi
find_TEXINFOS = perm.texi parse-datetime.texi regexprops.texi fdl.texi
-BUILT_SOURCES = dblocation.texi
-nodist_find_TEXINFOS = dblocation.texi
find_maint_TEXINFOS = fdl.texi
MOSTLYCLEANFILES = find.cps
-CLEANFILES = find.txt find_mono.html findutils.texi_html_node.tar.gz dblocation.texi \
+CLEANFILES = find.txt find_mono.html findutils.texi_html_node.tar.gz \
find_mono.html findutils.texi_html_node.tar.gz \
find-info.tar.gz find.texi find.texi.tar.gz \
find.txt tmp-doc-install find_mono.html.gz
@@ -72,10 +70,6 @@
findutils.texi_html_node.tar.gz: find.html
tar zcf $@ $<
-
-dblocation.texi: ../locate/dblocation.texi
- $(LN_S) ../locate/dblocation.texi $@
-
find-info.tar.gz:
$(MKDIR_P) tmp-doc-install/info
$(MAKE) $(AM_MAKEFLAGS) \
--- ./Makefile.in.orig 2019-08-29 14:15:43.000000000 -0500
+++ ./Makefile.in 2019-08-30 13:18:16.959103368 -0500
@@ -1955,11 +1955,11 @@
DISTCLEANFILES = tool-versions.txt
# "tests" is the gnulib unit test dir.
-SUBDIRS = gl tests build-aux lib find xargs locate doc po m4
+SUBDIRS = gl tests build-aux lib find xargs doc po m4
# "gnulib-tests" is the gnulib unit test dir.
-SUBDIRS = gl build-aux lib find xargs locate doc po m4 gnulib-tests
+SUBDIRS = gl build-aux lib find xargs doc po m4 gnulib-tests
ALL_RECURSIVE_TARGETS = check-root
ACLOCAL_AMFLAGS = -I gl/m4 -I m4
TESTFILE_SUFFIXES = .exp .xo .xe .xi
all: config.h
--- ./Makefile.am.orig 2015-12-28 15:10:23.000000000 -0600
+++ ./Makefile.am 2018-08-16 15:04:25.998328424 -0500
@@ -9,7 +9,7 @@
-built_programs = find oldfind xargs frcode locate updatedb
+built_programs = find oldfind xargs
# Indirections required so that we'll still be able to know the
# complete list of our tests even if the user overrides TESTS
--- ./Makefile.am.orig 2019-06-23 04:00:40.000000000 -0500
+++ ./Makefile.am 2019-08-30 13:18:16.961103368 -0500
@@ -35,7 +35,7 @@
# "tests" is the gnulib unit test dir.
-SUBDIRS = gl tests build-aux lib find xargs locate doc po m4
+SUBDIRS = gl tests build-aux lib find xargs doc po m4
# "gnulib-tests" is the gnulib unit test dir.
-SUBDIRS = gl build-aux lib find xargs locate doc po m4 gnulib-tests
+SUBDIRS = gl build-aux lib find xargs doc po m4 gnulib-tests
ACLOCAL_AMFLAGS = -I gl/m4 -I m4
ALL_RECURSIVE_TARGETS =

View file

@ -1,132 +0,0 @@
From 17e470dc1acca4824b70328d733d5f99c12d0d65 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Wed, 11 May 2011 16:46:45 +0200
Subject: [PATCH 3/4] findutils-4.4.2-xautofs.patch
---
doc/find.texi | 4 ++++
find/defs.h | 3 +++
find/find.1 | 3 +++
find/ftsfind.c | 6 ++++++
find/parser.c | 11 ++++++++++-
find/util.c | 1 +
6 files changed, 27 insertions(+), 1 deletions(-)
diff --git a/doc/find.texi b/doc/find.texi
index c584298..9731b71 100644
--- a/doc/find.texi
+++ b/doc/find.texi
@@ -1446,6 +1446,10 @@ them.
There are two ways to avoid searching certain filesystems. One way is
to tell @code{find} to only search one filesystem:
+@deffn Option -xautofs
+Don't descend directories on autofs filesystems.
+@end deffn
+
@deffn Option -xdev
@deffnx Option -mount
Don't descend directories on other filesystems. These options are
diff --git a/find/defs.h b/find/defs.h
index 11d1d00..f95ce72 100644
--- a/find/defs.h
+++ b/find/defs.h
@@ -557,6 +557,9 @@ struct options
/* If true, don't cross filesystem boundaries. */
bool stay_on_filesystem;
+ /* If true, don't descend directories on autofs filesystems. */
+ bool bypass_autofs;
+
/* If true, we ignore the problem where we find that a directory entry
* no longer exists by the time we get around to processing it.
*/
diff --git a/find/find.1 b/find/find.1
index e851f82..a4799ff 100644
--- a/find/find.1
+++ b/find/find.1
@@ -520,6 +520,9 @@ to stat them; this gives a significant increase in search speed.
.IP "\-version, \-\-version"
Print the \fBfind\fR version number and exit.
+.IP \-xautofs
+Don't descend directories on autofs filesystems.
+
.IP \-xdev
Don't descend directories on other filesystems.
diff --git a/find/ftsfind.c b/find/ftsfind.c
index 9fdb8ef..bd7cc37 100644
--- a/find/ftsfind.c
+++ b/find/ftsfind.c
@@ -485,6 +485,12 @@ consider_visiting (FTS *p, FTSENT *ent)
}
}
+ if (options.bypass_autofs &&
+ 0 == strcmp ("autofs", filesystem_type (&statbuf, ent->fts_name)))
+ {
+ fts_set(p, ent, FTS_SKIP); /* descend no further */
+ }
+
if ( (ent->fts_info == FTS_D) && !options.do_dir_first )
{
/* this is the preorder visit, but user said -depth */
diff --git a/find/parser.c b/find/parser.c
index 52a1ef6..995aec3 100644
--- a/find/parser.c
+++ b/find/parser.c
@@ -146,6 +146,7 @@ static bool parse_user (const struct parser_table*, char *argv[], int *
static bool parse_version (const struct parser_table*, char *argv[], int *arg_ptr);
static bool parse_wholename (const struct parser_table*, char *argv[], int *arg_ptr);
static bool parse_xdev (const struct parser_table*, char *argv[], int *arg_ptr);
+static bool parse_xautofs (const struct parser_table*, char *argv[], int *arg_ptr);
static bool parse_ignore_race (const struct parser_table*, char *argv[], int *arg_ptr);
static bool parse_noignore_race (const struct parser_table*, char *argv[], int *arg_ptr);
static bool parse_warn (const struct parser_table*, char *argv[], int *arg_ptr);
@@ -306,6 +307,7 @@ static struct parser_table const parse_table[] =
PARSE_TEST_NP ("wholename", wholename), /* GNU, replaced -path, but anyway -path will soon be in POSIX */
{ARG_TEST, "writable", parse_accesscheck, pred_writable}, /* GNU, 4.3.0+ */
PARSE_OPTION ("xdev", xdev), /* POSIX */
+ PARSE_OPTION ("xautofs", xautofs),
PARSE_TEST ("xtype", xtype), /* GNU */
#ifdef UNIMPLEMENTED_UNIX
/* It's pretty ugly for find to know about archive formats.
@@ -1239,7 +1241,7 @@ operators (decreasing precedence; -and is implicit where no others are given):\n
positional options (always true): -daystart -follow -regextype\n\n\
normal options (always true, specified before other expressions):\n\
-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf\n\
- --version -xdev -ignore_readdir_race -noignore_readdir_race\n"));
+ --version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race\n"));
puts (_("\
tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N\n\
-cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME\n\
@@ -2683,6 +2685,13 @@ parse_xdev (const struct parser_table* entry, char **argv, int *arg_ptr)
}
static bool
+parse_xautofs (const struct parser_table* entry, char **argv, int *arg_ptr)
+{
+ options.bypass_autofs = true;
+ return parse_noop (entry, argv, arg_ptr);
+}
+
+static bool
parse_ignore_race (const struct parser_table* entry, char **argv, int *arg_ptr)
{
options.ignore_readdir_race = true;
diff --git a/find/util.c b/find/util.c
index 8577396..4d45f84 100644
--- a/find/util.c
+++ b/find/util.c
@@ -1017,6 +1017,7 @@ set_option_defaults (struct options *p)
p->full_days = false;
p->stay_on_filesystem = false;
+ p->bypass_autofs = false;
p->ignore_readdir_race = false;
if (p->posixly_correct)
--
1.7.4.4

View file

@ -1,53 +0,0 @@
From 690d4bd9f29a805999a3ce4651dac9585ccc9917 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Wed, 11 May 2011 16:46:57 +0200
Subject: [PATCH 1/2] findutils-4.5.7-warnings.patch
---
xargs/xargs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/xargs/xargs.c b/xargs/xargs.c
index 5e373f2..c0a8676 100644
--- a/xargs/xargs.c
+++ b/xargs/xargs.c
@@ -1289,7 +1289,8 @@ xargs_do_exec (struct buildcmd_control *ctl, void *usercontext, int argc, char *
* utility if we run it, for POSIX compliance on the
* handling of exit values.
*/
- write (fd[1], &errno, sizeof (int));
+ int sink = write (fd[1], &errno, sizeof (int));
+ (void) sink;
}
close (fd[1]);
--
1.7.1
From c5654b9ca5f50daa1ca406ebd7b4546f24d00db6 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Mon, 23 Sep 2013 15:04:03 +0200
Subject: [PATCH 2/2] parser: silence a [-Wmaybe-uninitialized] GCC warning
... caused by a missing model of error()
---
find/parser.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/find/parser.c b/find/parser.c
index 89d8bcf..8c399d7 100644
--- a/find/parser.c
+++ b/find/parser.c
@@ -2723,7 +2723,7 @@ insert_type (char **argv, int *arg_ptr,
const struct parser_table *entry,
PRED_FUNC which_pred)
{
- mode_t type_cell;
+ mode_t type_cell /* to silence GCC warning */ = 0;
struct predicate *our_pred;
float rate = 0.5;
const char *typeletter;
--
1.9.3

View file

@ -1,185 +0,0 @@
From 3e5e311d23ac0a5bd5930ddb4094f7555b886329 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Sat, 19 Dec 2015 22:56:40 +0100
Subject: [PATCH 1/2] Revert "Don't include dblocation.texi from original spot,
symlink it."
This reverts commit f59d88e456553dfe0b5185caf75e4041285fd595.
---
configure.ac | 2 +-
doc/Makefile.am | 8 +-------
doc/find.texi | 2 +-
3 files changed, 3 insertions(+), 9 deletions(-)
diff --git a/configure.ac b/configure.ac
index 7962719..ce0e768 100644
--- a/configure.ac
+++ b/configure.ac
@@ -70,7 +70,7 @@ AC_PROG_CPP
dnl for gnulib
gl_EARLY
-AC_PROG_LN_S
+
AC_PROG_INSTALL
AC_CHECK_TOOLS([AR], [ar])
AC_CHECK_TOOLS([RANLIB], [ranlib], [:])
diff --git a/doc/Makefile.am b/doc/Makefile.am
index f6f7443..6fbf57b 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -16,11 +16,9 @@ AM_CFLAGS = $(WARN_CFLAGS)
info_TEXINFOS = find.texi find-maint.texi
find_TEXINFOS = perm.texi parse-datetime.texi regexprops.texi fdl.texi
-BUILT_SOURCES = dblocation.texi
-nodist_find_TEXINFOS = dblocation.texi
find_maint_TEXINFOS = fdl.texi
MOSTLYCLEANFILES = find.cps
-CLEANFILES = find.txt find_mono.html findutils.texi_html_node.tar.gz dblocation.texi
+CLEANFILES = find.txt find_mono.html findutils.texi_html_node.tar.gz
MAKEINFOTXT = $(MAKEINFO) --plaintext
@@ -69,7 +67,3 @@ find_mono.html: find.texi
# for "make all" or "make install" (or even "make check").
findutils.texi_html_node.tar.gz: find.html
tar zcf $@ $<
-
-
-dblocation.texi: ../locate/dblocation.texi
- $(LN_S) ../locate/dblocation.texi $@
diff --git a/doc/find.texi b/doc/find.texi
index a83a645..c2714dd 100644
--- a/doc/find.texi
+++ b/doc/find.texi
@@ -7,7 +7,7 @@
@c %**end of header
@include version.texi
-@include dblocation.texi
+@include ../locate/dblocation.texi
@iftex
@finalout
--
2.5.0
From d5473caa86f689ebcadacc593f5a71781c99e829 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Wed, 11 May 2011 16:46:13 +0200
Subject: [PATCH 2/2] findutils-4.4.0-no-locate.patch
---
Makefile.am | 2 +-
configure.ac | 2 --
doc/find.texi | 24 ++++++++----------------
3 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index af82d54..6ad453b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,7 +9,7 @@ DISTCLEANFILES = tool-versions.txt
# "tests" is the gnulib unit test dir.
-SUBDIRS = gl tests build-aux lib find xargs locate doc po m4
+SUBDIRS = gl tests build-aux lib find xargs doc po m4
ACLOCAL_AMFLAGS = -I gl/m4 -I m4
diff --git a/configure.ac b/configure.ac
index ce0e768..521e665 100644
--- a/configure.ac
+++ b/configure.ac
@@ -248,8 +248,6 @@ find/testsuite/Makefile
gl/Makefile
gl/lib/Makefile
lib/Makefile
-locate/Makefile
-locate/testsuite/Makefile
m4/Makefile
po/Makefile.in
po/Makefile
diff --git a/doc/find.texi b/doc/find.texi
index c2714dd..01367a4 100644
--- a/doc/find.texi
+++ b/doc/find.texi
@@ -7,7 +7,6 @@
@c %**end of header
@include version.texi
-@include ../locate/dblocation.texi
@iftex
@finalout
@@ -571,8 +570,7 @@ the databases are updated, and the directories for which they contain
entries.
Here is how to select which file name databases @code{locate}
-searches. The default is system-dependent. At the time this document
-was generated, the default was @file{@value{LOCATE_DB}}.
+searches. The default is system-dependent.
@table @code
@item --database=@var{path}
@@ -2892,13 +2890,9 @@ thrashing the network.
directories are indexed by each database file.
The default location for the locate database depends on how findutils
-is built, but the findutils installation accompanying this manual uses
-the default location @file{@value{LOCATE_DB}}.
-
-If no database exists at @file{@value{LOCATE_DB}} but the user did not
-specify where to look (by using @samp{-d} or setting
-@code{LOCATE_PATH}), then @code{locate} will also check for a
-``secure'' database in @file{/var/lib/slocate/slocate.db}.
+is built. If user did not specify where to look (by using @samp{-d}
+or setting @code{LOCATE_PATH}), then @code{locate} will also check for
+a ``secure'' database in @file{/var/lib/slocate/slocate.db}.
@node Database Formats
@section Database Formats
@@ -3438,8 +3432,7 @@ present.
@item --database=@var{path}
@itemx -d @var{path}
-Instead of searching the default @code{locate} database
-@file{@value{LOCATE_DB}}, @code{locate} searches the file
+@code{locate} searches the file
name databases in @var{path}, which is a colon-separated list of
database file names. You can also use the environment variable
@code{LOCATE_PATH} to set the list of database files to search. The
@@ -3614,8 +3607,7 @@ The environment variable @code{PRUNEFS} also sets this value. Default
is @file{nfs NFS proc}.
@item --output=@var{dbfile}
-The database file to build. The default is system-dependent, but
-when this document was formatted it was @file{@value{LOCATE_DB}}.
+The database file to build.
@item --localuser=@var{user}
The user to search the non-network directories as, using @code{su}.
@@ -5635,7 +5627,7 @@ why @code{xargs} is confused by your operating system).
@section Error Messages From @code{locate}
@table @samp
-@item warning: database @file{@value{LOCATE_DB}} is more than 8 days old
+@item warning: database @file{LOCATE_DB} is more than 8 days old
The @code{locate} program relies on a database which is periodically
built by the @code{updatedb} program. That hasn't happened in a long
time. To fix this problem, run @code{updatedb} manually. This can
@@ -5643,7 +5635,7 @@ often happen on systems that are generally not left on, so the
periodic ``cron'' task which normally does this doesn't get a chance
to run.
-@item locate database @file{@value{LOCATE_DB}} is corrupt or invalid
+@item locate database @file{LOCATE_DB} is corrupt or invalid
This should not happen. Re-run @code{updatedb}. If that works, but
@code{locate} still produces this error, run @code{locate --version}
and @code{updatedb --version}. These should produce the same output.
--
2.5.0

View file

@ -1,226 +0,0 @@
From 443166adaf1c8b91e16a716f3b13f47493b895cc Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <mail@bernhard-voelker.de>
Date: Tue, 31 May 2016 10:38:52 +0200
Subject: [PATCH] Fix bug #48030: find: -exec + does not pass all arguments in
certain cases
When the -exec arguments buffer (usually 128k) is full and the given
command has been executed with all that arguments, find(1) missed to
execute the command yet another time if only 1 another file would have
to be processed.
Both find(1), i.e., nowadays FTS-version, and oldfind are affected.
This bug was present since the implementation of '-exec +' in 2005,
see commit FINDUTILS_4_2_11-1-25-gf0a6ac6.
* lib/buildcmd.c (bc_push_arg): Move the assignment to set 'state->todo'
to 1 down after the immediate execution which resets that flag.
* find/testsuite/sv-48030-exec-plus-bug.sh: Add a test.
* find/testsuite/Makefile.am (test_shell_progs): Reference the test.
* NEWS (Bug Fixes): Mention the fix.
Reported by Joe Philip Ninan <indiajoe@gmail.com> in
https://savannah.gnu.org/bugs/?48030
Upstream-commit: 8cdc9767e305c9566f537af9d1acf71d1bc6ee8e
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
find/testsuite/Makefile.am | 3 +-
find/testsuite/sv-48030-exec-plus-bug.sh | 143 +++++++++++++++++++++++++++++++
lib/buildcmd.c | 10 +--
3 files changed, 150 insertions(+), 6 deletions(-)
create mode 100644 find/testsuite/sv-48030-exec-plus-bug.sh
diff --git a/find/testsuite/Makefile.am b/find/testsuite/Makefile.am
index c1369c3..ab5dbe8 100644
--- a/find/testsuite/Makefile.am
+++ b/find/testsuite/Makefile.am
@@ -258,7 +258,8 @@ test_escapechars.sh \
test_escape_c.sh \
test_inode.sh \
sv-34079.sh \
-sv-34976-execdir-fd-leak.sh
+sv-34976-execdir-fd-leak.sh \
+sv-48030-exec-plus-bug.sh
EXTRA_DIST = $(EXTRA_DIST_EXP) $(EXTRA_DIST_XO) $(EXTRA_DIST_GOLDEN) \
$(test_shell_progs) binary_locations.sh checklists.py
diff --git a/find/testsuite/sv-48030-exec-plus-bug.sh b/find/testsuite/sv-48030-exec-plus-bug.sh
new file mode 100755
index 0000000..4dbf149
--- /dev/null
+++ b/find/testsuite/sv-48030-exec-plus-bug.sh
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Copyright (C) 2016 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# This test verifies that find invokes the given command for the
+# multiple-argument sytax '-exec CMD {} +'. Between FINDUTILS-4.2.12
+# and v4.6.0, find(1) would have failed to execute CMD another time
+# if there was only one last single file argument.
+
+testname="$(basename $0)"
+
+. "${srcdir}"/binary_locations.sh
+
+die() {
+ echo "$@" >&2
+ exit 1
+}
+
+# This is used to simplify checking of the return value
+# which is useful when ensuring a command fails as desired.
+# I.e., just doing `command ... &&fail=1` will not catch
+# a segfault in command for example. With this helper you
+# instead check an explicit exit code like
+# returns_ 1 command ... || fail
+returns_ () {
+ # Disable tracing so it doesn't interfere with stderr of the wrapped command
+ { set +x; } 2>/dev/null
+
+ local exp_exit="$1"
+ shift
+ "$@"
+ test $? -eq $exp_exit && ret_=0 || ret_=1
+
+ set -x
+ { return $ret_; } 2>/dev/null
+}
+
+# Define the nicest compare available (borrowed from gnulib).
+if diff_out_=`exec 2>/dev/null; diff -u "$0" "$0" < /dev/null` \
+ && diff -u Makefile "$0" 2>/dev/null | grep '^[+]#!' >/dev/null; then
+ # diff accepts the -u option and does not (like AIX 7 'diff') produce an
+ # extra space on column 1 of every content line.
+ if test -z "$diff_out_"; then
+ compare () { diff -u "$@"; }
+ else
+ compare ()
+ {
+ if diff -u "$@" > diff.out; then
+ # No differences were found, but Solaris 'diff' produces output
+ # "No differences encountered". Hide this output.
+ rm -f diff.out
+ true
+ else
+ cat diff.out
+ rm -f diff.out
+ false
+ fi
+ }
+ fi
+elif diff_out_=`exec 2>/dev/null; diff -c "$0" "$0" < /dev/null`; then
+ if test -z "$diff_out_"; then
+ compare () { diff -c "$@"; }
+ else
+ compare ()
+ {
+ if diff -c "$@" > diff.out; then
+ # No differences were found, but AIX and HP-UX 'diff' produce output
+ # "No differences encountered" or "There are no differences between the
+ # files.". Hide this output.
+ rm -f diff.out
+ true
+ else
+ cat diff.out
+ rm -f diff.out
+ false
+ fi
+ }
+ fi
+elif cmp -s /dev/null /dev/null 2>/dev/null; then
+ compare () { cmp -s "$@"; }
+else
+ compare () { cmp "$@"; }
+fi
+
+DIR='RashuBug'
+# Name of the CMD to execute: the file name must be 6 characters long
+# (to trigger the bug in combination with the test files).
+CMD='tstcmd'
+
+# Create test files.
+make_test_data() {
+ # Create the CMD script and check that it works.
+ mkdir "$DIR" 'bin' \
+ && echo 'printf "%s\n" "$@"' > "bin/$CMD" \
+ && chmod +x "bin/$CMD" \
+ && PATH="$PWD/bin:$PATH" \
+ && [ $( "${ftsfind}" bin -maxdepth 0 -exec "$CMD" '{}' + ) = 'bin' ] \
+ || return 1
+
+ # Create expected output file - also used for creating the test data.
+ { seq -f "${DIR}/abcdefghijklmnopqrstuv%04g" 901 &&
+ seq -f "${DIR}/abcdefghijklmnopqrstu%04g" 902 3719
+ } > exp2 \
+ && LC_ALL=C sort exp2 > exp \
+ && rm exp2 \
+ || return 1
+
+ # Create test files, and check if test data has been created correctly.
+ xargs touch < exp \
+ && [ -f "${DIR}/abcdefghijklmnopqrstu3719" ] \
+ && [ 3719 = $( "${ftsfind}" "$DIR" -type f | wc -l ) ] \
+ || return 1
+}
+
+set -x
+tmpdir="$(mktemp -d)" \
+ && cd "$tmpdir" \
+ && make_test_data "${tmpdir}" \
+ || die "FAIL: failed to set up the test in ${tmpdir}"
+
+fail=0
+for exe in "${ftsfind}" "${oldfind}"; do
+ "$exe" "$DIR" -type f -exec "$CMD" '{}' + > out || fail=1
+ LC_ALL=C sort out > out2 || fail=1
+ compare exp out2 || fail=1
+done
+
+cd ..
+rm -rf "${tmpdir}" || exit 1
+exit $fail
diff --git a/lib/buildcmd.c b/lib/buildcmd.c
index a58f67e..27e9ce5 100644
--- a/lib/buildcmd.c
+++ b/lib/buildcmd.c
@@ -356,11 +356,6 @@ bc_push_arg (struct buildcmd_control *ctl,
assert (arg != NULL);
- if (!initial_args)
- {
- state->todo = 1;
- }
-
if (!terminate)
{
if (state->cmd_argv_chars + len + pfxlen > ctl->arg_max)
@@ -380,6 +375,11 @@ bc_push_arg (struct buildcmd_control *ctl,
bc_do_exec (ctl, state);
}
+ if (!initial_args)
+ {
+ state->todo = 1;
+ }
+
if (state->cmd_argc >= state->cmd_argv_alloc)
{
/* XXX: we could use extendbuf() here. */
--
2.5.5

View file

@ -1,990 +0,0 @@
From f3337786e55909538aacfd7c29b1cf58ff444fbf Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Mon, 12 Feb 2018 12:45:36 +0100
Subject: [PATCH 1/4] import gnulib's FTS module from upstream commit 281b825e
---
gl/lib/fts.c | 424 +++++++++++++++++++++++++++++-----------------------------
gl/lib/fts_.h | 10 +-
2 files changed, 221 insertions(+), 213 deletions(-)
diff --git a/gl/lib/fts.c b/gl/lib/fts.c
index c91d7a1..bfa73e3 100644
--- a/gl/lib/fts.c
+++ b/gl/lib/fts.c
@@ -1,6 +1,6 @@
/* Traverse a file hierarchy.
- Copyright (C) 2004-2015 Free Software Foundation, Inc.
+ Copyright (C) 2004-2018 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -13,7 +13,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/*-
* Copyright (c) 1990, 1993, 1994
@@ -46,9 +46,9 @@
#include <config.h>
-#if defined(LIBC_SCCS) && !defined(lint)
+#if defined LIBC_SCCS && !defined GCC_LINT && !defined lint
static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
-#endif /* LIBC_SCCS and not lint */
+#endif
#include "fts_.h"
@@ -71,11 +71,7 @@ static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
#if ! _LIBC
# include "fcntl--.h"
-# include "dirent--.h"
-# include "unistd--.h"
-/* FIXME - use fcntl(F_DUPFD_CLOEXEC)/openat(O_CLOEXEC) once they are
- supported. */
-# include "cloexec.h"
+# include "flexmember.h"
# include "openat.h"
# include "same-inode.h"
#endif
@@ -202,6 +198,14 @@ enum Fts_stat
while (false)
#endif
+#ifndef FALLTHROUGH
+# if __GNUC__ < 7
+# define FALLTHROUGH ((void) 0)
+# else
+# define FALLTHROUGH __attribute__ ((__fallthrough__))
+# endif
+#endif
+
static FTSENT *fts_alloc (FTS *, const char *, size_t) internal_function;
static FTSENT *fts_build (FTS *, int) internal_function;
static void fts_lfree (FTSENT *) internal_function;
@@ -296,14 +300,13 @@ static DIR *
internal_function
opendirat (int fd, char const *dir, int extra_flags, int *pdir_fd)
{
- int new_fd = openat (fd, dir,
- (O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK
- | extra_flags));
+ int open_flags = (O_RDONLY | O_CLOEXEC | O_DIRECTORY | O_NOCTTY
+ | O_NONBLOCK | extra_flags);
+ int new_fd = openat (fd, dir, open_flags);
DIR *dirp;
if (new_fd < 0)
return NULL;
- set_cloexec_flag (new_fd, true);
dirp = fdopendir (new_fd);
if (dirp)
*pdir_fd = new_fd;
@@ -366,15 +369,13 @@ static int
internal_function
diropen (FTS const *sp, char const *dir)
{
- int open_flags = (O_SEARCH | O_DIRECTORY | O_NOCTTY | O_NONBLOCK
+ int open_flags = (O_SEARCH | O_CLOEXEC | O_DIRECTORY | O_NOCTTY | O_NONBLOCK
| (ISSET (FTS_PHYSICAL) ? O_NOFOLLOW : 0)
| (ISSET (FTS_NOATIME) ? O_NOATIME : 0));
int fd = (ISSET (FTS_CWDFD)
? openat (sp->fts_cwd_fd, dir, open_flags)
: open (dir, open_flags));
- if (0 <= fd)
- set_cloexec_flag (fd, true);
return fd;
}
@@ -470,6 +471,7 @@ fts_open (char * const *argv,
if ((parent = fts_alloc(sp, "", 0)) == NULL)
goto mem2;
parent->fts_level = FTS_ROOTPARENTLEVEL;
+ parent->fts_n_dirs_remaining = -1;
}
/* The classic fts implementation would call fts_stat with
@@ -656,39 +658,139 @@ fts_close (FTS *sp)
return (0);
}
+/* Minimum link count of a traditional Unix directory. When leaf
+ optimization is OK and MIN_DIR_NLINK <= st_nlink, then st_nlink is
+ an upper bound on the number of subdirectories (counting "." and
+ ".."). */
+enum { MIN_DIR_NLINK = 2 };
+
+/* Whether leaf optimization is OK for a directory. */
+enum leaf_optimization
+ {
+ /* st_nlink is not reliable for this directory's subdirectories. */
+ NO_LEAF_OPTIMIZATION,
+
+ /* Leaf optimization is OK, but is not useful for avoiding stat calls. */
+ OK_LEAF_OPTIMIZATION,
+
+ /* Leaf optimization is not only OK: it is useful for avoiding
+ stat calls, because dirent.d_type does not work. */
+ NOSTAT_LEAF_OPTIMIZATION
+ };
+
#if defined __linux__ \
&& HAVE_SYS_VFS_H && HAVE_FSTATFS && HAVE_STRUCT_STATFS_F_TYPE
# include <sys/vfs.h>
/* Linux-specific constants from coreutils' src/fs.h */
-# define S_MAGIC_TMPFS 0x1021994
+# define S_MAGIC_AFS 0x5346414F
# define S_MAGIC_NFS 0x6969
+# define S_MAGIC_PROC 0x9FA0
# define S_MAGIC_REISERFS 0x52654973
+# define S_MAGIC_TMPFS 0x1021994
# define S_MAGIC_XFS 0x58465342
-# define S_MAGIC_PROC 0x9FA0
-/* Return false if it is easy to determine the file system type of
- the directory on which DIR_FD is open, and sorting dirents on
- inode numbers is known not to improve traversal performance with
- that type of file system. Otherwise, return true. */
+# ifdef HAVE___FSWORD_T
+typedef __fsword_t fsword;
+# else
+typedef long int fsword;
+# endif
+
+/* Map a stat.st_dev number to a file system type number f_ftype. */
+struct dev_type
+{
+ dev_t st_dev;
+ fsword f_type;
+};
+
+/* Use a tiny initial size. If a traversal encounters more than
+ a few devices, the cost of growing/rehashing this table will be
+ rendered negligible by the number of inodes processed. */
+enum { DEV_TYPE_HT_INITIAL_SIZE = 13 };
+
+static size_t
+dev_type_hash (void const *x, size_t table_size)
+{
+ struct dev_type const *ax = x;
+ uintmax_t dev = ax->st_dev;
+ return dev % table_size;
+}
+
static bool
-dirent_inode_sort_may_be_useful (int dir_fd)
+dev_type_compare (void const *x, void const *y)
+{
+ struct dev_type const *ax = x;
+ struct dev_type const *ay = y;
+ return ax->st_dev == ay->st_dev;
+}
+
+/* Return the file system type of P, or 0 if not known.
+ Try to cache known values. */
+
+static fsword
+filesystem_type (FTSENT const *p)
+{
+ FTS *sp = p->fts_fts;
+ Hash_table *h = sp->fts_leaf_optimization_works_ht;
+ struct dev_type *ent;
+ struct statfs fs_buf;
+
+ /* If we're not in CWDFD mode, don't bother with this optimization,
+ since the caller is not serious about performance. */
+ if (!ISSET (FTS_CWDFD))
+ return 0;
+
+ if (! h)
+ h = sp->fts_leaf_optimization_works_ht
+ = hash_initialize (DEV_TYPE_HT_INITIAL_SIZE, NULL, dev_type_hash,
+ dev_type_compare, free);
+ if (h)
+ {
+ struct dev_type tmp;
+ tmp.st_dev = p->fts_statp->st_dev;
+ ent = hash_lookup (h, &tmp);
+ if (ent)
+ return ent->f_type;
+ }
+
+ /* Look-up failed. Query directly and cache the result. */
+ if (fstatfs (p->fts_fts->fts_cwd_fd, &fs_buf) != 0)
+ return 0;
+
+ if (h)
+ {
+ struct dev_type *t2 = malloc (sizeof *t2);
+ if (t2)
+ {
+ t2->st_dev = p->fts_statp->st_dev;
+ t2->f_type = fs_buf.f_type;
+
+ ent = hash_insert (h, t2);
+ if (ent)
+ fts_assert (ent == t2);
+ else
+ free (t2);
+ }
+ }
+
+ return fs_buf.f_type;
+}
+
+/* Return false if it is easy to determine the file system type of the
+ directory P, and sorting dirents on inode numbers is known not to
+ improve traversal performance with that type of file system.
+ Otherwise, return true. */
+static bool
+dirent_inode_sort_may_be_useful (FTSENT const *p)
{
/* Skip the sort only if we can determine efficiently
that skipping it is the right thing to do.
The cost of performing an unnecessary sort is negligible,
while the cost of *not* performing it can be O(N^2) with
a very large constant. */
- struct statfs fs_buf;
-
- /* If fstatfs fails, assume sorting would be useful. */
- if (fstatfs (dir_fd, &fs_buf) != 0)
- return true;
- /* FIXME: what about when f_type is not an integral type?
- deal with that if/when it's encountered. */
- switch (fs_buf.f_type)
+ switch (filesystem_type (p))
{
case S_MAGIC_TMPFS:
case S_MAGIC_NFS:
@@ -701,133 +803,58 @@ dirent_inode_sort_may_be_useful (int dir_fd)
}
}
-/* Given a file descriptor DIR_FD open on a directory D,
- return true if it is valid to apply the leaf-optimization
- technique of counting directories in D via stat.st_nlink. */
-static bool
-leaf_optimization_applies (int dir_fd)
+/* Given an FTS entry P for a directory D,
+ return true if it is both useful and valid to apply leaf optimization.
+ The optimization is useful only for file systems that lack usable
+ dirent.d_type info. The optimization is valid if an st_nlink value
+ of at least MIN_DIR_NLINK is an upper bound on the number of
+ subdirectories of D, counting "." and ".." as subdirectories. */
+static enum leaf_optimization
+leaf_optimization (FTSENT const *p)
{
- struct statfs fs_buf;
-
- /* If fstatfs fails, assume we can't use the optimization. */
- if (fstatfs (dir_fd, &fs_buf) != 0)
- return false;
-
- /* FIXME: do we need to detect AFS mount points? I doubt it,
- unless fstatfs can report S_MAGIC_REISERFS for such a directory. */
-
- switch (fs_buf.f_type)
+ switch (filesystem_type (p))
{
- case S_MAGIC_NFS:
- /* NFS provides usable dirent.d_type but not necessarily for all entries
- of large directories. See <https://bugzilla.redhat.com/1252549>. */
- return true;
-
- /* List here the file system types that lack usable dirent.d_type
+ /* List here the file system types that may lack usable dirent.d_type
info, yet for which the optimization does apply. */
case S_MAGIC_REISERFS:
- case S_MAGIC_XFS:
- return true;
-
+ case S_MAGIC_XFS: /* XFS lacked it until 2013-08-22 commit. */
+ return NOSTAT_LEAF_OPTIMIZATION;
+
+ case 0:
+ /* Leaf optimization is unsafe if the file system type is unknown. */
+ FALLTHROUGH;
+ case S_MAGIC_AFS:
+ /* Although AFS mount points are not counted in st_nlink, they
+ act like directories. See <https://bugs.debian.org/143111>. */
+ FALLTHROUGH;
+ case S_MAGIC_NFS:
+ /* NFS provides usable dirent.d_type but not necessarily for all entries
+ of large directories, so as per <https://bugzilla.redhat.com/1252549>
+ NFS should return true. However st_nlink values are not accurate on
+ all implementations as per <https://bugzilla.redhat.com/1299169>. */
+ FALLTHROUGH;
case S_MAGIC_PROC:
- /* Explicitly listing this or any other file system type for which
- the optimization is not applicable is not necessary, but we leave
- it here to document the risk. Per http://bugs.debian.org/143111,
- /proc may have bogus stat.st_nlink values. */
- /* fall through */
+ /* Per <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=143111> /proc
+ may have bogus stat.st_nlink values. */
+ return NO_LEAF_OPTIMIZATION;
+
default:
- return false;
+ return OK_LEAF_OPTIMIZATION;
}
}
#else
static bool
-dirent_inode_sort_may_be_useful (int dir_fd _GL_UNUSED) { return true; }
-static bool
-leaf_optimization_applies (int dir_fd _GL_UNUSED) { return false; }
-#endif
-
-/* link-count-optimization entry:
- map a stat.st_dev number to a boolean: leaf_optimization_works */
-struct LCO_ent
-{
- dev_t st_dev;
- bool opt_ok;
-};
-
-/* Use a tiny initial size. If a traversal encounters more than
- a few devices, the cost of growing/rehashing this table will be
- rendered negligible by the number of inodes processed. */
-enum { LCO_HT_INITIAL_SIZE = 13 };
-
-static size_t
-LCO_hash (void const *x, size_t table_size)
-{
- struct LCO_ent const *ax = x;
- return (uintmax_t) ax->st_dev % table_size;
-}
-
-static bool
-LCO_compare (void const *x, void const *y)
+dirent_inode_sort_may_be_useful (FTSENT const *p _GL_UNUSED)
{
- struct LCO_ent const *ax = x;
- struct LCO_ent const *ay = y;
- return ax->st_dev == ay->st_dev;
+ return true;
}
-
-/* Ask the same question as leaf_optimization_applies, but query
- the cache first (FTS.fts_leaf_optimization_works_ht), and if necessary,
- update that cache. */
-static bool
-link_count_optimize_ok (FTSENT const *p)
+static enum leaf_optimization
+leaf_optimization (FTSENT const *p _GL_UNUSED)
{
- FTS *sp = p->fts_fts;
- Hash_table *h = sp->fts_leaf_optimization_works_ht;
- struct LCO_ent tmp;
- struct LCO_ent *ent;
- bool opt_ok;
- struct LCO_ent *t2;
-
- /* If we're not in CWDFD mode, don't bother with this optimization,
- since the caller is not serious about performance. */
- if (!ISSET(FTS_CWDFD))
- return false;
-
- /* map st_dev to the boolean, leaf_optimization_works */
- if (h == NULL)
- {
- h = sp->fts_leaf_optimization_works_ht
- = hash_initialize (LCO_HT_INITIAL_SIZE, NULL, LCO_hash,
- LCO_compare, free);
- if (h == NULL)
- return false;
- }
- tmp.st_dev = p->fts_statp->st_dev;
- ent = hash_lookup (h, &tmp);
- if (ent)
- return ent->opt_ok;
-
- /* Look-up failed. Query directly and cache the result. */
- t2 = malloc (sizeof *t2);
- if (t2 == NULL)
- return false;
-
- /* Is it ok to perform the optimization in the dir, FTS_CWD_FD? */
- opt_ok = leaf_optimization_applies (sp->fts_cwd_fd);
- t2->opt_ok = opt_ok;
- t2->st_dev = p->fts_statp->st_dev;
-
- ent = hash_insert (h, t2);
- if (ent == NULL)
- {
- /* insertion failed */
- free (t2);
- return false;
- }
- fts_assert (ent == t2);
-
- return opt_ok;
+ return NO_LEAF_OPTIMIZATION;
}
+#endif
/*
* Special case of "/" at the end of the file name so that slashes aren't
@@ -1014,13 +1041,11 @@ check_for_dir:
if (p->fts_statp->st_size == FTS_STAT_REQUIRED)
{
FTSENT *parent = p->fts_parent;
- if (FTS_ROOTLEVEL < p->fts_level
- /* ->fts_n_dirs_remaining is not valid
- for command-line-specified names. */
- && parent->fts_n_dirs_remaining == 0
+ if (parent->fts_n_dirs_remaining == 0
&& ISSET(FTS_NOSTAT)
&& ISSET(FTS_PHYSICAL)
- && link_count_optimize_ok (parent))
+ && (leaf_optimization (parent)
+ == NOSTAT_LEAF_OPTIMIZATION))
{
/* nothing more needed */
}
@@ -1029,7 +1054,8 @@ check_for_dir:
p->fts_info = fts_stat(sp, p, false);
if (S_ISDIR(p->fts_statp->st_mode)
&& p->fts_level != FTS_ROOTLEVEL
- && parent->fts_n_dirs_remaining)
+ && 0 < parent->fts_n_dirs_remaining
+ && parent->fts_n_dirs_remaining != (nlink_t) -1)
parent->fts_n_dirs_remaining--;
}
}
@@ -1298,8 +1324,6 @@ fts_build (register FTS *sp, int type)
bool descend;
bool doadjust;
ptrdiff_t level;
- nlink_t nlinks;
- bool nostat;
size_t len, maxlen, new_len;
char *cp;
int dir_fd;
@@ -1369,24 +1393,6 @@ fts_build (register FTS *sp, int type)
sorting, yet not so large that we risk exhausting memory. */
max_entries = sp->fts_compar ? SIZE_MAX : FTS_MAX_READDIR_ENTRIES;
- /*
- * Nlinks is the number of possible entries of type directory in the
- * directory if we're cheating on stat calls, 0 if we're not doing
- * any stat calls at all, (nlink_t) -1 if we're statting everything.
- */
- if (type == BNAMES) {
- nlinks = 0;
- /* Be quiet about nostat, GCC. */
- nostat = false;
- } else if (ISSET(FTS_NOSTAT) && ISSET(FTS_PHYSICAL)) {
- nlinks = (cur->fts_statp->st_nlink
- - (ISSET(FTS_SEEDOT) ? 0 : 2));
- nostat = true;
- } else {
- nlinks = -1;
- nostat = false;
- }
-
/*
* If we're going to need to stat anything or we want to descend
* and stay in the directory, chdir. If this fails we keep going,
@@ -1408,15 +1414,22 @@ fts_build (register FTS *sp, int type)
the required dirp and dir_fd. */
descend = true;
}
- else if (nlinks || type == BREAD) {
+ else
+ {
+ /* Try to descend unless it is a names-only fts_children,
+ or the directory is known to lack subdirectories. */
+ descend = (type != BNAMES
+ && ! (ISSET (FTS_NOSTAT) && ISSET (FTS_PHYSICAL)
+ && ! ISSET (FTS_SEEDOT)
+ && cur->fts_statp->st_nlink == MIN_DIR_NLINK
+ && (leaf_optimization (cur)
+ != NO_LEAF_OPTIMIZATION)));
+ if (descend || type == BREAD)
+ {
if (ISSET(FTS_CWDFD))
- {
- dir_fd = dup (dir_fd);
- if (0 <= dir_fd)
- set_cloexec_flag (dir_fd, true);
- }
+ dir_fd = fcntl (dir_fd, F_DUPFD_CLOEXEC, STDERR_FILENO + 1);
if (dir_fd < 0 || fts_safe_changedir(sp, cur, dir_fd, NULL)) {
- if (nlinks && type == BREAD)
+ if (descend && type == BREAD)
cur->fts_errno = errno;
cur->fts_flags |= FTS_DONTCHDIR;
descend = false;
@@ -1426,8 +1439,8 @@ fts_build (register FTS *sp, int type)
cur->fts_dirp = NULL;
} else
descend = true;
- } else
- descend = false;
+ }
+ }
/*
* Figure out the max file name length that can be stored in the
@@ -1458,11 +1471,19 @@ fts_build (register FTS *sp, int type)
tail = NULL;
nitems = 0;
while (cur->fts_dirp) {
- bool is_dir;
size_t d_namelen;
+ __set_errno (0);
struct dirent *dp = readdir(cur->fts_dirp);
- if (dp == NULL)
+ if (dp == NULL) {
+ if (errno) {
+ cur->fts_errno = errno;
+ /* If we've not read any items yet, treat
+ the error as if we can't access the dir. */
+ cur->fts_info = (continue_readdir || nitems)
+ ? FTS_ERR : FTS_DNR;
+ }
break;
+ }
if (!ISSET(FTS_SEEDOT) && ISDOT(dp->d_name))
continue;
@@ -1550,19 +1571,10 @@ mem1: saved_errno = errno;
to caller, when possible. */
set_stat_type (p->fts_statp, D_TYPE (dp));
fts_set_stat_required(p, !skip_stat);
- is_dir = (ISSET(FTS_PHYSICAL)
- && DT_MUST_BE(dp, DT_DIR));
} else {
p->fts_info = fts_stat(sp, p, false);
- is_dir = (p->fts_info == FTS_D
- || p->fts_info == FTS_DC
- || p->fts_info == FTS_DOT);
}
- /* Decrement link count if applicable. */
- if (nlinks > 0 && is_dir)
- nlinks -= nostat;
-
/* We walk in directory order so "ls -f" doesn't get upset. */
p->fts_link = NULL;
if (head == NULL)
@@ -1621,7 +1633,8 @@ mem1: saved_errno = errno;
/* If didn't find anything, return NULL. */
if (!nitems) {
- if (type == BREAD)
+ if (type == BREAD
+ && cur->fts_info != FTS_DNR && cur->fts_info != FTS_ERR)
cur->fts_info = FTS_DP;
fts_lfree(head);
return (NULL);
@@ -1633,8 +1646,7 @@ mem1: saved_errno = errno;
inode numbers. */
if (nitems > _FTS_INODE_SORT_DIR_ENTRIES_THRESHOLD
&& !sp->fts_compar
- && ISSET (FTS_CWDFD)
- && dirent_inode_sort_may_be_useful (sp->fts_cwd_fd)) {
+ && dirent_inode_sort_may_be_useful (cur)) {
sp->fts_compar = fts_compare_ino;
head = fts_sort (sp, head, nitems);
sp->fts_compar = NULL;
@@ -1757,7 +1769,7 @@ fd_ring_check (FTS const *sp)
I_ring fd_w = sp->fts_fd_ring;
int cwd_fd = sp->fts_cwd_fd;
- cwd_fd = dup (cwd_fd);
+ cwd_fd = fcntl (cwd_fd, F_DUPFD_CLOEXEC, STDERR_FILENO + 1);
char *dot = getcwdat (cwd_fd, NULL, 0);
error (0, 0, "===== check ===== cwd: %s", dot);
free (dot);
@@ -1766,7 +1778,8 @@ fd_ring_check (FTS const *sp)
int fd = i_ring_pop (&fd_w);
if (0 <= fd)
{
- int parent_fd = openat (cwd_fd, "..", O_SEARCH | O_NOATIME);
+ int open_flags = O_SEARCH | O_CLOEXEC | O_NOATIME;
+ int parent_fd = openat (cwd_fd, "..", open_flags);
if (parent_fd < 0)
{
// Warn?
@@ -1795,7 +1808,6 @@ internal_function
fts_stat(FTS *sp, register FTSENT *p, bool follow)
{
struct stat *sbp = p->fts_statp;
- int saved_errno;
if (p->fts_level == FTS_ROOTLEVEL && ISSET(FTS_COMFOLLOW))
follow = true;
@@ -1807,13 +1819,12 @@ fts_stat(FTS *sp, register FTSENT *p, bool follow)
*/
if (ISSET(FTS_LOGICAL) || follow) {
if (stat(p->fts_accpath, sbp)) {
- saved_errno = errno;
if (errno == ENOENT
&& lstat(p->fts_accpath, sbp) == 0) {
__set_errno (0);
return (FTS_SLNONE);
}
- p->fts_errno = saved_errno;
+ p->fts_errno = errno;
goto err;
}
} else if (fstatat(sp->fts_cwd_fd, p->fts_accpath, sbp,
@@ -1824,8 +1835,11 @@ err: memset(sbp, 0, sizeof(struct stat));
}
if (S_ISDIR(sbp->st_mode)) {
- p->fts_n_dirs_remaining = (sbp->st_nlink
- - (ISSET(FTS_SEEDOT) ? 0 : 2));
+ p->fts_n_dirs_remaining
+ = ((sbp->st_nlink < MIN_DIR_NLINK
+ || p->fts_level <= FTS_ROOTLEVEL)
+ ? -1
+ : sbp->st_nlink - (ISSET (FTS_SEEDOT) ? 0 : MIN_DIR_NLINK));
if (ISDOT(p->fts_name)) {
/* Command-line "." and ".." are real directories. */
return (p->fts_level == FTS_ROOTLEVEL ? FTS_D : FTS_DOT);
@@ -1914,17 +1928,7 @@ fts_alloc (FTS *sp, const char *name, register size_t namelen)
* The file name is a variable length array. Allocate the FTSENT
* structure and the file name in one chunk.
*/
- len = offsetof(FTSENT, fts_name) + namelen + 1;
- /* Align the allocation size so that it works for FTSENT,
- so that trailing padding may be referenced by direct access
- to the flexible array members, without triggering undefined behavior
- by accessing bytes beyond the heap allocation. This implicit access
- was seen for example with ISDOT() and GCC 5.1.1 at -O2.
- Do not use alignof (FTSENT) here, since C11 prohibits
- taking the alignment of a structure containing a flexible
- array member. */
- len += alignof (max_align_t) - 1;
- len &= ~ (alignof (max_align_t) - 1);
+ len = FLEXSIZEOF(FTSENT, fts_name, namelen + 1);
if ((p = malloc(len)) == NULL)
return (NULL);
diff --git a/gl/lib/fts_.h b/gl/lib/fts_.h
index b9a3f12..70cc9e3 100644
--- a/gl/lib/fts_.h
+++ b/gl/lib/fts_.h
@@ -1,6 +1,6 @@
/* Traverse a file hierarchy.
- Copyright (C) 2004-2015 Free Software Foundation, Inc.
+ Copyright (C) 2004-2018 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -13,7 +13,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/*
* Copyright (c) 1989, 1993
@@ -220,7 +220,11 @@ typedef struct _ftsent {
ptrdiff_t fts_level; /* depth (-1 to N) */
size_t fts_namelen; /* strlen(fts_name) */
- nlink_t fts_n_dirs_remaining; /* count down from st_nlink */
+
+ /* If not (nlink_t) -1, an upper bound on the number of
+ remaining subdirectories of interest. If this becomes
+ zero, some work can be avoided. */
+ nlink_t fts_n_dirs_remaining;
# define FTS_D 1 /* preorder directory */
# define FTS_DC 2 /* directory that causes cycles */
--
2.13.6
From ea88dd373c60feab541fe037369805f326dc3494 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 12 Feb 2018 18:58:30 +0100
Subject: [PATCH 2/4] fts: remove dependency on gnulib's fleximember.h
... by reverting upstream commit edb9d82948cb23f67a19e1b435047a0570225df3
---
gl/lib/fts.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/gl/lib/fts.c b/gl/lib/fts.c
index bfa73e3..c37ebe2 100644
--- a/gl/lib/fts.c
+++ b/gl/lib/fts.c
@@ -71,7 +71,6 @@ static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
#if ! _LIBC
# include "fcntl--.h"
-# include "flexmember.h"
# include "openat.h"
# include "same-inode.h"
#endif
@@ -1928,7 +1927,17 @@ fts_alloc (FTS *sp, const char *name, register size_t namelen)
* The file name is a variable length array. Allocate the FTSENT
* structure and the file name in one chunk.
*/
- len = FLEXSIZEOF(FTSENT, fts_name, namelen + 1);
+ len = offsetof(FTSENT, fts_name) + namelen + 1;
+ /* Align the allocation size so that it works for FTSENT,
+ so that trailing padding may be referenced by direct access
+ to the flexible array members, without triggering undefined behavior
+ by accessing bytes beyond the heap allocation. This implicit access
+ was seen for example with ISDOT() and GCC 5.1.1 at -O2.
+ Do not use alignof (FTSENT) here, since C11 prohibits
+ taking the alignment of a structure containing a flexible
+ array member. */
+ len += alignof (max_align_t) - 1;
+ len &= ~ (alignof (max_align_t) - 1);
if ((p = malloc(len)) == NULL)
return (NULL);
--
2.13.6
From 9c1720c99bbf8998dfdaa5976bca8bdc6d93f8e7 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Thu, 5 Apr 2018 08:48:01 -0700
Subject: [PATCH 3/4] fts: treat CIFS like NFS
Problem reported by Kamil Dudka in:
https://lists.gnu.org/r/bug-gnulib/2018-04/msg00015.html
* lib/fts.c (S_MAGIC_CIFS): New macro.
(dirent_inode_sort_may_be_useful, leaf_optimization):
Treat CIFS like NFS.
Upstream-commit: 2e53df541a30d438859087ed4b5a396e04697b9b
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
gl/lib/fts.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/gl/lib/fts.c b/gl/lib/fts.c
index c37ebe2..508ceac 100644
--- a/gl/lib/fts.c
+++ b/gl/lib/fts.c
@@ -684,6 +684,7 @@ enum leaf_optimization
/* Linux-specific constants from coreutils' src/fs.h */
# define S_MAGIC_AFS 0x5346414F
+# define S_MAGIC_CIFS 0xFF534D42
# define S_MAGIC_NFS 0x6969
# define S_MAGIC_PROC 0x9FA0
# define S_MAGIC_REISERFS 0x52654973
@@ -791,8 +792,9 @@ dirent_inode_sort_may_be_useful (FTSENT const *p)
switch (filesystem_type (p))
{
- case S_MAGIC_TMPFS:
+ case S_MAGIC_CIFS:
case S_MAGIC_NFS:
+ case S_MAGIC_TMPFS:
/* On a file system of any of these types, sorting
is unnecessary, and hence wasteful. */
return false;
@@ -826,6 +828,10 @@ leaf_optimization (FTSENT const *p)
/* Although AFS mount points are not counted in st_nlink, they
act like directories. See <https://bugs.debian.org/143111>. */
FALLTHROUGH;
+ case S_MAGIC_CIFS:
+ /* Leaf optimization causes 'find' to abort. See
+ <https://lists.gnu.org/r/bug-gnulib/2018-04/msg00015.html>. */
+ FALLTHROUGH;
case S_MAGIC_NFS:
/* NFS provides usable dirent.d_type but not necessarily for all entries
of large directories, so as per <https://bugzilla.redhat.com/1252549>
--
2.14.3
From ff64329a046e76ba553c15373ed61bbed814d286 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Wed, 11 Apr 2018 12:50:35 -0700
Subject: [PATCH 4/4] fts: fix bug in find across filesystems
This fixes a bug I introduced last summer.
Problem reported by Kamil Dudka in:
https://lists.gnu.org/r/bug-gnulib/2018-04/msg00033.html
* lib/fts.c (filesystem_type, dirent_inode_sort_may_be_useful)
(leaf_optimization):
New arg for file descriptor. All callers changed.
(fts_build): Check for whether inodes should be sorted
before closing the directory.
Upstream-commit: 81b8c0d3be98f5a77403599de3d06329b3e7673e
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
gl/lib/fts.c | 55 +++++++++++++++++++++++++++++++------------------------
1 file changed, 31 insertions(+), 24 deletions(-)
diff --git a/gl/lib/fts.c b/gl/lib/fts.c
index 508ceac..175f12a 100644
--- a/gl/lib/fts.c
+++ b/gl/lib/fts.c
@@ -725,11 +725,12 @@ dev_type_compare (void const *x, void const *y)
return ax->st_dev == ay->st_dev;
}
-/* Return the file system type of P, or 0 if not known.
+/* Return the file system type of P with file descriptor FD, or 0 if not known.
+ If FD is negative, P's file descriptor is unavailable.
Try to cache known values. */
static fsword
-filesystem_type (FTSENT const *p)
+filesystem_type (FTSENT const *p, int fd)
{
FTS *sp = p->fts_fts;
Hash_table *h = sp->fts_leaf_optimization_works_ht;
@@ -755,7 +756,7 @@ filesystem_type (FTSENT const *p)
}
/* Look-up failed. Query directly and cache the result. */
- if (fstatfs (p->fts_fts->fts_cwd_fd, &fs_buf) != 0)
+ if (fd < 0 || fstatfs (fd, &fs_buf) != 0)
return 0;
if (h)
@@ -777,12 +778,12 @@ filesystem_type (FTSENT const *p)
return fs_buf.f_type;
}
-/* Return false if it is easy to determine the file system type of the
- directory P, and sorting dirents on inode numbers is known not to
- improve traversal performance with that type of file system.
- Otherwise, return true. */
+/* Return true if sorting dirents on inode numbers is known to improve
+ traversal performance for the directory P with descriptor DIR_FD.
+ Return false otherwise. When in doubt, return true.
+ DIR_FD is negative if unavailable. */
static bool
-dirent_inode_sort_may_be_useful (FTSENT const *p)
+dirent_inode_sort_may_be_useful (FTSENT const *p, int dir_fd)
{
/* Skip the sort only if we can determine efficiently
that skipping it is the right thing to do.
@@ -790,7 +791,7 @@ dirent_inode_sort_may_be_useful (FTSENT const *p)
while the cost of *not* performing it can be O(N^2) with
a very large constant. */
- switch (filesystem_type (p))
+ switch (filesystem_type (p, dir_fd))
{
case S_MAGIC_CIFS:
case S_MAGIC_NFS:
@@ -804,16 +805,17 @@ dirent_inode_sort_may_be_useful (FTSENT const *p)
}
}
-/* Given an FTS entry P for a directory D,
+/* Given an FTS entry P for a directory with descriptor DIR_FD,
return true if it is both useful and valid to apply leaf optimization.
The optimization is useful only for file systems that lack usable
dirent.d_type info. The optimization is valid if an st_nlink value
of at least MIN_DIR_NLINK is an upper bound on the number of
- subdirectories of D, counting "." and ".." as subdirectories. */
+ subdirectories of D, counting "." and ".." as subdirectories.
+ DIR_FD is negative if unavailable. */
static enum leaf_optimization
-leaf_optimization (FTSENT const *p)
+leaf_optimization (FTSENT const *p, int dir_fd)
{
- switch (filesystem_type (p))
+ switch (filesystem_type (p, dir_fd))
{
/* List here the file system types that may lack usable dirent.d_type
info, yet for which the optimization does apply. */
@@ -850,12 +852,13 @@ leaf_optimization (FTSENT const *p)
#else
static bool
-dirent_inode_sort_may_be_useful (FTSENT const *p _GL_UNUSED)
+dirent_inode_sort_may_be_useful (FTSENT const *p _GL_UNUSED,
+ int dir_fd _GL_UNUSED)
{
return true;
}
static enum leaf_optimization
-leaf_optimization (FTSENT const *p _GL_UNUSED)
+leaf_optimization (FTSENT const *p _GL_UNUSED, int dir_fd _GL_UNUSED)
{
return NO_LEAF_OPTIMIZATION;
}
@@ -1049,7 +1052,7 @@ check_for_dir:
if (parent->fts_n_dirs_remaining == 0
&& ISSET(FTS_NOSTAT)
&& ISSET(FTS_PHYSICAL)
- && (leaf_optimization (parent)
+ && (leaf_optimization (parent, sp->fts_cwd_fd)
== NOSTAT_LEAF_OPTIMIZATION))
{
/* nothing more needed */
@@ -1334,6 +1337,7 @@ fts_build (register FTS *sp, int type)
int dir_fd;
FTSENT *cur = sp->fts_cur;
bool continue_readdir = !!cur->fts_dirp;
+ bool sort_by_inode = false;
size_t max_entries;
/* When cur->fts_dirp is non-NULL, that means we should
@@ -1427,7 +1431,7 @@ fts_build (register FTS *sp, int type)
&& ! (ISSET (FTS_NOSTAT) && ISSET (FTS_PHYSICAL)
&& ! ISSET (FTS_SEEDOT)
&& cur->fts_statp->st_nlink == MIN_DIR_NLINK
- && (leaf_optimization (cur)
+ && (leaf_optimization (cur, dir_fd)
!= NO_LEAF_OPTIMIZATION)));
if (descend || type == BREAD)
{
@@ -1588,6 +1592,15 @@ mem1: saved_errno = errno;
tail->fts_link = p;
tail = p;
}
+
+ /* If there are many entries, no sorting function has been
+ specified, and this file system is of a type that may be
+ slow with a large number of entries, arrange to sort the
+ directory entries on increasing inode numbers. */
+ if (nitems == _FTS_INODE_SORT_DIR_ENTRIES_THRESHOLD
+ && !sp->fts_compar)
+ sort_by_inode = dirent_inode_sort_may_be_useful (cur, dir_fd);
+
++nitems;
if (max_entries <= nitems) {
/* When there are too many dir entries, leave
@@ -1645,13 +1658,7 @@ mem1: saved_errno = errno;
return (NULL);
}
- /* If there are many entries, no sorting function has been specified,
- and this file system is of a type that may be slow with a large
- number of entries, then sort the directory entries on increasing
- inode numbers. */
- if (nitems > _FTS_INODE_SORT_DIR_ENTRIES_THRESHOLD
- && !sp->fts_compar
- && dirent_inode_sort_may_be_useful (cur)) {
+ if (sort_by_inode) {
sp->fts_compar = fts_compare_ino;
head = fts_sort (sp, head, nitems);
sp->fts_compar = NULL;
--
2.14.3

View file

@ -1,142 +0,0 @@
From 80cdfba079627e15129a926a133825b961d41e36 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Mon, 5 Mar 2018 10:56:29 -0800
Subject: [PATCH] fflush: adjust to glibc 2.28 libio.h removal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Problem reported by Daniel P. Berrangé in:
https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html
* lib/fflush.c (clear_ungetc_buffer_preserving_position)
(disable_seek_optimization, rpl_fflush):
* lib/fpurge.c (fpurge):
* lib/freadahead.c (freadahead):
* lib/freading.c (freading):
* lib/fseeko.c (fseeko):
* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]:
Define if not already defined.
Upstream-commit: 4af4a4a71827c0bc5e0ec67af23edef4f15cee8e
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
gl/lib/fflush.c | 6 +++---
gl/lib/fpurge.c | 2 +-
gl/lib/freadahead.c | 2 +-
gl/lib/freading.c | 2 +-
gl/lib/fseeko.c | 4 ++--
gl/lib/stdio-impl.h | 6 ++++++
6 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/gl/lib/fflush.c b/gl/lib/fflush.c
index 5ae3e41..7a82470 100644
--- a/gl/lib/fflush.c
+++ b/gl/lib/fflush.c
@@ -33,7 +33,7 @@
#undef fflush
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
/* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */
static void
@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp)
#endif
-#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
# if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT
/* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream)
if (stream == NULL || ! freading (stream))
return fflush (stream);
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
clear_ungetc_buffer_preserving_position (stream);
diff --git a/gl/lib/fpurge.c b/gl/lib/fpurge.c
index f313b22..ecdf82d 100644
--- a/gl/lib/fpurge.c
+++ b/gl/lib/fpurge.c
@@ -62,7 +62,7 @@ fpurge (FILE *fp)
/* Most systems provide FILE as a struct and the necessary bitmask in
<stdio.h>, because they need it for implementing getc() and putc() as
fast macros. */
-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
fp->_IO_read_end = fp->_IO_read_ptr;
fp->_IO_write_ptr = fp->_IO_write_base;
/* Avoid memory leak when there is an active ungetc buffer. */
diff --git a/gl/lib/freadahead.c b/gl/lib/freadahead.c
index 094daab..3f8101e 100644
--- a/gl/lib/freadahead.c
+++ b/gl/lib/freadahead.c
@@ -25,7 +25,7 @@
size_t
freadahead (FILE *fp)
{
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
if (fp->_IO_write_ptr > fp->_IO_write_base)
return 0;
return (fp->_IO_read_end - fp->_IO_read_ptr)
diff --git a/gl/lib/freading.c b/gl/lib/freading.c
index 0512b19..8c48fe4 100644
--- a/gl/lib/freading.c
+++ b/gl/lib/freading.c
@@ -31,7 +31,7 @@ freading (FILE *fp)
/* Most systems provide FILE as a struct and the necessary bitmask in
<stdio.h>, because they need it for implementing getc() and putc() as
fast macros. */
-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
return ((fp->_flags & _IO_NO_WRITES) != 0
|| ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
&& fp->_IO_read_base != NULL));
diff --git a/gl/lib/fseeko.c b/gl/lib/fseeko.c
index 1c65d2a..9026408 100644
--- a/gl/lib/fseeko.c
+++ b/gl/lib/fseeko.c
@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence)
#endif
/* These tests are based on fpurge.c. */
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
if (fp->_IO_read_end == fp->_IO_read_ptr
&& fp->_IO_write_ptr == fp->_IO_write_base
&& fp->_IO_save_base == NULL)
@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence)
return -1;
}
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
fp->_flags &= ~_IO_EOF_SEEN;
fp->_offset = pos;
#elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
diff --git a/gl/lib/stdio-impl.h b/gl/lib/stdio-impl.h
index 502d891..ea38ee2 100644
--- a/gl/lib/stdio-impl.h
+++ b/gl/lib/stdio-impl.h
@@ -18,6 +18,12 @@
the same implementation of stdio extension API, except that some fields
have different naming conventions, or their access requires some casts. */
+/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this
+ problem by defining it ourselves. FIXME: Do not rely on glibc
+ internals. */
+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
+# define _IO_IN_BACKUP 0x100
+#endif
/* BSD stdio derived implementations. */
--
2.16.2

View file

@ -1,80 +0,0 @@
From 80628047a6cc83f82e0c410a82b8f7facd9d50f2 Mon Sep 17 00:00:00 2001
From: Eric Blake <eblake@redhat.com>
Date: Wed, 14 Sep 2016 19:21:42 -0500
Subject: [PATCH] mountlist: include sysmacros.h for glibc
On Fedora rawhide (glibc 2.25), './gnulib-tool --test mountlist'
reports:
../../gllib/mountlist.c: In function 'read_file_system_list':
../../gllib/mountlist.c:534:13: warning: '__makedev_from_sys_types' is deprecated:
In the GNU C Library, `makedev' is defined by <sys/sysmacros.h>.
For historical compatibility, it is currently defined by
<sys/types.h> as well, but we plan to remove this soon.
To use `makedev', include <sys/sysmacros.h> directly.
If you did not intend to use a system-defined macro `makedev',
you should #undef it after including <sys/types.h>.
[-Wdeprecated-declarations]
me->me_dev = makedev (devmaj, devmin);
^~
In file included from /usr/include/features.h:397:0,
from /usr/include/sys/types.h:25,
from ./sys/types.h:28,
from ../../gllib/mountlist.h:23,
from ../../gllib/mountlist.c:20:
/usr/include/sys/sysmacros.h:89:1: note: declared here
__SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_FST_IMPL_TEMPL)
^
Fix it by including the right headers. We also need a fix to
autoconf's AC_HEADER_MAJOR, but that's a separate patch.
* m4/mountlist.m4 (gl_PREREQ_MOUTLIST_EXTRA): Include
AC_HEADER_MAJOR.
* lib/mountlist.c (includes): Use correct headers.
Signed-off-by: Eric Blake <eblake@redhat.com>
Upstream-commit: 4da63c5881f60f71999a943612da9112232b9161
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
gl/lib/mountlist.c | 6 ++++++
gl/m4/mountlist.m4 | 3 ++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/gl/lib/mountlist.c b/gl/lib/mountlist.c
index c3d2852..0b6f92e 100644
--- a/gl/lib/mountlist.c
+++ b/gl/lib/mountlist.c
@@ -37,6 +37,12 @@
# include <sys/param.h>
#endif
+#if MAJOR_IN_MKDEV
+# include <sys/mkdev.h>
+#elif MAJOR_IN_SYSMACROS
+# include <sys/sysmacros.h>
+#endif
+
#if defined MOUNTED_GETFSSTAT /* OSF_1 and Darwin1.3.x */
# if HAVE_SYS_UCRED_H
# include <grp.h> /* needed on OSF V4.0 for definition of NGROUPS,
diff --git a/gl/m4/mountlist.m4 b/gl/m4/mountlist.m4
index ec58dc8..82b2dcb 100644
--- a/gl/m4/mountlist.m4
+++ b/gl/m4/mountlist.m4
@@ -1,4 +1,4 @@
-# serial 11
+# serial 12
dnl Copyright (C) 2002-2006, 2009-2015 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -15,5 +15,6 @@ AC_DEFUN([gl_PREREQ_MOUNTLIST_EXTRA],
[
dnl Note gl_LIST_MOUNTED_FILE_SYSTEMS checks for mntent.h, not sys/mntent.h.
AC_CHECK_HEADERS([sys/mntent.h])
+ AC_HEADER_MAJOR()dnl for use of makedev ()
gl_FSTYPENAME
])
--
2.16.2

View file

@ -1,195 +0,0 @@
From d844b7bbf3952998a906f21ba432aa62a3b9c7c6 Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <mail@bernhard-voelker.de>
Date: Tue, 14 Jun 2016 20:49:42 +0200
Subject: [PATCH] Fix bug #48180: find: avoid segfault for internal '-noop'
option
The pseudo-option '-noop' was never meant to be exposed to the user
interface. If specified by the user, find(1) segfaulted.
Bug introduced in commit FINDUTILS_4_3_0-1-12-g6b8a4db.
* find/parser.c (struct parser_table): Rename the parser_name element of
the ARG_NOOP entry from 'noop' to '--noop', thus indicating its pure
internal character.
(found_parser): Return NULL when the user has passed the '---noop' option;
the caller does the error handling.
* find/testsuite/sv-48180-refuse-noop.sh: Add test.
* find/testsuite/Makefile.am (test_shell_progs): Reference the test.
* NEWS (Bug fixes): Document the fix.
Reported by Tavian Barnes <tavianator@tavianator.com> in
https://savannah.gnu.org/bugs/?48180
Upstream-commit: 595060f28eb5f658fa8d98970959c617fab0f078
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
find/parser.c | 6 +-
find/testsuite/Makefile.am | 3 +-
find/testsuite/sv-48180-refuse-noop.sh | 117 +++++++++++++++++++++++++++++++++
3 files changed, 124 insertions(+), 2 deletions(-)
create mode 100644 find/testsuite/sv-48180-refuse-noop.sh
diff --git a/find/parser.c b/find/parser.c
index 2d45349..697b2a2 100644
--- a/find/parser.c
+++ b/find/parser.c
@@ -321,7 +321,8 @@ static struct parser_table const parse_table[] =
*/
{ARG_TEST, "false", parse_false, pred_false}, /* GNU */
{ARG_TEST, "true", parse_true, pred_true }, /* GNU */
- {ARG_NOOP, "noop", NULL, pred_true }, /* GNU, internal use only */
+ /* Internal pseudo-option, therefore 3 minus: ---noop. */
+ {ARG_NOOP, "--noop", NULL, pred_true }, /* GNU, internal use only */
/* Various other cases that don't fit neatly into our macro scheme. */
{ARG_TEST, "help", parse_help, NULL}, /* GNU */
@@ -596,6 +597,9 @@ found_parser (const char *original_arg, const struct parser_table *entry)
*/
if (entry->type != ARG_POSITIONAL_OPTION)
{
+ if (entry->type == ARG_NOOP)
+ return NULL; /* internal use only, trap -noop here. */
+
/* Something other than -follow/-daystart.
* If this is an option, check if it followed
* a non-option and if so, issue a warning.
diff --git a/find/testsuite/Makefile.am b/find/testsuite/Makefile.am
index ab5dbe8..1371c70 100644
--- a/find/testsuite/Makefile.am
+++ b/find/testsuite/Makefile.am
@@ -259,7 +259,8 @@ test_escape_c.sh \
test_inode.sh \
sv-34079.sh \
sv-34976-execdir-fd-leak.sh \
-sv-48030-exec-plus-bug.sh
+sv-48030-exec-plus-bug.sh \
+sv-48180-refuse-noop.sh
EXTRA_DIST = $(EXTRA_DIST_EXP) $(EXTRA_DIST_XO) $(EXTRA_DIST_GOLDEN) \
$(test_shell_progs) binary_locations.sh checklists.py
diff --git a/find/testsuite/sv-48180-refuse-noop.sh b/find/testsuite/sv-48180-refuse-noop.sh
new file mode 100755
index 0000000..974f0f0
--- /dev/null
+++ b/find/testsuite/sv-48180-refuse-noop.sh
@@ -0,0 +1,117 @@
+#! /bin/sh
+# Copyright (C) 2016 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# This test verifies that find refuses the internal -noop, ---noop option.
+# Between findutils-4.3.1 and 4.6, find dumped core ($? = 139).
+
+testname="$(basename $0)"
+
+. "${srcdir}"/binary_locations.sh
+
+die() {
+ echo "$@" >&2
+ exit 1
+}
+
+# This is used to simplify checking of the return value
+# which is useful when ensuring a command fails as desired.
+# I.e., just doing `command ... &&fail=1` will not catch
+# a segfault in command for example. With this helper you
+# instead check an explicit exit code like
+# returns_ 1 command ... || fail
+returns_ () {
+ # Disable tracing so it doesn't interfere with stderr of the wrapped command
+ { set +x; } 2>/dev/null
+
+ local exp_exit="$1"
+ shift
+ "$@"
+ test $? -eq $exp_exit && ret_=0 || ret_=1
+
+ set -x
+ { return $ret_; } 2>/dev/null
+}
+
+# Define the nicest compare available (borrowed from gnulib).
+if diff_out_=`exec 2>/dev/null; diff -u "$0" "$0" < /dev/null` \
+ && diff -u Makefile "$0" 2>/dev/null | grep '^[+]#!' >/dev/null; then
+ # diff accepts the -u option and does not (like AIX 7 'diff') produce an
+ # extra space on column 1 of every content line.
+ if test -z "$diff_out_"; then
+ compare () { diff -u "$@"; }
+ else
+ compare ()
+ {
+ if diff -u "$@" > diff.out; then
+ # No differences were found, but Solaris 'diff' produces output
+ # "No differences encountered". Hide this output.
+ rm -f diff.out
+ true
+ else
+ cat diff.out
+ rm -f diff.out
+ false
+ fi
+ }
+ fi
+elif diff_out_=`exec 2>/dev/null; diff -c "$0" "$0" < /dev/null`; then
+ if test -z "$diff_out_"; then
+ compare () { diff -c "$@"; }
+ else
+ compare ()
+ {
+ if diff -c "$@" > diff.out; then
+ # No differences were found, but AIX and HP-UX 'diff' produce output
+ # "No differences encountered" or "There are no differences between the
+ # files.". Hide this output.
+ rm -f diff.out
+ true
+ else
+ cat diff.out
+ rm -f diff.out
+ false
+ fi
+ }
+ fi
+elif cmp -s /dev/null /dev/null 2>/dev/null; then
+ compare () { cmp -s "$@"; }
+else
+ compare () { cmp "$@"; }
+fi
+
+set -x
+tmpdir="$(mktemp -d)" \
+ && cd "$tmpdir" \
+ || die "FAIL: failed to set up the test in ${tmpdir}"
+
+fail=0
+# Exercise both the previous name of the pseudo-option '-noop',
+# and the now renamed '---noop' option for both find executables.
+for exe in "${ftsfind}" "${oldfind}"; do
+ for opt in 'noop' '--noop'; do
+ out="${exe}${opt}.out"
+ err="${exe}${opt}.err"
+ returns_ 1 "$exe" "-${opt}" >"$out" 2> "$err" || fail=1
+ compare /dev/null "$out" || fail=1
+ grep "find: unknown predicate .-${opt}." "$err" \
+ || { cat "$err"; fail=1; }
+ done
+done
+
+cd ..
+rm -rf "$tmpdir" || exit 1
+exit $fail
--
2.5.5

View file

@ -1,83 +0,0 @@
From 1328926a705fdb4728c1f255dd368de928736d39 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Fri, 25 Sep 2015 16:09:39 +0200
Subject: [PATCH 1/2] fts: introduce the FTS_NOLEAF flag
The flag is needed to implement the -noleaf option of find.
* lib/fts.c (link_count_optimize_ok): Implement the FTS_NOLEAF flag.
* lib/fts_.h (FTS_NOLEAF): New macro, shifted conflicting constants.
---
gl/lib/fts.c | 4 ++++
gl/lib/fts_.h | 12 +++++++++---
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/gl/lib/fts.c b/gl/lib/fts.c
index d2d404f..808466f 100644
--- a/gl/lib/fts.c
+++ b/gl/lib/fts.c
@@ -736,6 +736,10 @@ filesystem_type (FTSENT const *p)
struct dev_type *ent;
struct statfs fs_buf;
+ if (ISSET(FTS_NOLEAF))
+ /* leaf optimization explicitly disabled by the FTS_NOLEAF flag */
+ return 0;
+
/* If we're not in CWDFD mode, don't bother with this optimization,
since the caller is not serious about performance. */
if (!ISSET (FTS_CWDFD))
diff --git a/gl/lib/fts_.h b/gl/lib/fts_.h
index 63d4b74..f1d519b 100644
--- a/gl/lib/fts_.h
+++ b/gl/lib/fts_.h
@@ -155,10 +155,16 @@ typedef struct {
from input path names during fts_open initialization. */
# define FTS_VERBATIM 0x1000
-# define FTS_OPTIONMASK 0x1fff /* valid user option mask */
+ /* Disable leaf optimization (which eliminates stat() calls during traversal,
+ based on the count of nested directories stored in stat.st_nlink of each
+ directory). Note that the optimization is by default enabled only for
+ selected file systems, and only if the FTS_CWDFD flag is set. */
+# define FTS_NOLEAF 0x2000
-# define FTS_NAMEONLY 0x2000 /* (private) child names only */
-# define FTS_STOP 0x4000 /* (private) unrecoverable error */
+# define FTS_OPTIONMASK 0x3fff /* valid user option mask */
+
+# define FTS_NAMEONLY 0x4000 /* (private) child names only */
+# define FTS_STOP 0x8000 /* (private) unrecoverable error */
int fts_options; /* fts_open options, global flags */
/* Map a directory's device number to a boolean. The boolean is
--
2.5.0
From c186934e6e37ddadf7511abb9b1045192757618e Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Fri, 25 Sep 2015 19:13:15 +0200
Subject: [PATCH 2/2] ftsfind: propagate the -noleaf option to FTS
* find/ftsfind.c (find): Propagate the -noleaf option to FTS.
---
find/ftsfind.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/find/ftsfind.c b/find/ftsfind.c
index 5159470..e34b672 100644
--- a/find/ftsfind.c
+++ b/find/ftsfind.c
@@ -559,6 +559,9 @@ find (char *arg)
if (options.stay_on_filesystem)
ftsoptions |= FTS_XDEV;
+ if (options.no_leaf_check)
+ ftsoptions |= FTS_NOLEAF;
+
p = fts_open (arglist, ftsoptions, NULL);
if (NULL == p)
{
--
2.5.0

View file

@ -1,44 +0,0 @@
From a8ff1e964b2b8cd0b60362c76bd92795cee6b3c3 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Sun, 17 Apr 2016 22:36:13 +0200
Subject: [PATCH] doc: clarify exit status handling of -exec command {} +
* find/find.1 (-exec): Explain how exit status is propagated if the
-exec command {} + syntax is used.
(-execdir): Likewise.
Reported at https://bugzilla.redhat.com/1325049
Upstream-commit: ae424b959c5e9bd23f9f686cb34653bc4cd1270e
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
find/find.1 | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/find/find.1 b/find/find.1
index a36a0bc..c4aaf17 100644
--- a/find/find.1
+++ b/find/find.1
@@ -1069,6 +1069,9 @@ command line is built in much the same way that
.B xargs
builds its command lines. Only one instance of `{}' is allowed within
the command. The command is executed in the starting directory. If
+any invocation returns a non-zero value as exit status, then
+.B find
+returns a non-zero exit status. If
.B find
encounters an error, this can sometimes cause an
immediate exit, so some pending commands may not be run
@@ -1104,6 +1107,9 @@ appropriately-named file in a directory in which you will run
The same applies to having entries in
.B $PATH
which are empty or which are not absolute directory names. If
+any invocation returns a non-zero value as exit status, then
+.B find
+returns a non-zero exit status. If
.B find
encounters an error, this can sometimes cause an
immediate exit, so some pending commands may not be run
--
2.5.5

View file

@ -1,35 +0,0 @@
From 06a46ba755195810f2aeda01b12d1ccfe7c2dcfd Mon Sep 17 00:00:00 2001
From: Daiki Ueno <ueno@gnu.org>
Date: Mon, 28 Dec 2015 06:27:42 +0900
Subject: [PATCH] maint: fix operator precedence in mbrtowc test
This is a fix for test breakage introduced by commit 45228d96; the
equality expression must be parenthesized when negated with '!',
otherwise we always get:
test-mbrtowc.c:49: assertion 'ret == (size_t)(-2)' failed
* m4/mbrtowc.m4 (gl_MBRTOWC_EMPTY_INPUT): Negate the entire expression.
Upstream-commit: 1f63650823cebf52044df840c81062ccb52163a2
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
gl/m4/mbrtowc.m4 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gl/m4/mbrtowc.m4 b/gl/m4/mbrtowc.m4
index deb9f06..be2e9d6 100644
--- a/gl/m4/mbrtowc.m4
+++ b/gl/m4/mbrtowc.m4
@@ -569,7 +569,7 @@ changequote([,])dnl
int
main (void)
{
- return ! mbrtowc (&wc, "", 0, &mbs) == (size_t) -2;
+ return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2;
}]])],
[gl_cv_func_mbrtowc_empty_input=yes],
[gl_cv_func_mbrtowc_empty_input=no],
--
2.5.0

View file

@ -1,29 +0,0 @@
From 129f23ce758620fade812baab811379ce8454048 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Fri, 27 Jan 2017 11:44:41 +0100
Subject: [PATCH] test-lock: disable the rwlock test
It hangs indefinitely if the system rwlock implementation does not
prevent writer starvation (and glibc does not implement it).
Bug: http://www.mail-archive.com/bug-gnulib@gnu.org/msg33017.html
---
tests/test-lock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/test-lock.c b/tests/test-lock.c
index a992f64..fd9c014 100644
--- a/tests/test-lock.c
+++ b/tests/test-lock.c
@@ -42,7 +42,7 @@
Uncomment some of these, to verify that all tests crash if no locking
is enabled. */
#define DO_TEST_LOCK 1
-#define DO_TEST_RWLOCK 1
+#define DO_TEST_RWLOCK 0
#define DO_TEST_RECURSIVE_LOCK 1
#define DO_TEST_ONCE 1
--
2.7.4

View file

@ -78,20 +78,27 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
# Configure, build, and install:
export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS"
mkdir meson-build
cd meson-build
meson setup \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--libdir=lib${LIBDIRSUFFIX} \
--libexecdir=/usr/libexec \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--includedir=/usr/include \
--datadir=/usr/share \
--mandir=/usr/man \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PKGNAM-$VERSION \
--disable-static \
--build=$ARCH-slackware-linux || exit 1
make $NUMJOBS || make || exit 1
make install-strip DESTDIR=$PKG || exit 1
--buildtype=release \
.. || exit 1
"${NINJA:=ninja}" $NUMJOBS || exit 1
DESTDIR=$PKG $NINJA install || exit 1
cd ..
# Don't ship .la files:
rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la